Jacky Wu bio photo

Jacky Wu

Software Architect in China

Email Twitter Facebook LinkedIn Github Weibo

重点摘要

微信团队总结下来的三大难点:

  • 快——如何保证用户快速摇到红包?
  • 准——如何保证摇到的红包能成功拆开?
  • 稳——如何保证拆开的红包能分享出去?

应对策略:

  • 有损服务: 有损服务是通过精心拆分产品流程,选择性牺牲一部分数据一致性和完整性从而保证核心功能绝大多数运行。
  • 柔性可用
  • 大系统小做:模块化思路

心得

  • 有损服务,系统降级
    1. 业务逻辑前置到最外层,处理和筛选后大大降低流入到后续流程中的请求数。
    2. 后端简单验证数据合法性,异步快速处理
    3. 过载保护
      1. 客户端出错提示,避免大量重试
      2. 服务端限速,并且使得客户端配合限速
      3. 全程压测流程获知系统可靠性和性能上限
  • 柔性服务
    1. 系统容灾:核心系统做到最多30%的自动容灾
    2. 资源隔离:子系统分配任务,设定任务分配数量上限
    3. 快速拒绝:最大限度保护较脆弱的后端,使得失败前置,减少服务成本。且快速拒绝,让客户端快速重试,提高整体成功率
    4. 支付分组:将任务拆分为group,分拆的思路
    5. 流量预加载:让客户端提前将消耗带宽的资源下载到本地,防止洪峰

思路

参考