《架构师之路:架构设计中的100个知识点》 17.会话保持相关技术点
《为什么大家都不用session sticky了?》中提到了会话保持技术,1分钟说下会话保持的几个相关知识点。
什么是会话保持?
会话保持,是通过负载均衡器将来自同一个用户的请求始终分发到同一台web-server上。这样,session信息仅需要存储在该服务器上,而无需共享。
什么样场景适合使用会话保持?
1. 游戏;
2. 无需后端存储,数据一致性要求不高的场景,例如:购物车;
3. 用户量不大,并发量不大,不想把架构搞得太复杂的业务场景;
会话保持可以简化架构设计。
画外音:为了提升扩展性,如今互联网分布式系统架构,非特殊情况,一般不使用会话保持。
那如果使用Nginx实施负载均衡,怎么实现会话保持呢?
Nginx可以通过四层或七层的用户属性hash来实现会话保持。
更具体来说:
(1)四层可以用IP与端口来标识用户,实施hash路由;
(2)七层可以用HTTP协议里的uid,cookie,sid来标识用户,实施hash路由;
四层和七层指的是什么?
这个是来源于网络分层模型。
大学“计算机网络”课程,以前是用这个OSI七层模型,新版教程用TCP/IP五层模型,这两个模型之间有一个对应关系如下:
可以看到,四层是指传输层,七层是指应用层。OSI应用层、表示层、会话层合并到TCP/IP的应用层。
有没有二层,三层交换呢?
有。二层,根据数据链路层MAC地址完成数据交换;三层,根据网络层IP地址完成数据交换。
知其然,知其所以然。
思路比结论更重要。
补充阅读材料:
《Nginx负载均衡配置细节》
https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/
文章来自Nginx官网,有图有代码,实操性强,5分钟搞定。