大型 web 系统解决方案
第2章. 总结架构
用户管理子系统以 3 亿用户数为基础,通过使用通行证以及认证的管理来实现各个互
联网应用的用户统一管理。本项目是基于互联网模式来设计,抛弃传统企业设计的厚重,
大集中的理念,而采取互联网的轻薄,分布式的理念,分层分块,各个层次和组件各司其
职又彼此协作,用层次化搭建方式构建多媒体阅读子平台,形成当前适用,将来可扩展的
模式。
考虑到本系统需要极大的访问量以及系统的未来可伸缩性,下面分别从展现层,应用
层,数据层来阐述系统伸缩性的实现,从而实现互联网应用的 3 大特点:大并发、可伸缩、
高可用。
系统伸缩性
所谓伸缩性就是在系统负荷大的时候,能够通过增加服务器/虚拟机来缓解压力;同样
的,当不需要多台机器的时候,可以减少服务器的数量来。而这些改变,最终用户是透明
的。
1、可伸缩性-前端
用户管理子系统需要对外提供统一的访问入口,采用 Nginx+keepalived 能很好的
实现高可用、可扩展以及负载均衡的要求。Nginx 提供负载均衡的能力,keepalived 提
供健康检查,故障转移,提高系统的可用性。采用这样的架构以后很容易对现有系统进行
扩展,只要在后端添加或者减少服务器,只要更改配置文件,并能实现无缝配置变更。在
本项目中建议采用由 Nginx 充当 LoadBalancer 的职责,Keepalived 实现 Nginx 的 HA
的架构模式。
对 session 的管理,在集群服务器不多时,可采用 Session 复制的方式进行扩展,因
为广播式复制到其他服务器有一定延时,会带来一定网络开销;在服务器数据较多以及需
要水平扩展的模式下,需要有新的 session 管理模式:session 从 web 服务器中被保存在
缓存服务器中,所有的 web 服务器对统一从存有 session 的缓存服务器进行读写,分离
了 session 和 web 服务器之间的对应关系,从而实现 web 服务器的线性扩展。
2、伸缩性-应用层
应用层采用无状态分布式模式,借助服务框架实现展现层和应用层的前后端分离,另
外应用层自身可根据业务的划分,分解为多个模块,实现把调用分解到各个服务器上,从
而降低每台服务器的调用压力。
前端在调用后端服务的时候,先查询注册服务器,得到后端服务的节点、接口信息等 ,
并把配置信息缓存在前端应用中,减少查询服务的次数,提高访问的性能。在注册服务器
修改了服务节点和接口等信息,可以采用观察者模式,对各个客户端缓存的信息进行强制
刷新。
拓维信息系统股份有限公司 第 7 页,共 34 页