1.要解决的问题
当生成动态内容时,常常需要使用包含用户特有的状态信息(HTTP会话信息)。然而,当利用负载均衡对多个网站/应用服务器的运行进行控制时,如果让每一个服务器都各自保存状态信息,那么一旦某个服务器失效或者人为地减少服务器数量,这就会导致状态信息的丢失。
2.云模式的说明
这个模式让你能在横向扩展架构中维护状态信息。它可以保证在服务器数量增加时状态信息的继承以及防止服务器数量减少(包括失效)时状态信息的丢失。状态信息将被存放于高持久性的共享数据存储(内存/磁盘)中,这些信息将被多个服务器引用。这使得服务器可以“无状态”,即无需保存状态信息。即使添加了一个新的服务器,但只要让它访问共享数据存储就能继承状态信息。
3.实施
AWS数据存储包括“ElastiCache”、“SimpleDB(KVS)”和“DynamoDB(KVS)”这些都可以用来保存状态信息。根据需要选择其中一项。
准备一个数据存储来保存状态信息。
使用一个识别用户的ID(会话ID或用户ID)作为数据存储中的主键,并将用户信息保存为对应的值。
使用数据存储代替web/AP服务器来对状态信息进保存、引用和更新。
4.配置
5.好处
这让你在使用横向扩展模式时无需担心状态信息的继承或丢失问题。
6.注意事项
由于多个web/AP服务器访问状态信息都集中在一个节点位置,所以你必须防止数据存储的性能成为瓶颈。如果性能要求较高,可以考虑选择很少成为瓶颈的DynamoDB。
根据需要,亚马逊关系型数据库服务(RDS)(一个关系型数据库管理系统)或亚马逊简单存储服务(S3)(网络存储)也能用于数据存储。