session一致性设计

大鹏
Lepaskan: 2021-06-26 15:54:56
asal
123 orang telah melayarinya

session一致性

什么是session

web-server可以自动为同一个浏览器的访问用户自动创建session,提供存储功能。一般把用户登录信息存到session中。

什么是session一致性问题

当后端只有一台web-server的时候,每次http请求,都能找到正确的session。问题是不能满足高可用,一台server挂了就完蛋了。冗余+故障转移,部署多台web-server,nginx路由到不同的web-server。每次http请求都路由,不保证路由到同一个server,就有了一致性问题。

解决session一致性的常用方案

一致性hash

最先想到的方案,根据客户端IP做hash,保证同一个IP落在一个web-server上。还可用根据业务字段做hash,例如userId、cityId,使用更灵活。但这样破坏了单一原则,让网关和业务粘连,如非必要不推荐使用。优点:节省缓存,可用水平扩展。缺点:部分服务重启,会丢失session,导致部分用户重新登录。如果hash水平扩展,rehash后session重新分布,会有一部分用户路由不到session

session同步

多web-server之间的session互相同步,这样每个web-server都包含全部的session信息。缺点:因为包含全部session,集群数量受内存限制,扩展受限。

客户端存储

登录信息保存到客户端,每次请求带着用户信息。服务端完全无状态化,方便扩展。优点:服务端不用存储。缺点:每次http请求携带用户信息,浪费流量;存在信息泄露风险;cookie存储信息不能太多。

后端集中存储

web-server链接一个统一的存储,保存session信息,推荐存到redis集群,方便后续扩展。优点:没有信息泄露风险;水平扩展不会丢数据;缺点:增加了一次网络请求,需要修改业务代码,查询redis。

Atas ialah kandungan terperinci session一致性设计. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
1
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!