内容简介:公共的业务被拆分出来,形成可共用的服务,最大程度地保障代码和逻辑的复用,避免重复建设,这种设计称为SOA。SOA架构中,服务消费者通过服务名称,在众多服务中心找到要调用的服务的地址列表,称为服务的路由。
基本概念
SOA
公共的业务被拆分出来,形成可共用的服务,最大程度地保障代码和逻辑的复用,避免重复建设,这种设计称为SOA。
路由
SOA架构中,服务消费者通过服务名称,在众多服务中心找到要调用的服务的地址列表,称为服务的路由。
负载均衡
对于负载高的服务,一般有多台服务器组成的集群,当请求到来时,为了将请求均衡的分配到后端服务器,负载均衡程序将从服务对应的地址列表中,通过相应的负载均衡算法和法则,选取一台服务器进行访问,这个过程称为服务的负载均衡。
服务配置中心
当服务越来越多,规模变大,单靠人工管理或简单维护配置已经不能满足,并且单一软硬件负载调度的单点故障问题凸显,因此需要一个能动态注册和获取服务信息的地方,来统一管理服务名称和其对应的服务器列表信息,这个就是服务配置中心。
-->工作原理
服务提供者启动时,将提供的服务名称、服务器地址注册到服务配置中心
服务消费者通过服务配置中心来获取需要调度的服务机器列表
通过负载均衡算法之后,选取一台服务器调用
当服务器宕机或下线,相应的机器动态从服务配置中心移除,并通知相应的服务消费者
服务消费者一次访问服务配置中心之后,会将查询到的信息缓存到本地,后面调用先查缓存,从而降低服务配置中心压力
ZooKeeper
2负载均衡算法
用处
服务消费者从服务配置中心获取到服务的地址列表后,需要选取其中一台发起RPC调用,这时需要用到具体的负载均衡算法。
常见种类
轮询法、随机法、源地址哈希法、加权轮询法、加权随机法、最小连接法等
轮询法
将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端每一台服务器,而不关心服务器实际的连接数和当前的系统负载
伪代码
- 创建静态变量static int pos=0;
- 创建一个HashMap把服务器地址和权重映射起来。(为与后面加权轮询法对比)
- 新建一个keyList把Map中的服务器地址取出
- synchronized( pos ){
- 若超出keyList长度,pos重置零;
- 否则取出keyList.get( pos ); pos ++;
- 返回取出的server
加权轮询法
每台服务器配置不同,因此应给配置高、负载低的机器配置更高的权重处理更多的请求。加权轮询算法将请求顺序且按照权重分配到后端
伪代码
- 创建静态变量static int pos=0;
- 创建一个HashMap把服务器地址和权重映射起来。
- 新建一个keyList按照循环权重大小次数把Map中的服务器地址添加到list中,如权重为4,则keyList中添加4次该服务器地址。
- synchronized( pos ){
- 若超出keyList长度,pos重置零;
- 否则取出keyList.get( pos ); pos ++;
- 返回取出的server
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 感恩节黑客也搞起了黑五大促,但甩卖的是你的信用卡
- 服务端指南 服务端概述 | 微服务架构概述
- 微服务化之服务拆分与服务发现
- 微服务化之服务拆分与服务发现
- 小白入门微服务(4) - 服务注册与服务发现
- 服务端指南 服务端概述 | SOA 对比微服务架构
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Dive Into Python 3
Mark Pilgrim / Apress / 2009-11-6 / USD 44.99
Mark Pilgrim's Dive Into Python 3 is a hands-on guide to Python 3 (the latest version of the Python language) and its differences from Python 2. As in the original book, Dive Into Python, each chapter......一起来看看 《Dive Into Python 3》 这本书的介绍吧!