前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >为什么大家都不用session sticky了? | 架构师之路(14)

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

作者头像
架构师之路
发布2024-12-24 13:10:16
发布2024-12-24 13:10:16
910
举报
文章被收录于专栏:架构师之路

《架构师之路:架构设计中的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分钟搞定。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 架构师之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档