订单系统架构笔记摘抄

来源:互联网 发布:王路 知乎 编辑:程序博客网 时间:2024/05/04 18:45

美团外卖订单系统

性能优化

  • 系统拆分
    划分为三个系统,分别为交易系统、查询系统、异步处理系统。独立拆分后,可以避免业务间的相互影响。快速支持业务迭代需求的同时,保障系统稳定性。
  • 异步化
    有两种方案:
    1. 线程或线程池:将异步操作放在单独线程中处理,避免阻塞服务线程。但是重启时,需要通过JVM优雅关闭来保证异步操作进行完成后,JVM再关闭。
    2. 消息异步:异步操作通过接收消息完成。
  • 并行化
    并行化将原本串行的工作并行执行,降低整体处理时间,比如下单后需要获取门店、菜品、用户信息,这些信息可以并行获取,节省时间。
  • 缓存

一致性优化

  • 幂等重试
    通过重试+幂等,保证退款等操作最终一定会完成。
  • 两阶段提交
    通过2PC来保证多个系统的数据一致性。比如下单过程中,涉及库存、优惠资格等多个资源,下单时会首先预占资源(对应2PC的第一阶段),下单失败后会释放资源(对应2PC的回滚阶段),成功后会使用资源(对应2PC的提交阶段)。

高可用

  • 依赖容灾
    依赖容灾主要有如下几个思路:
    1. 依赖超时设置;
    2. 依赖灾备;
    3. 依赖降级;
    4. 限制依赖使用资源;
      当前订单系统通过同时采用上述四种方法,来避免底层服务出现问题时,影响整体服务。具体实现上,我们采用Hystrix框架来完成依赖容灾功能。Hystrix框架采用上述四种方法,有效实现依赖容灾。

参考

《从订单业务模块到分布式高可用:美团外卖订单中心的演进之路》

0 0