现在的位置: 首页 > 综合 > 正文

淘宝的应用无状态(淘宝session框架)

2013年03月17日 ⁄ 综合 ⁄ 共 923字 ⁄ 字号 评论关闭

  俗话说,一个系 统的伸缩性的好坏取决于应用的状态如何管理。为什么这么说呢?咱们试想一下,假如我们在session中保存了大量与客户端的状态信 息的话,那么当保存状态信息的server宕机的时候,我们怎么办?通常来说,我们都是通过集群来解决这个问题,而通常 所说的集群,不仅有负载均衡,更重要的是要有失效恢复failover,比如tomcat采 用的集群节点广播复制,jboss采 用的配对复制等session状 态复制策略,但是集群中的状态恢复也有其缺点,那就是严重影响了系统的伸缩性,系统不能通过增加更多的机器来达到良好的水平伸缩,因为集群节点间session的
通信会随着节点的增多而开销增大,因此要想做到应用本身的伸缩性,我们需要保证应用的无状态性,这样集群中的各个节点来说都是相同的,从而是的系统更好的 水平伸缩。

        OK, 上面说了无状态的重要性,那么具体如何实现无状态呢?此时一个session框架就会发挥作用了。幸运的是淘 宝已经具有了此类框架。淘宝的session框架采用的是client cookie实现,主要将状态 保存到了cookie里 面,这样就使得应用节点本身不需要保存任何状态信息,这样在系统用户变多的时候,就可以通过增加更多的应用节点来达到水平扩展的目的.但 是采用客户端cookie的 方式来保存状态也会遇到限制,比如每个cookie一般不能超过4K的大小,同时很多浏览器都限制一个站点最
多保存20个cookie.淘 宝cookie框 架采用的是“多值cookie”, 就是一个组合键对应多个cookie的 值,这样不仅可以防止cookie数 量超过20, 同时还节省了cookie存 储有效信息的空间,因为默认每个cookie都会有大约50个字节的元信息来描述cookie。

        除 了淘宝目前的session框 架的实现方式以外,其实集中式session管理来完成,说具体点就是多个无状态的应用节点连接一个session 服 务器,session服 务器将session保 存到缓存中,session服 务器后端再配有底层持久性数据源,比如数据库,文件系统等等。

http://techbbs.zol.com.cn/1/3_1080.html

【上篇】
【下篇】

抱歉!评论已关闭.