大型网站技术架构 核心原理与案例分析阅读笔记2

可用性的应用

1.通过负载均衡进行无状态服务的失效转移

不保存状态的应用给高可用的架构设计带来了巨大便利,既然服务器不保存请求的状态,那么所有的服务器完全对等,当任意一台或多台服务器宕机,请求提交给集群中其他任意一台可用机器处理,这样对终端用户而言,请求总是能够成功的,整个系统依然可用。对于应用服务器集群,实现这种服务器可用状态实时监测、自动转移失败任务的机制是负载均衡。

    负载均衡主要使用在业务量和数据量较高的情况下,当单台服务器不足以承担所有的负载压力时,通过负载均衡手段,将流量和数据分摊到一个集群组成的多台服务器上,以提高整体的负载处理能力。

    由于负载均衡在应用层实际上起到了系统高可用的作用,因此即使某个应用访问量非常少,只用一台服务器提供服务就绰绰有余,但如果需要保证该服务高可用,也必须至少部署两台服务器,使用负载均衡技术构建一个小型的集群。

2.应用服务器集群的Session管理

应用服务器的高可用架构设计主要基于服务无状态这一特性, 但是事实上,业务总是有状态的,在交易类的电子商务网站例如淘宝京东,需要有购物车记录用户的购买信息,用户每次购买请求都是向购物车中增加商品,用户每次刷新页面都需要更新这些信息。

Web应用中将这些多次请求修改使用的上下文对象称作会话( Session ),单机情况下,Session可由部署在服务器上的Web容器管理。在使用负载均衡的集群环境中,由于负载均衡服务器可能会将请求分发到集群任何一台应用服务器上,所以保证每次请求依然能够获得正确的Session比单机时要复杂很多。

集群环境下,Session管理主要有以下几种手段:

① Session复制

应用服务器开启Web容器的Session复制功能,在集群中的几台服务器之间同步Session 对象,使得每台服务器上都保存所有用户的Session 信息,这样任何一台机器宕机都不会导致Session数据的丢失,而服务器使用Session时,也只需要在本机获取即可。

② Session 绑定

Session绑定可以利用负载均衡的源地址Hash算法实现,负载均衡服务器总是将来源于同一IP的请求分发到同一台服务器上。这样在整个会话期间,用户所有的请求都在同一台服务器上处理,即Session绑定在某台特定服务器上,保证Session总能在这台服务器上获取。这种方法又被称作会话黏滞。

利用Cookie记录Session

 

早期的企业应用系统使用C/S(客户端/服务器)架构,一种管理Session的方式是将Session记录在客户端,每次请求服务器的时候,将Session放在请求中发送给服务器,服务器处理完请求后再将修改过的Session 响应给客户端。网站没有客户端,但是可以利用浏览器支持的Cookie记录Session。

④Session 服务器

Session服务器。利用独立部署的Session 服务器(集群)统一管理Session,应用服务器每次读写Session时,都访问Session服务器。这种解决方案事实上是将应用服务器的状态分离,分为无状态的应用服务器和有状态的Session服务器,然后针对这两种服务器的不同特性分别设计其架构。

 

posted @ 2020-06-12 16:21  呵呵刀呵呵  阅读(113)  评论(0编辑  收藏  举报