假设我有几个微服务,每个微服务都有自己独特的数据域。该存储包含对其父区域的id和名称的引用。用户还可以选择删除/更新区域。当用户在父区域被删除后下拉商店时,我显然不希望他们得到一个不再存在的区域的引用。
我想知道在这样一个简单的用例中,在确保数据一致性方面,最好的方法是什么。我所做的所有研究都指向使用saga,但它们的实现似乎很复杂,对于如此简单的场景来说似乎有些矫枉过正。在设计模式或架构方面是否有更好的方法来处理事情,或者这种不必要的复杂性只是微服务架构固有的?
一般来说,如果没有saga或其他至少同样复杂的东西,您将无法获得比跨微服务的最终一致性更强的东西。
考虑到这一点,每个决定放入两个操作(例如"delete area"然后"get store";和/或"将商店的区域"放入单独的微服务中,在某种程度上是一个赌注,"我们不需要这些操作最终保持一致",而输掉这个赌注意味着你至少要实现一个saga(这不是技术债务:更合适的金融类比是期权书写/卖空波动性)。
所以,如果你不想实现一个故事,它可能值得(特别是在项目的早期)重新思考微服务边界:领域驱动的设计实践可能有助于重新思考。