大型网站技术架构[3] -- 网站的高可用架构

《大型网站技术架构:核心原理与案例分析》读书笔记

索引

大型网站技术架构[1] – 大型网站架构概述

大型网站技术架构[2] – 网站的高性能架构

大型网站技术架构[3] – 网站的高可用架构

大型网站技术架构[4] – 网站的伸缩性架构

1、分层架构

网站的高可用架构设计的目的就是保证服务器硬件故障时服务依然可用,数据依然保存并能够被访问

大型网站的分层架构及物理服务器的分布式部署使得位于不同层次的服务器具有不同的可用性特点

1.1 应用层

应用层的服务器通常为了应对高并发的访问请求,会通过均衡负载设备将一组服务器组成一个集群共同对外提供服务,当负载均衡设备通过心跳检测等手段监控到某台应用服务器不可以用时,就将其从集群列表删除,并将请求分发到集群中其他可用的服务器上,使整个集群保持可用,从而实现高可用

1.2 服务层

服务层的服务器也是通过集群方式实现高可用,但是这些服务器被应用层通过分布式服务调用框架访问,分布式服务调用框架会在应用层客户端程序中实现软件均衡负载,并通过服务注册中心对提供服务的服务器进行心跳检测,发现有服务不可用,立即通知客户端程序修改服务访问列表,提出不可用的服务器

1.3 数据层

为了保证服务器宕机时数据不丢失,数据访问服务不中断,需要在数据写入时进行数据同步同步复制,将数据写入多台服务器上,实现数据冗余备份。当数据服务器宕机时,应用程序将访问切换到有备份数据的服务器上。

2、高可用的应用

无状态的应用是指应用服务器不保存业务的上下文信息,而是根据每次请求提交的数据进行相应的业务逻辑处理,多个服务器实例之间完全对等

2.1 失效转移

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

2.2 Session 管理

Web 应用中将多次请求修改使用的上下文对象称为 Session,单机情况下,Session 可由部署在服务器上的 Web 容器管理,在集群环境中,Session 管理手段主要如下:

  • Session 复制:服务器间同步 Session 对象,使得每台服务器都保存所有用户的 Session 信息
  • Session 绑定:利用均衡负载的源地址 Hash 算法实现,负载均衡服务器总是及那个来源于同一 IP 的请求分发到同一台服务器上
  • 利用 Cookie 记录 Session:将 Session 记录在客户端,每次请求服务器的时候,将 Session 放在请求中发送给服务器,服务器处理完请求后再将修改过的 Session 响应交给客户端
  • Session 服务器:利用独立部署的 Session 服务器统一管理 Session,应用服务器每次读写 Session 的时候,都访问 Session 服务器

3、高可用的服务

  • 分级管理
  • 超时设置
  • 异步调用
  • 服务降级
  • 幂等设计

4、高可用的数据

4.1 CAP

高可用的数据有如下含义:

4.1.1 数据持久性

保证数据可持久存储,在各种情况下都不会出现数据丢失的问题

4.1.2 数据可访问性

在多份数据副本分别存放在不同存储设备的情况下,如果一个数据存储设备损坏,可以快速将数据访问切换到另一个数据存储设备上

4.1.3 数据一致性

CAP原理:一个提供数据服务的存储系统无法同时满足数据一致性(Consistency),数据可用性(Availability),分区受耐性(Partition Tolerance),通常选用 A 和 P,放弃 C

数据一致性分为:数据强一致,数据用户一致,数据最终一致

4.2 数据备份

4.2.1 异步热备份(SQL)

异步热备份是指多份数据副本写入操作异步完成,应用程序收到数据服务系统的写操作成功响应的时候,只写成功了一份,存储系统将会异步地写其他副本。在异步写入方式下,存储服务器分为主存储服务器(Master)和从存储服务器(Slave),应用程序正常情况下只连接主存储服务器,数据写入时,由主存储服务器的写操作代理模块将数据写入本机存储系统后立即返回写操作成功响应,然后通过异步线程将写操作数据同步到从存储服务器

4.2.2 同步热备份(NoSQL)

同步方式是指多份数据副本的写入操作同步完成,即应用程序收到数据服务系统的写成功响应时,多份数据都已经写操作成功。

4.3 失效转移

数据服务集群中任何一台服务器宕机,那么应用程序针对这台服务器的所有读写操作需要重新路由到其他服务器上,这个过程叫做失效转移。

失效转移操作由三部分组成:失效确认(心跳检测)、访问转移、数据回复。

Search

    Table of Contents