概念
复杂度的来源
- 高可用
- 高性能
- 可拓展性
- 低成本
- 安全
- 规模
高可用
通过设计(冗余规避部分风险)减少程序不可访问的时间
- 复杂度:任务管理分配
- 那些可以执行任务
- 任务如何重新执行
- 架构
- 主备(冷,热)
- 主从
- 集群(对称,非对称{master-slave}) 计算高可用/存储高可用
- 异地多活(备)
- 同城异区(机房故障)
- 跨城异地(数据强一致性业务不可用)
- 跨国异地(只读,异国业务)
- 异地多活架构设计步骤:
- 业务分级(量大,核心,高收入)
- 数据分类(量级,实时,唯一性,可丢失性,可恢复性)
- 数据同步(存储系统,消息队列,重复生成)
- 异常处理(多通道同步,用户补偿)
状态决策
- 独裁式
- 协商式(主备决策)
- 民主式(zookeeper选举等) 投票节点数必须超过系统总节点数一半解决脑裂
高性能
通过设计让程序能够在单位时间内处理更多的请求
架构设计原则
- 合理原则
- 简单原则
- 演进原则
架构设计流程
- 识别复杂度
- 设计备选方案
- 评估的选择备选方案
- 详细方案设计
架构拓展性设计
- 面向流程(分层架构)
- 面向服务(微服务)
- 面向功能
流量概念
- DAU(Daily Active User)日活跃用户数量。常用于反映网站、互联网应用或网络游戏的运营情况
- MAU(monthly active users)月活跃用户人数。是在线游戏的一个用户数量统计名词,数量越大意味着玩这款游戏的人越多
- PCU(Peak concurrent users )最高同时在线玩家人数
- DNU日新增用户
- WAU是周活跃用户数量
- ACU (Average concurrent users)平均同时在线玩家人数
- PV(pageview)即页面浏览量,或点击量;通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标
- UV:(unique visitor)在同一天内,uv只记录第一次进入网站的具有独立IP的访问者
FMEA
FMEA(Failure mode and effects analysis)
- 给出初始的架构设计图
- 假设架构中某个部件发生故障
- 分析此故障对系统功能造成的影响
- 根据分析结果,判断架构是否需要进行优化