网站技术架构与性能优化(高可用架构)
一.网站可用性度量
网站可用时间占比(4个9)
二.高可用架构
实现高可用架构的主要手段:
数据服务的冗余备份和失效转移
高可用架构的基本分层模型(与解决方案):
应用层 => 负载均衡
服务层 => 负载均衡
数据层 => 冗余备份
三.高可靠的应用(应用服务器集群)
一).使用负载均衡对无状态服务进行失效转移(心跳检测识别宕机服务器)
二).session管理
解决方案:
1.复制
2.绑定->原地址hash算法),一个客户端只会访问同一台服务器(session绑定技术)
3.cookie记录session(扯犊子)
4.session服务器:
利用独立部署的session服务器统一管理session
四.高可靠的服务(分布式部署可复用的公共服务模块)
一).分级管理
核心服务(功能)使用好的硬件,部署备份
二).超时设置
负载均衡实现失败转移
三).异步调用
异步消息队列
四).服务降级
拒绝服务及关闭服务
五).幂等性设计
对于特殊的业务场景设置其幂等
五.高可用的数据
一).高可用数据的三层含义:
持久性: 不会丢失
可访问性: 失效转移
数据一致性: 所有副本一模一样
二).数据备份
冷备份: 恢复到上一个保存点,啥也保证不了
热备份:
异步 => 主同从异
同步 => 主从同写
三).失效转移
失效确认:
心跳检测
应用程序访问失败报告 => 收到报告后还需进行一次心跳检测,以免误报
访问转移:
重新路由
数据恢复:
宕机恢复后恢复数据
六.高可用网站的软件质量保证
一).网站发布 => 部分宕机发布
二).自动化测试 => 自动化测试工具
三).预发布验证 => 预发布服务器(不接入负载均衡,外网无法访问)
四).代码管理 => git
五).自动化发布 => 火车发布模型
六).灰度发布 => 渐进式发布