读过前面一篇文章《系统架构升级之道,关注关键服务依赖》就知道,我们的应用系统中的关键服务绝大部分都会是对数据库的依赖。
如果只有一个数据库服务器,数据一致性问题也就不存在了。
可是,随着系统访问量、数据量的不断增长,数据库出现多个服务器,又出现缓存服务,又要拆分数据库,还要分拆到不同的子应用等等。
这样一来,数据一致性问题就会变得越来越突出。
这次,咱们就来分析下这个问题会涉及到哪些方面,严重程度,以及如何应对。
我们来看这样一个数据流程。
1 用户提交一个订单(2个不同商家各一件商品)——数据源头
2 应用服务器验证用户信息、订单信息、库存信息等等,然后将这个订单发送到订单消息队列——消息队列
3 订单处理服务器从消息队列中拿到新订单,接下来的处理,可能做的数据操作有:
3.1 生成一个订单/也可能会分拆为两个订单
3.2 更新两个商品库存数量
3.3 更新商家的销售数据
3.4 生成订单对应的支付信息
3.5 生成用户订单成功的状态信息
上面的数据处理中,涉及到的数据有:订单数据、商品数据、商家数据、支付数据、用户数据。
涉及到的应用和服务有:前端应用系统,消息队列,后端应用系统,数据库,缓存,甚至订单、商