分布式应用架构的挑战与可扩展解决方案
1. 应用架构的可扩展性与状态管理
1.1 无状态设计与可扩展性
当应用服务设计为无状态时,通过采用合适的部署架构,能够应对流量的增长。而且,表现层的扩展级别与业务层的扩展级别相互独立。不过,数据库层有其特殊之处。表现层负责组装内容以实现用户界面的有效渲染,业务层负责对业务数据进行更改,而数据库层的唯一目的是确保数据状态在用户请求或服务器重启时都能以一致的方式被访问,它是数据的唯一真实来源,这给数据库层的扩展带来了限制。
数据库层的扩展策略与其他层不同,因为可并发修改的数据不能简单地复制,否则需要解决数据调和的问题。通常,数据库供应商会提供数据库扩展以及相关的数据一致性和数据调和问题的解决方案,而不是由应用架构师来解决。这也是数据库层的技术栈相比其他层更昂贵的原因,例如 Oracle RAC(Real Application Cluster)就是这方面的一项技术。此外,即使采用了这些昂贵的解决方案,由于数据库始终是有状态的,而非无状态的,其可扩展程度仍无法与其他层相媲美。
1.2 应用状态管理
javax.servlet.http.HttpSession API 和 EJB(Enterprise Java Bean)部署描述符元素 session-type 为应用架构师提供了在服务器端存储用户特定数据的便捷方式。
- HttpSession :Servlet 容器使用此接口在 HTTP 客户端和 HTTP 服务器之间创建会话。会话可以在指定的时间段内持续存在,跨越用户的多个连接或页面请求。
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



