learning_notes

学习笔记

View project on GitHub

概念

复杂度的来源

  • 高可用
  • 高性能
  • 可拓展性
  • 低成本
  • 安全
  • 规模

高可用

通过设计(冗余规避部分风险)减少程序不可访问的时间

  1. 复杂度:任务管理分配
    • 那些可以执行任务
    • 任务如何重新执行
  2. 架构
    • 主备(冷,热)
    • 主从
    • 集群(对称,非对称{master-slave}) 计算高可用/存储高可用
  3. 异地多活(备)
    • 同城异区(机房故障)
    • 跨城异地(数据强一致性业务不可用)
    • 跨国异地(只读,异国业务)
  4. 异地多活架构设计步骤:
    • 业务分级(量大,核心,高收入)
    • 数据分类(量级,实时,唯一性,可丢失性,可恢复性)
    • 数据同步(存储系统,消息队列,重复生成)
    • 异常处理(多通道同步,用户补偿)

状态决策

  • 独裁式
  • 协商式(主备决策)
  • 民主式(zookeeper选举等) 投票节点数必须超过系统总节点数一半解决脑裂

高性能

通过设计让程序能够在单位时间内处理更多的请求

架构设计原则

  • 合理原则
  • 简单原则
  • 演进原则

架构设计流程

  1. 识别复杂度
  2. 设计备选方案
  3. 评估的选择备选方案
  4. 详细方案设计

架构拓展性设计

  1. 面向流程(分层架构)
  2. 面向服务(微服务)
  3. 面向功能

流量概念

  1. DAU(Daily Active User)日活跃用户数量。常用于反映网站、互联网应用或网络游戏的运营情况
  2. MAU(monthly active users)月活跃用户人数。是在线游戏的一个用户数量统计名词,数量越大意味着玩这款游戏的人越多
  3. PCU(Peak concurrent users )最高同时在线玩家人数
  4. DNU日新增用户
  5. WAU是周活跃用户数量
  6. ACU (Average concurrent users)平均同时在线玩家人数
  7. PV(pageview)即页面浏览量,或点击量;通常是衡量一个网络新闻频道或网站甚至一条网络新闻的主要指标
  8. UV:(unique visitor)在同一天内,uv只记录第一次进入网站的具有独立IP的访问者

FMEA

FMEA(Failure mode and effects analysis)

  • 给出初始的架构设计图
  • 假设架构中某个部件发生故障
  • 分析此故障对系统功能造成的影响
  • 根据分析结果,判断架构是否需要进行优化