后端视角的高性能、高可用设计概要

高性能

业务方面

  • 将同步业务转化为异步业务
  • 业务分级,柔性可用
  • 减少不必要的数据库请求
  • 业务解耦,降低关联性

应用方面

  • 前端高性能设计(略)
  • 使用缓存:多级缓存、分布式缓存
  • 预加载、懒加载、延迟初始化
  • 尽量减小交互接口数据包大小
  • 尽量减少序列化、对象克隆
  • 尽量减少跨进程、跨机器、跨网络访问
  • 尽量减少在同步业务中使用事务
  • 尽量减少锁的使用
    • 使用乐观锁
    • 尽量缩小锁的范围
    • 尽量将低性能逻辑放到锁的范围之外
  • 使用异步逻辑
  • 队列削峰,先接受,后处理
  • 尽量复用
    • 线程:线程池
    • 连接:长连接、连接池

数据库方面

  • 数据库读写分离
  • 优化 SQL 语句、表结构、索引等

硬件及部署方面

  • 负载均衡
  • 分离应用服务器和数据库服务器

高可用

业务方面

  • 快速拒绝:尽早拒绝不符合策略的请求
  • 灰度推广、灰度上线:按部门、分时段
  • 服务分级,柔性可用

应用方面

  • 自动重试机制
    • 单点重试
    • 多点重试
  • 超时机制
  • 幂等设计
  • 无状态设计
  • 容错机制
    • 登录时,创建 Staff 抛出“该员工不存在”
  • 提高编码质量,减少异常
  • 完善的测试准出
    • 功能
    • 性能

运维方面

  • 状态报告及预警
    • KeepAlive
  • 资源报告及预警
    • CPU、内存、硬盘、IO
  • 业务报告及预警
    • QPS、TPS、SQL查询
    • PV、UV
  • 日志

硬件及部署方面

  • 核心业务与非核心业务分开部署
  • 负载均衡、双机热备、主备
  • 异地多活

其他

  • 先思考,后动手。多思考,少蛮干。
  • 严格要求自己,将出手的产品当做孩子一样对待