RBa*_*jee 12 software-design cqrs event-sourcing microservices debezium
当我们谈论采购事件时,我们有一个简单的双写架构,我们可以写入数据库,然后将事件写入队列,如 Kafka。其他下游系统可以读取这些事件并相应地对它们采取行动/使用它们。
但是当试图使数据库和事件同步时会出现问题,因为需要对这些事件进行排序才能使其有意义。
为了解决这个问题,人们鼓励使用数据库提交日志作为事件源,并且有围绕它构建的工具,例如 Airbnb 的 Spinal Tap、Redhat 的 Debezium、Oracle 的 Golden Gate 等……它解决了一致性、排序保证和所有这些。
但是使用数据库提交日志作为事件源的问题是我们与数据库模式紧密耦合。微服务的数据库架构是公开的,数据库架构中的任何破坏性更改,如数据类型更改或列名更改,实际上都可能破坏下游系统。
那么使用 DB CDC 作为事件源是个好主意吗?