高弹性|可能是全网最完整的分布式架构设计图谱(含22个知识点)( 三 )

  • 事情驱动设计优势
  • 服务间依赖解除
  • 服务隔离程度高
  • 7、幂等性
    • 本质是一个操作 , 无论执行多少次 , 执行结果总是一致的
    • 幂等核心是全局唯一 ID , 链路依据全局 ID 做幂等 , 依据业务复杂度可以选取多种实现方式
    • 数据库自增长 ID
    • 本地生成 uuid
    • Redis 生产 id
    • Twitter 开源算法 Snowflake
    • HTTP 幂等性 , 除 POST 外 , HEAD , GET , OPTIONS , DELETE , PUT 均满足幂等
    二、性能
    1、分布式缓存
    缓存更新模式
    • Cache Aside , 常用模式 , 应用要维护缓存的失效 , 命中 , 更新等动作
    • Read/Write Through , 缓存代理更新数据库操作 , 应用视角只有一份存储
    • Write Behind Cache , IO 加速方式之一 , 更新操作只在内测完成 , 异步进行批量更新数据库
    2、异步处理
    • Push 模型 , 中心调度 , 复杂度高
    • Pull 模型 , 无中心调度 , 复杂度底
    • Push+Pull 模型
    3、数据库扩展
    数据库分片
    • 垂直分片
    • 字段拆分 , 将变化频率不同的字段拆分到不同表
    • 水平分片
    • 哈希算法来分 , 数据离散度高 , 降低热点可能性
    • 通过时间范围分片 , 保证数据连续性
    • 分片设计要点
    • 分片要预留足够空间 , 避免重新分片
    • 分片聚合要并行去做
    • 业务尽可能不去做跨分片的事务
    三、容错
    1、系统可用性
    • MTTF, Mean Time To Failure , 系统平均运行多长时间才发生故障 , 越长越好
    • MTTR,Mean Time To Recover, 故障平均修复时间 , 越短越好
    • 可用性计算公式 ,Availability= MTTF /(MTTF+MTTR)
    2、服务降级
    • 降低一致性
    • 强一致性 , 将所有的同步一致性 , 切换为最终一致性 , 提高吞吐量
    • 弱一致性 , 必要时候牺牲一致性换取服务整体可靠性
    • 关闭次要服务
    • 不同应用 , 关闭次要应用 , 释放物理资源
    • 相同应用 , 关闭应用次要功能 , 更多资源给到核心功能
    • 简化服务功能
    • 如简化业务流程 , 减少通讯数据等
    3、服务限流
    1)限流目的
    ①SLA 保证方式之一
    ②应对突发峰刺流量 , 一定程度节约容量规划成本
    ③租户隔离策略之一 , 避免某些用户占用其它用户的资源 , 导致服务大范围不可用
    2)限流方式
    ①服务降级
    ②服务拒绝
    3)解决方案
    ①服务权重划分 , 多租户环境将资源按权重划分 , 保证重要客户的资源

    推荐阅读