从银行柜台小姐姐聊负载均衡中的会话粘滞

简介: 从银行柜台小姐姐聊负载均衡中的会话粘滞

从银行柜台小姐姐聊负载均衡中的会话粘滞

上回我们讲到了开盲盒,这次我们来处理一下昨天的遗留问题,关于最后提到的服务器优化,不知道你是否想到一些东西呢?如果没想到也没关系,我们先来聊聊银行业务员小姐姐那些事~

负载均衡 - 会话粘滞

同一个客户端的所有请求都路由到同一个服务器上,也就是会话粘滞(session sticky)的负载均衡算法。这玩意就像你去银行办理业务,银行柜台有一堆业务员小姐姐,她们都像是一个个的服务器,你来银行办理业务,表达自己的需求,你就是那个发送请求的客服端,有时候还不止办理一种业务,这时候就存在多个请求。刚开始那会银行业务不多,给每个小姐姐分配了一批客户,这时候你来银行办业务,只要去找那个给你分配好的小姐姐就可以了,是不是感觉还挺方便的。这就是保持映射关系。

放在系统中,最简单的方法就是在数据库创建一张映射表,维护会话ID和服务器的映射关系,客户端发出的每次请求,都要在映射表中查找需要路由的服务器编号,然后通过把请求发给对应编号的服务器上面,方法实现比较简单。

但是有两个问题:

  1. 维护映射表需要额外的空间,随着会话ID的越来越多,占用的空间也会越来越多;
  2. 服务器的下线和上线都会对映射表产生影响,这时候需要重新维护映射表的,维护成本比较大。你想啊,有一天,有个小姐姐突然回家结婚去了,这就会有一堆客户就失去了业务员,这时候为了提高客户的满意度,就要立马修复这个问题,免不了要重新调整一下客户和业务员的关系。


这时候是不是有什么更优雅的办法解决问题呢?

有一天银行,发现这样搞下去不行啊,于是引进了一台可以取号的机器,每个用户在处理业务之前,先去取个号,这个编号就是对应柜台业务员的编号,来了银行先取号,在你所有的业务处理完之前这个号码都是有效的。

这时候如果有业务员小姐姐暂停服务,处理起来就很简单了,让客户取不到这个号码就可以了,不再需要重新维护客户的业务员之间的关系。

系统中可以通过哈希算法,对客户端地址或者会话ID 计算哈希值,将取得的哈希值和服务器列表的数量进行取模运算,最终得到的值(也就是取号机发放的号码就是应该被路由到的服务器编号。这样也可以保证同一个客户端过来的所有请求路由到同一个后端服务器上。

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
负载均衡
负载均衡-会话保持cookie内容说明
负载均衡http监听采用植入cookie时,默认会加入一个cookie,他的具体含义是什么呢? SERVERID=abd77a4088910c05c7d6517601bb198d|1570633089|1570632657;Path=/" 其中SERVERID这个cookie是负载均衡内部使用,建...
1582 0
|
负载均衡 网络协议 API
|
22天前
|
负载均衡 算法 应用服务中间件
面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
字节跳动面试题:Nginx有哪些负载均衡算法?Nginx位于七层网络结构中的哪一层?
35 0
|
4月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【Nginx和tomcat实现负载均衡教程】
至此,你已经成功地使用Nginx和Tomcat实现了负载均衡。Nginx将根据配置的负载均衡策略将客户端请求分发到多个Tomcat服务器上,以提高系统的性能和可用性。请注意,在实际生产环境中,还需要进行其他配置和优化,如健康检查、会话保持等,以满足具体的需求。
35 0
|
12天前
|
负载均衡 应用服务中间件 nginx
Nginx 负载均衡
Nginx 负载均衡
23 2