SNA -- Shared Nothing Architecture研究

      现在我们的项目用户session都存放在每个web server中ThreadLocal还保存,如果是多个服务器部署的web app的话,需要每台服务器同步共享Session。

<?xml version="1.0"?>  
<jboss-web>  
<replication-config>  
<replication-trigger>SET_AND_NON_PRIMITIVE_GET</replication-trigger>  
<replication-granularity>SESSION</replication-granularity>  
<replication-field-batch-mode>true</replication-field-batch-mode>  
</replication-config>  
</jboss-web>

 

         最近那就了一下SNA发现这种方式确实是一种很好解决session在web contianer中共享的方式。     

      Shared Nothing Architecture(无分享架构)是一个分布式的架构,每个节点都是独立的。典型的SNA系统会集中存储状态的信息,如:数据库中,内存cache中;不在节点上保存状态的信息。
       对于server集群,若将session等状态保存在各个节点上,那么各个节点的session复制会极大的影响性能;若采用SNA,保持每个节点的无状态性,不再使用session来保持全局的状态,而是将session直接放在数据库中,在数据库前再加一层分布式Cache(推荐使用memcached),这样将可极大的提高性能,当改变session中的对象时,同步到cache和数据库。

      对Web Servers做集群时如果将session等状态保持在各个节点上,这样状态的复制就很成问题,所以SNA告诉你在节点上不要保存状态,session这种东西可以存在数据库或内存缓存中嘛,然后cookie或URL中带一个加密string用来查询session状态就可以完美解决session状态了。

      但显然这给数据库增加了压力,但是数据库的处理能力比Web Servers做session复制要好多了。况且我们在数据库前加一memcached将大量的数据库Reads的工作做了,而数据库只用处理数量不多的Writes工作,这大大提高了系统的性能。每个Web Server节点里不用cache,而是外部分布式memcached或session server,这同时避免了cache-coherence问题。

           对于大型的互联网应用的话,未来一定要通过无session状态化,session中心化的方式解决,通过memcached方式存储session,并设置memcached的过期时间,这样可以降低应用的耦合度,增强了扩展性,提高服务器处理的吞吐量。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值