【问题标题】:Eventual consistency in enterprise application企业应用程序的最终一致性
【发布时间】:2017-11-16 13:23:22
【问题描述】:

通过微服务文档和讨论,我了解到通过 XA 协议使用分布式事务并不是确保数据一致性的好选择,因为它会减慢系统速度并且并非所有端点都支持它,例如休息。

建议使用重试机制或消息传递实现的最终一致性技术。

我的问题是,是否可以在每个时间点的数据一致性至关重要的企业应用程序中使用最终一致性?如何在最终一致性中消除脏读?或者换句话说,是否有可能确保没有第 3 方进程获取过时数据,这些数据是未提交的“交易”的一部分?

【问题讨论】:

    标签: distributed-transactions eventual-consistency


    【解决方案1】:

    嗯,这就是最终一致性的重点:您不能保证没有进程“获取过时的数据”。您的系统将在有限的时间内收敛到更新的状态。但你不知道什么时候。

    使用轻量级补偿模式,您可以查看事务中的每个操作 T(i) 并定义补偿操作 C(i)。然后,您可以保证

    T(1), ..., T(N) 或

    T(1), ..., T(N), C(N), ..., C(1)

    成功执行(在有限的时间内...)。也就是说:要么所有操作都成功执行,要么通过执行相应的补偿来撤回所有操作。

    由于这些操作需要服务之间的协调,而不是在真正的事务隔离上下文中运行,因此当然可能会收到由于事务未完全完成或补偿而导致的陈旧数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      • 2015-06-05
      • 2010-09-23
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      相关资源
      最近更新 更多