弄懂服务路由与负载均衡,微服务搞起

商务办公
对于负载高的服务,一般有多台服务器组成的集群,当请求到来时,为了将请求均衡的分配到后端服务器,负载均衡程序将从服务对应的地址列表中,通过相应的负载均衡算法和法则,选取一台服务器进行访问,这个过程称为服务的负载均衡。

[[257733]]

基本概念

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
责任编辑:武晓燕 来源: java思维导图
相关推荐

2023-10-30 00:11:48

微服务负载均衡场景

2014-10-29 09:45:51

路由器服务主机

2024-08-29 08:41:50

2024-11-29 13:37:56

2018-11-27 12:56:09

负载均衡应用路由

2010-04-21 14:54:45

负载均衡服务

2015-11-03 11:15:54

负载均衡微服务web

2018-01-17 09:57:41

2010-09-15 14:50:57

集群负载均衡Tomcat

2024-07-02 10:58:53

2023-10-13 18:57:22

2010-05-05 18:44:27

服务器负载均衡

2010-05-05 18:28:16

负载均衡服务器

2024-11-11 09:51:46

Nginx部署负载

2020-04-15 22:18:55

架构负载均衡分布式

2009-11-09 12:45:44

路由负载均衡

2022-12-20 08:01:20

全栈云负载均衡传统硬件

2017-02-21 13:16:49

微服务RPC技术

2023-11-01 08:00:00

负载均衡架构开发

2024-05-16 07:51:55

分布式系统架构
点赞
收藏

51CTO技术栈公众号