专栏名称: 架构师之路
架构师之路,坚持撰写接地气的架构文章
目录
相关文章推荐
架构师之路  ·  为什么大家都不用session ... ·  昨天  
架构师之路  ·  github标星28K,这个中文项目不知道就 ... ·  2 天前  
高可用架构  ·  Java方法设计原则与实践:从Effecti ... ·  1 周前  
架构师之路  ·  架构设计中的后台任务:3种场景,2.5种触发 ... ·  6 天前  
51好读  ›  专栏  ›  架构师之路

为什么大家都不用session sticky了? | 架构师之路(14)

架构师之路  · 公众号  · 架构  · 2024-11-27 08:10

正文

《架构师之路:架构设计中的100个知识点》
14.session sticky相关技术

DNS在架构设计中的三大妙用》发布后,有个朋友反馈:虽然DNS轮询能随时扩展Nginx,NG后端也能随时扩展web-server,但这两种方案都不满足session sticky

这位朋友说的很对,但我了解的大部分互联网公司,已经不再使用session sticky技术了我不敢说它是过时的技术,但确实很多朋友已经不知道它了,今天和大家说下session sticky。

什么是session sticky?
这是一种会话保持策略,它通过负载均衡器将来自同一个用户的请求始终分发到同一台web-server上。这样,session信息仅需要存储在该服务器上,而无需共享。
如上图所示,如果没有使用session sticky,用户的请求可能被负载均衡器路由到任意一个后端节点。

但如果使用了session sticky,则一个用户的请求,会被负载均衡器路由到相同的后端节点:橙色用户路由路径,绿色用户路由路径,都是一致的。

具体的实现方式:在负载均衡器上实施一个IP?uid?xx-id?的路由策略即可,并不复杂。

听上去是一个很好的技术,可为什么如今它不流行了?
次要因素:后端节点在升级时需要经常重启,session会丢失,所有用户要重新登录。
画外音:用户量不大时,可以使用session复制技术,用户量大时内存会成为瓶颈,且复制会降低系统性能。

主要因素:目前流行的架构体系,设计的过程中非常看重扩展性通常情况下,反向代理,web-server,service都要尽量做到无状态。任何请求落到任何节点均可处理,随时可以增减节点。

用户状态尽量存储在数据层,cache或者是db里,由所有无状态的上游web-server和service共享。

该设计原则与session sticky要求的,一个用户的请求必须落到一个web-server完全是相违背的。因此,session sticky的使用越来越少。

什么场景适合使用session sticky?
1. 游戏
2. 无需后端存储,数据一致性要求不高的场景,例如:购物车;
3. 用户量不大,并发量不大,不想把架构搞得太复杂的业务场景;

你们公司选型了session sticky吗?

知其然,知其所以然。
思路比结论更重要。

补充阅读材料:
《负载均衡里的session sticky技术》
https://www.geeksforgeeks.org/what-are-sticky-sessions-in-load-balancing/

1. session sticky是什么;
2. session sticky的工作原理;
3. session sticky技术细节;
4. session sticky的优缺点;
5. session sticky的典型案例;
6. session sticky的替代方案;

文章不长,5分钟搞定。

==全文完==


20年,系列1:
流量从10万到10亿,遇见的80个架构问题(8000字长文)》
以实践为主线,结合讲解架构知识点几十个小时视频内容,已完结

今年,系列3:
《架构设计中的100个知识点》
架构知识点为主线,结合讲实践。讲解形式:短视频+图文+直播+星球社群,免费欢迎感兴趣的童鞋关注。
短视频:何时优化延时?何时优化吞吐量?

置顶标星日更好文不错过。
若有收获,点赞,转发,在看三连。感谢!