为什么大家都不用session sticky了? | 架构师之路(14)
科技
2024-11-27 08:10
北京
《DNS在架构设计中的三大妙用》发布后,有个朋友反馈:虽然DNS轮询能随时扩展Nginx,NG后端也能随时扩展web-server,但这两种方案都不满足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的使用越来越少。2. 无需后端存储,数据一致性要求不高的场景,例如:购物车;
3. 用户量不大,并发量不大,不想把架构搞得太复杂的业务场景;https://www.geeksforgeeks.org/what-are-sticky-sessions-in-load-balancing/==全文完==
以实践为主线,结合讲解架构知识点,几十个小时视频内容,已完结。以架构知识点为主线,结合讲实践。讲解形式:短视频+图文+直播+星球社群,免费,欢迎感兴趣的童鞋关注。