关于 CAP 理论什么的在这里就不说了, 主要说应用到业务中的问题.
大概的架构是: 服务(包括数据与基础方法) -> 业务(调用服务完成用户的需求) -> 用户(前端)
在多项服务之间, 需要保持数据一致性.
保持数据一致性的三种做法:
以上做法从一致性上依次弱化.
以上做法也有各自的局限, 需要额外的工作:
一个前端使用的新增订单 API 设计可能涉及如下服务:
库存需要使用分布式事务来锁库存以避免瞬发下单导致的负库存的情况.
同样, 积分也要锁以避免同一人同时使用积分导致的积分不足.
订单与凭证一般都会写成功, 但订单服务返回的信息如订单号要及时返回给前端, 而凭证不需要.
最终在一个新增订单的 API 中, 是这样使用服务的:
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.