大型网站架构模式
每一个模式描述了一个在我们周围不断重复大声的问题以及问题解决方案的核心。
分层
将系统横向切分。
分层结构在计算机中无处不在,网络的 ISO 7层分层,计算机硬件、操作系统、应用软件也是一种分层。
网站系统中:应用层、服务层、数据层。
分层架构的挑战:合理规划层次边界和接口。
进制跨层次的调用(应用层直接调用数据层)和逆向调用(数据层调用服务层,或者服务层调用应用层)。
分割
将系统纵向切分。
将每一层按模块进行分割,每个模块由不同的团队负责。
分布式
分布式应用和服务、分布式静态资源、分布式数据和存储、分布式计算(Hadoop 的 MapReduce 分布式计算框架,移动计算而不是移动数据)。
集群
使用分布式已经将分层和分割后的模块独立部署,但是对于用户访问集中的模块(比如网站首页),还需要将独立部署的服务器集群化,即多态服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务。
缓存
CDN、反向代理、本地缓存、分布式缓存。
使用缓存有两个条件:
1、数据访问热点不均衡,某些数据会被更频繁的访问;
2、数据再某个时间段内有效,不会很快过期,否则缓存的数据会因已经失效而产生脏读,影响正确性。
异步
单一服武器内部可以通过多线程共享内存队列的方式实现异步,业务线程将输出写入队列,处理线程从队列读取进行处理;
分布式系统中,多个服务器集群通过分布式消息队列实现异步(内存队列的分布式部署)。
异步架构是典型的生产者消费者模型,两者不存在直接调用,只需要保持数据结构不变,彼此功能实现可以随意变化而不相互影响,这对网站拓展新功能非常便利。
使用异步队列还有如下特性:
1、提供系统可用性,消费者服务器故障,数据再消息队列中堆积,生产者继续处理就可以了。
2、加快网站响应速度,业务端将请求写入消息队里,不需要等待消费者处理就可以返回。
3、消除并发访问高峰,消息队列将突然增加的访问请求数据放入消息队列中,等待消费者服务器依次处理。
冗余
定期备份,冷备份。
主从热备份。
容灾数据中心。
去中心化。
自动化
发布过程自动化、自动化代码管理、自动化测试、自动化安全监测、自动化部署、自动化监控、自动化报警、自动化失效转移、自动化失效恢复、自动化降级(网站遇到高峰超出处理能力,为了保证整个网站安全可用,关闭一些不用的服务或者拒绝部分请求)、自动化分配资源。
安全
加密、安全校验、风险控制。
EOF