模式就是解决一类问题的通用方法
1、分层:将复杂问题分层化,实现单一职责,这是最常见的一种问题解决思路。另外,在网站发展的过程中,分层结构对于网站支持高并发分布式方向的发展非常重要,所以在网站比较小的时候就应该做好分层,将来网站做大时才更好应对。
2、分割:就是业务上的细化
3、分布式:分层和分割都是为了方便实现分布式部署,使得系统能够处理更大的并发,访问速度更快。常见分布式方案有:
(1)分布式应用和服务
(2)分布式静态资源,即人们常说的动静分离
(3)分布式数据和存储
(4)分布式计算
4、集群:对于访问集中的模块,需要将独立部署的服务器集群化,即多台服务器部署相同应用,通过负载均衡后共同对外提供服务。
5、缓存:使用缓存有两个条件。一个是访问热点不均,我们要缓存的就是访问量最大的那部分数据。二是缓存数据有一定时效,不会很快过期,不然缓存也就失去了意义。
(1)CDN:部署在距离用户最近的网络服务商,用户访问总是先到达这里,并将数据(主要是变化较少的数据)缓存,提升访问速度
(2)反向代理:部署在网站的前端服务器,这里可以缓存网站的一些静态数据。用户访问应用服务器之前,先要访问反向代理服务器,如果这里缓存了需要的数据,就不需要再去应用服务器请求。
(3)应用服务器本地缓存,一些本地缓存了的数据,就不需要向其他服务器请求了。
(4)分布式缓存:当缓存量比较大时,一台服务器的本地缓存就不够用了。只有将更多的数据缓存到分布式集群缓存中,通过网络通信请求缓存数据
6、异步:除了前面的分层、分割和分布等,异步也是一种降耦的重要手段。异步的实现方式不必多说。
7、冗余:服务器规模比较大时,有服务器宕机是必然会发生的事情。想要在有服务器宕机的情况下依然保持正常服务,就需要服务器保持一定的冗余来运行,数据也要冗余备份。即使负载很小的服务器,也需要至少两台服务器,来通过冗余实现服务高可用。有的大型网站还会在全球范围内部署灾备数据中心
8、自动化:人为干预容易出错,所以尽量让机器去做事情。目前自动化架构的主要体现,在于发布运维方面。自动化发布过程主要包含以下步骤:
(1)自动化代码管理,如git
(2)自动化测试
(3)自动化安全测试
(4)自动化部署
另外,运行过程中,还会遇到各种问题,所以我们还要进行:
(1)自动化监控
(2)自动化报警
(3)自动化失效转移
(4)自动化失效恢复
(5)自动化降级
(6)自动化资源分配
9、安全:这里介绍一些安全方面的模式:
(1)通过密码和手机校验码实现身份认证
(2)敏感数据加密,如交易数据、登陆数据、用户个人数据等
(3)为防止机器人程序攻击,使用验证码进行识别
(4)其他还有一些高端的,可以作为专题进行研究