订单系统设计 --- SaaS订单中心存储方案

SaaS订单中心作用

  为垂直领域的商家提供订单管理能力,管理线上(各种互联网平台渠道)、线下等不同渠道的订单;

需求分析

订单系统设计 --- SaaS订单中心存储方案
  只是为商家端提供订单管理能力,其特点是访问频次低,查询数据量大,需要支持灵活的订单查询,能够容忍一定的延时(相对于C端);

存储方案设计

  • 读写分离:写请求到主库,读请求到备库(主备同步有ms级别延时,实时性要求特别高的可以显式指定主库);
  • 水平拆分 + 基因法:按照商户id水平拆分,订单id中融入商户id分库基因来支持基于订单id的查询;
  • 垂直拆分 + 信息冗余:订单表数据过多时需要垂直拆分,订单表只保留最核心的数据,其余属性拆分成单独的表,同时可以在订单表中冗余部分经常被查询到的信息,提高查询效率;
  • ES外置索引:利用ES聚合分表数据,同时建立到订单id的索引;(通过ES支持复杂的查询,获得订单id,然后从DB查询订单信息,ES只是存储索引,不存储订单数据,因为存储成本太高)
  • 冷热分离/数据归档:订单中心的特点是时间越久被访问的频次越低,可以按照时间维度划分冷人数据,冷数据归档存储到OSS等云存储上(便宜、弹性且支持多种计算引擎),既可以让数据库瘦身保持性能,同时也能降低存储成本;

订单系统设计 --- SaaS订单中心存储方案

数据倾斜方案

参考:

  1. 1对多业务,数据库水平切分架构一次搞定 | 架构师之路