第六天-《企业应用架构模式》-会话状态

凌燕 2019-06-30

1. 无状态的价值:

无状态可以仅用很少的对象就可以处理很多的用户,空闲状态的用户越多,无状态服务器就越有用

2. 会话状态:

相关性:会话状态只与当前会话有关,它存在于业务事务中,与其他会话及他们的业务事务是分开的;

与记录数据信息的区别:记录数据时长期保存在数据库中的持久化数据,它对所有会话可见,会话状态需要提交成为数据库中的记录;

最大问题:出现在处理隔离性的时候(同时操作,或者相关联操作)

不能把会话中所有数据都看成是会话状态

3. 存储会话状态的方法:

1)存储会话状态的3种方法:

客户会话状态:在客户端保存数据(在web中可用url、cookie、hidden域等)

适用场景:会话数据较少、用户经常取消会话(如B2C用户直接关闭站点消失)

问题:安全性、完整性

服务器会话状态:在服务器内存、文件系统、一张简单的数据库表(以会话标识号为key、以已序列化对象为值)

优点:容易直接访问会话状态

数据库会话状态:在服务器端存储(将数据分解为多个表和域)

优点:状态持久化不易丢失

问题:隔离性差(需要将会话数据与记录数据相隔离)

以上3种模式并不相互排斥,可以混合使用。使用时,还需要注意:客户机崩溃、服务器死掉、网络连接断掉

2)会话扩容:

会话迁移:允许一次会话从一台服务器转移到另一台服务器,从而可以有一台服务器处理一个请求,其他服务器处理其他请求

优点:可均衡服务器

缺点:难以找到会话状态,难以支持会话迁移

服务器亲和:某次特定会话的所有请求只能由一台服务器处理

缺点:当客户端有使用代理是,可能会有大量负载集中在某台服务器上

相关推荐