首页 > 代码库 > 淘宝的高性能可伸缩架构---session处理

淘宝的高性能可伸缩架构---session处理

  

应用无状态

 

 

原来

假如在session 保存大量的客户端状态信息,

保存session的服务器宕机, 通过集群解决,

集群不仅有负载均衡, 更重要的是要恢复 failover

 

问题

tomcat 用集群节点广播复制, jboss用配对复制 等session状态复制策略有局限

会严重影响系统的伸缩性


因为集群节点间 session通信随着节点的增多而开销增大

 

 

解决1


因此要做到应用本身的伸缩性, 就要保证应用无状态

 

实现1


淘宝的session框架用clientcookie实现

将状态转移到cookie里面,


cookie有限制, 每个不大于4k, 一个站点最多保存20个cookie


淘宝的cookie框架是 ‘多值cookie‘, 一个组合键对应多个cookie值,
可以防止数量超过20个, 充分利用每个cookie的储存空间

 

解决2

 

利用集中session 管理 + 数据库

 

实现2

 

多个无状态的 server 连接到一个集中session服务器,

session服务器将session保存到缓存中, session服务器后端再配合

底层持久性数据源, 比如数据库, 文件系统等等

淘宝的高性能可伸缩架构---session处理