系统架构
在设计原则基础上,对系统的各个部分组合,形成架构
系统架构两大要素
• 各个组件
• 组件间的相关关联
1.什么是好的软件架构
– 成本最低
– 满足用户需求(将来的功能需求)
– 系统稳定性好
– 架构足够灵活
• 数据量维度
• 并发量维度
• 部署运维维度
2.什么是坏的软件架构
– 成本较高– 系统复杂、笨重
– 系统不稳定
• 经常发生故障
– 系统扩展性差
– 系统维护性差
• 维护代价高
3.软件架构高可用性
– 系统运行依赖的基础
• 硬件
– 机器
– CPU
– 内存
– 硬盘
– 网卡
• 软件
– 操作系统
– 文件系统
– 软件本身
– 系统运行依赖的基础的不可用性
• 硬件
– 生命周期
– 硬件故障
• 软件
– 软件BUGS
– 软件间资源的争抢– ……
– 任何时间都正常提供读写服务
• 7*24
• 机器硬件故障
– CPU、内存、硬盘、网卡
• 机器软件故障
– OS、FileSystem......
• 网络划分
– 机器间网络隔离
4.架构高可用的手段
– 设计无状态化
– 子系统冗余
– 幂等性设计
– 异步调用
• 避免一个服务失败导致的整个服务失败
– 超时机制– 分级管理– 服务降级– ......
– 服务治理
• 监控
– 进程
– 语义
– 错误
– Coredump
– 数据波动
– ……
• 服务可管理、可视化
– 日志监控系统
– ...... – ……
5.架构高可用评价维度
– 指系统在面对各种异常时可以提供正常服务的能力
– 系统的可用性可以用系统停服务的时间和正常服务时间的比例来衡量
– 系统不可用时间(故障时间=故障修复时间点-故障发现时间点)
– 2个9的可用性(99%)
• 基本可用
• 一年停机的时间不能超过88个小时
• 365*24*60/100 = 88个小时
– 3个99的可用性(99.9%)
• 较高可用性
• 一年停机的时间不能超过9个小时
• 365*24*60/1000=9个小时
– 4个9的可用性(99.99%)
• 一年停机的时间不能超过53分钟
• 365*24*60/10000 = 53分钟
– 5个99的可用性(99.999%)
• 极高可用性
• 一年停机的时间不能超过5分钟
• 365*24*60/100000=5分钟
– 目标
• 做到4个9
• 具备自动恢复能力的高可用
6.架构高可用涉及环节
– 系统整体架构层面
• 硬件
• DNS
• CDN
• 接入层
• 逻辑层
• 数据存储层
• 分布式缓存层
• 数据层
• ......
– 架构关键节点层面
• 负载均衡
• 软件质量保证
• 预发布
• 灰度发布
• 安全
• 监控
• 回滚方案
• 线上问题定位分析
• ......
你投入得越多,就能得到越多得价值