解决方案架构师修炼之道
上QQ阅读APP看书,第一时间看更新

3.1.4 服务器机群弹性

应用层从Web层收集用户请求,然后执行繁重的业务逻辑计算并与数据库交互。应用层需要在用户请求量增加时伸展,并随着请求量的减少而收缩。在这种情况下,用户的操作会绑定到用户会话上,因为用户可能会在移动设备上浏览商品,但是从台式机下单购买。在不考虑用户会话的情况下执行水平伸缩可能导致糟糕的用户体验,因为这会导致用户的购物进度被重置。

现在,首先要做的是将用户会话与应用服务器解耦,并维护好会话数据。这意味着你需要考虑在独立的层(例如NoSQL数据库)中维护用户会话。NoSQL数据库是基于键值对存储的,可以存储半结构化数据。

将用户会话存储在Amazon DynamoDB或MongoDB等NoSQL数据库之后,应用服务器就可以进行水平伸缩而不影响用户体验。你还可以在一组应用服务器上添加负载均衡器,它可以在实例之间分配负载,在自动伸缩机制的帮助下,可以按需自动地添加或删除实例。