谈大规模交易系统架构设计方法--Stateless(无状态web服务)
2017-12-06 10:09
561 查看
大家都知道大规模系统中Web服务器不止一台,也不是几十台,很可能是成百上千台。系统必须是可扩(Scalable)的;特别是Web服务器必须是可扩的,因为大型系统的流量会是非常大的。
最简单最便宜的方法就是加Linux机器来作为Web服务器。你设计的架构如果不能支持这种通过加机器来扩充系统的方法的话,以后随着流量的增大,领导和群众都会疯掉;系统重构估计是不可避免的。
显然,要做到这一点,每台Web服务器上是不能保存(交易/请求/session。。。)的状态的。就是说每台Web服务器上是Stateless的。
有人要说,我偏偏要在Web服务器上保留状态,咋啦?。我在Web服务器的前面放一个分流服务器,把每个请求按Cookie把请求分流到相应的有状态的Web服务器上,上一次Cookie去哪台,这次请求我还是分流去那台;不就解决问题了吗?咋啦?
得,您要这么做。还是那句话,小系统可能没问题。大系统你一定疯掉。先不说你那个分流服务器能承载多大压力,会不会是瓶颈。就说那万一上次去的那台Web服务器挂掉了,你这新的请求往哪儿送?傻眼了吧。。
所以,一定要记住:Web服务器,千千万万不要是有状态的,不要保留(Session/交易)等信息。这些信息请保留到后台数据库服务器里去。
这也是为什么大型交易系统强调Session的管理的原因。Session要集中管理,供每个Web服务器使用。这样,任何一个Web服务器挂掉,都不会影响交易的继续进行。
最简单最便宜的方法就是加Linux机器来作为Web服务器。你设计的架构如果不能支持这种通过加机器来扩充系统的方法的话,以后随着流量的增大,领导和群众都会疯掉;系统重构估计是不可避免的。
显然,要做到这一点,每台Web服务器上是不能保存(交易/请求/session。。。)的状态的。就是说每台Web服务器上是Stateless的。
有人要说,我偏偏要在Web服务器上保留状态,咋啦?。我在Web服务器的前面放一个分流服务器,把每个请求按Cookie把请求分流到相应的有状态的Web服务器上,上一次Cookie去哪台,这次请求我还是分流去那台;不就解决问题了吗?咋啦?
得,您要这么做。还是那句话,小系统可能没问题。大系统你一定疯掉。先不说你那个分流服务器能承载多大压力,会不会是瓶颈。就说那万一上次去的那台Web服务器挂掉了,你这新的请求往哪儿送?傻眼了吧。。
所以,一定要记住:Web服务器,千千万万不要是有状态的,不要保留(Session/交易)等信息。这些信息请保留到后台数据库服务器里去。
这也是为什么大型交易系统强调Session的管理的原因。Session要集中管理,供每个Web服务器使用。这样,任何一个Web服务器挂掉,都不会影响交易的继续进行。
相关文章推荐
- Web服务搜索与执行引擎(四)——基于(三)的系统架构设计
- Java高手真经.系统架构卷 : Java Web系统设计与架构 : UML建模+设计模式+面向服务架构
- Web服务搜索与执行引擎——系统设计方案 及系统架构设计
- Web服务搜索与执行引擎(四)——基于(三)的系统架构设计
- Web服务搜索与执行引擎(四)——基于(三)的系统架构设计
- Web服务搜索与执行引擎(四)——基于(三)的系统架构设计
- Web服务搜索与执行引擎(四)——基于(三)的系统架构设计
- 从架构设计到系统实施-基于.NET 3.0的全新企业应用之基于WCF的系统服务
- web 系统设计中的 Getting Real方法
- Web服务搜索与执行引擎(三)——系统设计方案
- Web服务搜索与执行引擎(三)——系统设计方案
- 学习大规模高并发Web系统架构及开发推荐书籍
- 从不同架构的角度进行web项目的需求分析和系统设计
- Web服务搜索与执行引擎(三)——系统设计方案
- 颜建生的毕业设计课题--校园网络打印服务系统---Web子系统
- 最简洁有效的Web服务监控架构图(网站长们最实用的监控方法)
- 从不同架构的角度进行web项目的需求分析和系统设计
- WEB系统架构设计经验分享
- 教案:开发基于JSPServletJavaBean的网上交易系统-第9章 Web服务
- [导入]从架构设计到系统实施——基于.NET 3.0的全新企业应用系列课程(2):设计基于WCF的服务.zip(8.29 MB)