【发布时间】:2021-02-04 21:06:11
【问题描述】:
我是事件溯源的新手,我有一些疑问。 Here example diagram.
-
假设我们有 2 个服务 BookShop 实例和 2 个服务 Wallet 实例。 用户要求 BookService_1 给他买一本书。该图书服务创建事件 BuyBookRequestCreated 并将其推送到事件总线。事件总线将此事件发送到服务钱包的两个实例。现在有两个实例尝试从用户钱包中预留足够的钱,它们都发出事件 BookMoneyReserved?现在在另一方面,BookShop 服务的两个实例接收 2 个事件,它们都尝试发出事件 BookBought?或者,也许 eventbus 只会将 BuyBookRequestCreated 发送给一个订阅者?但是当这个选定的服务失败时会发生什么?
-
从 API 消费者的角度来看,如何处理这种模式?如果我调用某个 API 给我买一本书,我希望它在买书时“返回 200”。在事件溯源模式中,无需等待其他服务的响应,因此如果其他服务必须发出事件以完成图书购买,则无法告诉客户他的购买是否真的失败。
-
我有点迷失在整个微服务世界中。一方面我们有 Grpc、protobufs 和服务网格,但另一方面我们有事件溯源和事件驱动架构。什么时候用哪个?从我所看到的和可以理解的情况来看,我可以同时使用事件溯源和 grpc 吗?我可以只使用 grpc 来传达 beetwen 服务并将事件保存为一种状态持久性的形式,或者我可能完全没有得到它,应该再次阅读文章?
感谢您的帮助。
【问题讨论】:
-
事件驱动的集成不是事件溯源。查看youtube.com/watch?v=STKCRSUsyP0 和eventstore.com/blog/what-is-event-sourcing 以及我们过去的一些网络研讨会eventstore.com/webinars
标签: microservices grpc event-sourcing