在某商城系统中有如下三个表:
序号 | 字段 |
---|---|
1 | 商品编号 |
2 | 名称 |
3 | 分类 |
4 | 型号 |
5 | 生产日期 |
6 | 商品条码 |
序号 | 字段 |
---|---|
1 | 订单编号 |
2 | 下单时间 |
3 | 下单用户 |
4 | 总金额 |
序号 | 字段 |
---|---|
1 | 子订单编号 |
2 | 商品编号 |
3 | 单价 |
4 | 数量 |
序号 | 字段 |
---|---|
1 | 采购编号 |
2 | 下单日期 |
3 | 供应商 |
4 | 总金额 |
序号 | 字段 |
---|---|
1 | 子采购编号 |
2 | 商品编号 |
3 | 单价 |
4 | 数量 |
该商城按照微服务划分原则把商品相关的接口放在了商品服务中,把订单相关的接口放在订单服务中,把采购相关的接口放在采购服务中。并且后台管理系统具有如下查询功能:
上面的这两种查询功能按照如下顺序执行:
该方案存在一定的问题:
要解决上一小节中的问题,我们首先会先到的方案是数据冗余。所谓的数据冗余就是在订单表和采购单表中增加商品信息的字段。这样每次查询订单和采购单的时候,就不需要依赖商品服务了,那么这里又出现了一个问题,如果商品更新了,怎么同步冗余数据。一般来说有两种方法:
为了解决上面的问题,又引入了解耦业务逻辑的数据同步方案,大致思路如下:
这个方案避免了两个问题:
但是这个方案的缺点是,增加了采购和订单数据库的存储空间。
本篇文章简要介绍了微服务中数据同步的方案,在实际开发中具体使用哪种方案,视情况而定。