课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
负载均衡是软件运维管理程序员需要重点关注的一个问题,下面我们就通过案例分析来了解一下,软件开发负载均衡算法分享。
一、负载均衡算法:
路由选择(数据包发送到目标服务器)--->请求被分发到不同服务器---->实现负载均衡--->提升整个集群的处理能力
问题:怎么选择服务器?选择算法有哪些?
1.轮询:所有请求被依次分发到每个应用服务器上,适合于所有服务器硬件都相同的场景。
2.加权轮询:根据应用服务器硬件性能的情况,在轮询的基础上,按照配置的权重分发请求到每个服务器,高性能服务器分配更多请求。
3.随机:请求随机被分配到各个应用服务器,在许多场合下,这种方案都简单实用,因为好的随机数本身就均衡。如果应用服务器硬件配置不同,可以使用加权随机算法。
4.少连接:记录每个应用服务器正在处理的连接数(请求数),将新到的请求分发到少连接的服务器上----这是符合负载均衡定义的算法。
5.源地址散列:根据请求来源的IP地址进行Hash计算,得到应用服务器,该算法可以保证同一来源的请求总在同一台服务器上处理,实现会话粘滞。
二、会话管理:
负载均衡情况下,如何会话管理?同一会话的不同请求,如果被分发到不同的服务器,造成会话状态不一致---用户体验比较差。
比如:
1.同一应用会话,向购物车添加删除商品两次请求,如果被分发到不同服务器,造成购物车数据不一致。
2.检测用户登录状态:用户登录后,session在A应用服务器上,用户再次请求时,请求被分发到B服务器,
B没有用户的session,被认为没有登陆,重新要求用户登录----用户体验比较差。
三、session复制
解析:通过session复制,每台服务器都保存相同的session。用户请求不管被分发到那台服务器上,都可以获取相同会话。
优点:实现方式简单---只需要在当前服务器上管理session即可。
被修改的session,会被复制到其他服务器上---所有的服务器都保存相同的session。
缺点:
1.集群规模比较大时(10000),修改一次session,需要同步到所有服务器---通信数据量内容比较大
2.每个session都存储----存储数据量比较大
集群目的:压力均摊---降低每台服务器压力。但是session复制策略,增加了每台服务器的负载压力,消耗资源(内存+带宽),与集群目的相违背。
生产环境:很少使用。
四、session绑定
解析:源地址散列算法。用户端IP地址,经过负载均衡服务器的源地址散列算法后,被分发到同一台服务器---用户会话在同一台服务器。
生产环境:很少使用,几乎不被使用-------原因:互联网应用关注点:高性能+高可用。
当服务器宕机后,服务上的session数据丢失(宕机概率较高:故障,迭代发布需要kill进程)
---->请求就会分发到其他应用服务器,其他服务器没有当前用户的session上下文
---->用户的应用请求操作都不见了(购物车中商品消失)
---->用户体验很差
五、利用cookie记录session:
解析:服务器将会话数据写入cookie,发送到用户终端。用户终端发送请求时,将cookie随请求一起回发给应用服务器,
集群中任意一台应用服务器,可以从cookie中提取会话数据进行处理。
---->实现会话管理(不依赖应用服务器,每台服务器都可以提取cookie中的会话数据,拿到完整的会话内容)
优点:简单高效。
缺点:1.cookie大小有限----不能记录太多的上下文内容----只能记录必要的数据。
2.cookie有可能被禁止使用----不能传递cookie----无法管理会话。
生产环境:应用实践中比较实用,但并不是常用方法。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。