一、高可用的挑战
1、高可用挑战-要求
2、高可用挑战-各种不稳定的来源
常见事故及问题归类如下:
二、互联网通用架构和分层
典型互联网架构分层设计如下:
系统正交分解如下:
服务治理目标 | 技术架构 | 监控层 | |
---|---|---|---|
外层 | 客户端SLA 攻防/扫描/审计 CDN合理/稳定 DNS合理/稳定 流量峰值 | CDN DNSPOD/Ip直连 高防 | 客户端监控 CDN监控 DNSPOD监控 安全监控 |
接入层 | 异地多活 服务SLA 负载均衡 流量调度 机房切换 限流/降级 | F5自动化 GW nginx(etcd confd) | 机房整体监控 服务监控 (响应延时链接 故障) |
服务层 | 分布式架构 定时调度管理 灰度发布 自动化灾备恢复 机房双活 大数据处理 一体化数据研发 | 应用架构 | 服务状态(服务响应) 性能监控(DB监控) 后端资源监控 语义监控 调用链分析 |
数据层 | 服务监控和性能调节 高并发 水平扩容 快速自动灾备恢复 定期归档备份 | 分布式数据库 分布式事务 消息组件 | 服务&业务级监控 |
资源层 硬件层 | 满足率 扩容 灾备恢复 资源回收 日志归档 备份 满足率 套餐 烧机 部署 初始化 | SDN 无人值守自动安装 硬件生命周期平台 | 硬件监控 网络监控 |
三、构建外层高可用
1、外层-DNS高可用方案
•通过Dnspod D监控,线路/机房失效快速失效
•腾讯Httpdns方案,就近接入 多点容灾
•埋入客户端的IP直连方案
2、外层-CDN高可用
- 腾讯CDN 本身具有高可用监控,节点快速剔除故障节点。
- HttpDns:客户通过嵌入SDK, 不经过传统 DNS 解析方式来使用 CDN 资源,比如HttpDns。
- 自建CDN 质量监控,调度系统,自动切换。
3、外层-高防高可用
- 自动为业务创建防护域名
- 用户可以用CNAME方式使用防护域名接入高防
- 防护域名可配置BGP优先解析,在攻击封堵后根据来源IP智能解析到归属线路
四、构建接入层高可用
1、接入层-构建多可用区多活
2、接入层-LB高可用
腾讯云CLB底层是基于TGW,本身具有高可用,具体如下:
- 多级容灾
跨园区容灾 ->交换机容灾
机架容灾-> TGW集群容灾
- 防攻击
流量攻击:过载保护
DDOS攻击:syn代理和LRU淘汰
- 安全性
黑名单、域名封禁
五、构建服务端高可用
1、服务层框架-高可用
2、服务层-高可用思路
- 服务的整体概览
- 服务无状态
- 拆分子服务
- 通信协议和交互接口
- 同步/异步
- 超时管理,自动熔断,
- 快速切换,慢服务隔离
- 独立扩展,快速扩容
- 服务单元条带化
六、数据层高可用
1、CDB-高可用
- 故障一:数据库节点异常
只读从库、灾备实例数据正常
后台隐藏实例可快速恢复业务
后续动作需要后台新建隐藏从库实例
- 故障二:可用区异常
主库及只读从库无法访问
手动切换灾备实例为主实例
后续动作需要通过追加故障时间后灾备实例binlog
- 故障三:异常操作导致数据库受损
主库、只读从库及灾备库数据连续性会导致全部数据受损
存在RTO,短时间无法快速恢复业务
通过备份数据 binlog恢复数据
2、DB Proxy-高可用
通过DB Proxy实现:
- 单机房快速HA切换
- 跨机房容灾切换
3、对象存储-高可用
腾讯云对象存储COS提供异地备份功能,可以实现数据的异地备份和恢复。
七、移动端高可用
- 移动端 HttpDns/IP直连/长链接push推送优化
- 移动端监控 响应时间/奔溃卡顿/启动时间/功耗/网络质量/CDN监控
- 移动端报警平台
- 移动端热修复
- 故障演练