InfoQ

新闻

高效分布式Session管理

作者 王翔(Vision Wang) 发布于 2007年10月31日 上午2时41分

社区
.NET,
Architecture
主题
应用服务器,
架构,
集群与缓存,
企业架构
标签
性能和扩展性,
ASP.NET

作为ASP.NET应用的一个重要组成部分,Session是绝大部分项目需要面临的问题。但当Session中对象超过某个容量时(一般在100K左右),整个ASP.NET应用性能会急剧下降,这缘于ASP.NET在Session处理上采用一种只要有“风吹草动”就需要读/写整个Session中的内容的策略,而项目中往往又需要经常对Session中的信息进行维护,例如:购物车。除此而外,一些用户不必要的Web点击引发的Session内容加载和更新也会对应用性能带来明显负面影响;伴随着SOA和企业应用的整合的浪潮,很多时候Web应用间需要共享Session,也就是分布式的Session访问。

考虑到ASP.NET内置Session管理的局限性,针对上面两个情况,可以通过采用第三方产品作为专用的进程外Session管理宿主(例如:产品化的Scaleout StateServer),它主要适于下列情况:

  • Web Server的不同Web应用间,Web Farm中的不同Web Server间需要共享Session信息,一方面有可能因为Singleton访问的要求,另一方面考虑到高可用集群的需要,即便某个Web Server宕掉之前从它发起的Session变更结果同样可以被其他Web Server获得;
  • 适于频繁大颗粒度Session数据小比例修改的ASP.NET应用;

图:一般进程外Session服务的结构

不仅如此,由于Session Server为进程外对象的关系,因此可以把来自不同数据源的相对容量较大的参数表的缓冲交由这个独立的Session Server调用

除了商用产品外,开源的NCache也提供动态集群扩展能力,包括复制、分区、分区复制和客户端Cache的支持。

深度内容

模块化Java:声明式模块化

本文是模块化Java系列文章的第4篇,介绍的是声明式模块化。文中描述了组件如何以声明的方式来定义并组织在一起,而无需让代码依赖于OSGI API。

Ian Robinson和Jim Webber谈论基于Web的整合

本采访是在伦敦举行的QCon2009上记录的,Ian Robinson和Jim Webber探讨了如何将Web作为整合平台以及REST在理论上和实践中的好处。

项目管理修炼之道(精选版)

项目管理对于项目成败至关重要,但实践中每个项目都有自己的独特性,没有现成的解决方案可以套用。书中从应对实际风险的角度出发,讲述了从项目启动、项目规划到项目结束的整个管理流程,展示了作者的思考过程。本迷你书从原书中精选出5个章节。

那是鸟,还是飞机?不,那是超人!

在这个演讲中,Fred将会揭示敏捷的一些外在因素,并会重点关注敏捷获得成功的内在原因。从案例研究和真实的项目经验来看,Fred认为:工具、管理体系都不能让你变得敏捷。敏捷的成功,植根于士气高涨、充分授权的工作者身上,他们能够以不同以往的方式思考问题。

访谈和书摘:Eben Hewitt的新书《Java SOA Cookbook》

Java SOA Cookbook

Eben Hewitt的新书《Java SOA Cookbook》从Java实现的角度讨论了面向服务架构。Eben在书中讨论了SOA基础、工具、最佳实践和SOA治理等主题。

Mark Richard的《Java消息服务》第二版

Mark Richards的新书《Java消息服务》第二版覆盖了JMS的许多主题, 包括发布和订阅模式以及点对点模式,消息过滤和事务等。InfoQ与Mark谈论了跟他的新作。

模块化Java:动态模块化

本文是“模块化Java”系列文章的第三篇,讨论动态模块化,内容涉及如何解析bundle类、bundle如何变化、以及bundle之间如何通信。

让测试也敏捷起来

对于测试组织来说,敏捷方法带来的快速迭代却让测试本身变得困难起来:缺乏“足够详细的文档”,缺乏“仔细设计用例的时间”等等。在本演讲中,段念将与大家探讨如何在敏捷过程中进行测试。