基于Spring Cloud Stream事件驱动实现微服务最终一致性

我们结合实际的业务场景使用Spring Cloud Stream验证了微服务的最终一致性

具体的业务场景是仓储业务的出库操作,流程图如下:

为了简化业务处理,这里只针对第6,第7 和第8步做最终一致性的事件驱动设计, 效果如下:

以上方式由于是基于事件驱动的,如果一个节点操作耗费时间很长,

那么在数据最终一致性得到保障之前的这段真空时间也越长,那么就有可能暴露给用户不一致的数据,

因为事件驱动完全是异步模式的。

Kafka本身的特性可以避免数据重复,可以实现数据时间旅行或者说历史数据的replay

也不用担心分布式环境中Kafka队列消息的一致性,

Kafka队列性能和队列数据本地序列化处理机制也非常优秀

这些高级特性还需要在实际业务中进行不断的调优,验证。

猜你喜欢

转载自blog.csdn.net/ccc7574/article/details/84060575