六.异步:
异步的背景:
计算机软件发展的一个重要目标和驱动力是降低软件辑合性。事物之间直接关系越少, 就越少被彼此影响, 越可以独立发展。
大型网站架构中, 系统解藕合的手段除了前面提到的分层、分割飞分布等, 还有一个重要手段是异步,
异步的概念:
业务之间的消息传递不是同步调用, 而是将一个业务操作分成多个阶段, 每个阶段之间通过共享数据的方式异步执行进行协作。
异步的实现方式
1.在单一服务器内部可通过多线程共享内存队列的方式实现异步,
处在业务操作前面的线程将输出写入到队列, 后面的线程从队列中读取数据进行处理;
2.在分布式系统中,多个服务器集群通过分布式消息队列实现异步, 分布式消息队列可以看作内存队列的分
布式部署。
异步的典型
异步架构是典型的生产者消费者模式,
两者不存在直接调用, 只要保持数据结构不变, 彼此功能实现可以随意变化而不互相影响, 这对网站扩展新功能非常便利
异步的特性
使用异步消息队列还有如下特性。
1.提高系统可用性。消费者服务器发生故障, 数据会在消息队列服务器中存储堆积,
生产者服务器可以继续处理业务请求, 系统整体表现无故障。
消费者服务器恢复正常后, 继续处理消息队列中的数据。
2.加快网站晌应速度。处在业务处理前端的生产者服务器在处理完业务请求后,将数据写入消息队列,
不需要等待消费者服务器处理就可以返回, 响应延迟减少。
消除并发访问高峰。
用户访问网站是随机的, 存在访问高峰和低谷, 即使网站按照一般访问高峰进行规划和部署,
也依然会出现突发事件, 比如购物网站的促销活动, 微博上的热点事件, 都会造成网站并发访问突然增大,
这可能会造成整个网站负载过重,响应延迟, 严重时甚至会出现服务窑机的情况。
使用消息队列将突然增加的访问请求数据放入消息队列中, 等待消费者服务器依次处理, 就不会对整个网站负载造成太大压力。但需要注意的是, 使用异步方式处理业务可能会对用户体验、业务流程造成影响,需要网站产品设计方面的支持。
七.冗余:
冗余的背景:
网站需要7x24 小时连续运行,但是服务器随时可能出现故障, 特别是服务器规模比较大时, 出现某台服务器岩机是必然事件。
冗余的意义:
保证在服务器岩机的情况下网站依然可以继续服务, 不丢失数据,
冗余的实施条件:
就需要一定程度的服务器冗余运行, 数据冗余备份, 这样当某台服务器右机时, 可以将其上的服务和数据访问转移到其他机器上。
访问和负载很小的服务也必须部署至少两台服务器构成一个集群, 其目的就是通过冗余实现服务高可用。数据库除了定期备份,存档保存
,实现冷备份外,为了保证在线业务高可用,还需要对数据库进行主从分离, 实时同步实现热备份。
八.自动化:(厉害)
自动化的目标:
在无人值守的情况下网站可以正常运行, 一切都可以自动化是网站的理想状态。
目前大型网站的自动化架构设计主要集中在发布运维方面。
自动化的背景:
发布对网站都是头等大事, 许多网站故障出在发布环节, 网站工程师经常加班也是因为发布不顺利。通过减少人为干预,使发布过程自动化可有效减少故障。
自动化的步骤:
发布过程包括诸多环节。
自动化代码管理, 代码版本控制、代码分支创建合并等过程自动化,
1.开发工程师只要提交自己参与开发的产品代号,系统就会自动为其创建开发分支,
2.后期会自动进行代码合并;自动化测试,
3.代码开发完成,提交测试后,系统自动将代码部署到测试环境, 启动自动化测试用例进行测试,向相关人员发送测试报告, 向系统反馈测试结果;
4.自动化安全检测, 安全检测工具通过对代码进行静态安全扫描及部署到安全测试环境进行安全攻击测试, 评估其安全性;
5.最后进行自动化部署, 将工程代码自动部署到线上生产环境。
此外, 网站在运行过程中可能会遇到各种问题: 服务器岩机、程序Bug 飞存储空间不足、突然爆发的访问高峰。
网站需要对线上生产环境进行自动化监控,对服务器进行心跳检测,并监控其各项性能指标和应用程序的关键数据指标。
如果发现异常、超出预设的阁值,就进行自动化报警,向相关人员发送报警信息, 警告故障可能会发生
。在检测到故障发生后, 系统会进行自动化失效转移, 将失效的服务器从集群中隔离出去, 不再处理系统中的应用请求。
待故障消除后,系统进行自动化失效恢复,重新启动服务, 同步数据保证数据的一致性。
在网站遇到访问高峰,超出网站最大处理能力时,为了保证整个网站的安全可用, 还会进行自动化降级, 通过拒绝部分请求及关闭部分不重要的服务将系统负载降至一个安全的水平,
必要时,还需要自动化分配资源, 将空闲资源分配给重要的服务, 扩大其部署规模。
九.安全:
安全的背景:
互联网的开放特性使得其从诞生起就面对巨大的安全挑战,
网站在安全架构方面也积累了模式:
1.通过密码和手机校验码进行身份认证;
2.登录、交易等操作需要对网络通信进行加密,
3.网站服务器上存储的敏感数据如用户信息等也进行加密处理;
4.为了防止机器人程序滥用网络资源攻击网站, 网站使用验证码进行识别;
5.对于常见的用于攻击网站的XSS 攻击、SQL 注入、进行编码转换等相应处理;
6.对于垃圾信息、敏感信息进行过滤;
7.对交易转账等重要操作根据交易模式和交易信息进行风险控制。