注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小葫芦君(汉斯的博客)

博客迁移到新博客:https://blog.ssxingshou.com

 
 
 

日志

 
 
关于我

小小葫芦商城,为您提供高品质的商品,一流的产品,一流的包装服务,一流的物流服务,放心购买

网易考拉推荐

解决用户信息的存储问题的思考  

2011-12-14 17:25:47|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
解决大型互联网应用用户信息的存储问题,可以通过以下思路进行:
应用无状态
      俗话说,一个应用的伸缩性的好坏取决于该应用的状态如何管理。
      为什么这么说呢?试想一下,假如我们在session中保存了大量与客户端的状态信息的话,那么当保存状态信息的server宕机的时候,我们怎么办?通常来说,我们都是通过集群来解决这个问题,而通常所说的集群,不仅有负载均衡,更重要的是要有失效恢复failover,比如tomcat采用的集群节点广播复制,jboss采用的配对复制等session状态复制策略,但是集群中的状态恢复也有其缺点,那就是严重影响了系统的伸缩性,系统不能通过增加更多的机器来达到良好的水平伸缩,因为集群节点间session的通信会随着节点的增多而开销增大,因此要想做到应用本身的伸缩性,我们需要保证应用的无状态性,这样集群中的各个节点来说都是相同的,从而是的系统更好的水平伸缩。
      既然大家知道了无状态的重要性,那么具体应该如何去实现无状态呢?
      1、我们可以参考淘宝的session框架,淘宝的session框架采用的是client cookies来实现,主要是将状态保存到了cookies里面,这样就使得应用节点本身不需要保存任何状态信息,这样在系统用户变多的时候,就可以通过增加更多的应用节点来达到水平扩展的目的。但是采用客户端cookies的方式来保存状态也会遇到限制和安全问题,比如每个cookies一般不能超过4K的大小,同时很多浏览器都限制一个站点(一个域名)最多保存20个cookies。淘宝的client cookies框架采用的是“多值cookies”,也就是一个组合键对应多个cookies的值,这样不仅可以防止cookies的数量超过20个,同时还节省了cookies存储有效信息的空间,因为默认每个cookies都会有大约50个字节的元信息来描述cookies。
        2、除了淘宝目前的session框架的实现方式以外,也可以采用集中式的session管理来完成,说具体点就是多个无状态的应用节点连接一个session服务器,session服务器将session保存到缓存中,session服务器后端再配有底层持久性数据源,比如数据库,文件系统等等。
  评论这张
 
阅读(523)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017