谈大规模交易系统架构设计方法--Stateless(无状态web服务)

大家都知道大规模系统中Web服务器不止一台,也不是几十台,很可能是成百上千台。系统必须是可扩(Scalable)的;特别是Web服务器必须是可扩的,因为大型系统的流量会是非常大的。

    最简单最便宜的方法就是加Linux机器来作为Web服务器。你设计的架构如果不能支持这种通过加机器来扩充系统的方法的话,以后随着流量的增大,领导和群众都会疯掉;系统重构估计是不可避免的。

    显然,要做到这一点,每台Web服务器上是不能保存(交易/请求/session。。。)的状态的。就是说每台Web服务器上是Stateless的。

    有人要说,我偏偏要在Web服务器上保留状态,咋啦?。我在Web服务器的前面放一个分流服务器,把每个请求按Cookie把请求分流到相应的有状态的Web服务器上,上一次Cookie去哪台,这次请求我还是分流去那台;不就解决问题了吗?咋啦?

   得,您要这么做。还是那句话,小系统可能没问题。大系统你一定疯掉。先不说你那个分流服务器能承载多大压力,会不会是瓶颈。就说那万一上次去的那台Web服务器挂掉了,你这新的请求往哪儿送?傻眼了吧。。

   所以,一定要记住:Web服务器,千千万万不要是有状态的,不要保留(Session/交易)等信息。这些信息请保留到后台数据库服务器里去。

   这也是为什么大型交易系统强调Session的管理的原因。Session要集中管理,供每个Web服务器使用。这样,任何一个Web服务器挂掉,都不会影响交易的继续进行。

你可能感兴趣的:(谈大规模交易系统架构设计方法--Stateless(无状态web服务))