网站的高可用架构

一、高可用的网站架构

网站的高可用架构设计的主要目的,就是保证服务器硬件故障时服务依然可用、数据依然保存并能够被访问。主要手段是数据和服务的冗余备份及失效转移。

一个网站典型的分层模型是三层,即应用层、服务层、数据层。

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

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

位于数据层的服务器,需要在数据定稿时进行数据同步复制,将数据写入多台服务器上,实现数据冗余备份。当数据服务器宕机时,应用程序将访问切换到有备份数据的服务器上。

二、高可用的应用

1、通过负载均衡进行无状态服务的失效转移:通过负载均衡手段,将流量和数据分摊到一个集群组成的多台服务器上,以提高整体的负载处理能力。

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

Session复制:集群中的几台服务器之间同步Session对象,使每台服务器都保存所有用户的Session信息。缺点:占用大量的服务器和网络资源。

Session绑定:通过Hash算法,将来源于同一IP的请求分发到同一台服务器上。

利用Cookie记录Session:将Session记录在客户端,每次请求服务器的时候,将Session放在请求中发送给服务器,服务器处理完请求后再将修改过的Session响应给客户端。缺点:受Cookie大小的限制。

Session服务器:利用独立部署的Session服务器(集群)统一管理Session,应用服务器每次读写Session时,都访问Session服务器。缺点:实现难度较大。

三、高可用的服务

可复用的服务模块为业务产品提供基础公共服务,这些服务通常都独立部署,被具体应用远程调用,可以使用类似负载均衡的失效转移策略实现高可用的服务。

1、分级管理:运维上将服务器进行分级管理,核心应用和服务优先使用更好的硬件,在运维响应速度上也格外迅速。

2、超时设置:设置服务调用的超时时间,一旦超时,通信框架就抛出异常,应用程序根据服务调试策略,可选择继续重试或将请求转移到提供相同服务的其它服务器上。

3、异步调用:通过消息队列等异步方式完成,避免一个服务失败导致整个应用请求失败的情况。

4、服务降级:为了保证核心应用和功能的正常运行,需要对服务进行降级。降级有两种手段:拒绝服务和关闭服务。

5、幂等性设计:必须在服务层保证服务重复调用和调用一次产生的结果相同。

四、高可用的数据

保证数据存储高可用的手段,主要是数据备份和失效转移机制。

1、数据备份:关系数据库热备机制,就是通常所说的Master-Slave同步机制,它不但解决了数据备份问题,还改善了数据库系统的性能,可以实现数据库的读写分离。

2、失效转移:失效转移由三部分组成:失效确认、访问转移、数据恢复。

失效确认:通过心跳检测和应用程序访问失败报告。

访问转移:需要将数据读写访问重新路由到其他服务器上。

数据恢复:需要从健康的服务器复制数据到宕机的服务器上。

五、高可用网站的软件质量保证

1、网站发布

2、自动化测试

3、预发布验证

4、代码控制

5、自动化发布

6、灰度发布

六、网站运行监控

1、监控数据采集:用户行为日志收集、服务器性能监控、运行数据报告

2、监控管理:系统报警、失效转移、自动优雅降级

相关推荐