事件驱动微服务:原理、模式与挑战
1. 事件驱动微服务:何时使用文档而非事件
在事件驱动的微服务架构中,我们可以使用事件(events)或文档(documents)来通知实体的变化。选择发布事件还是文档可能存在争议,它们通常能达成相同的目标,但本质上有所不同,应在特定用例中使用。
1.1 事件与文档的区别
事件代表特定的变化,本身具有领域价值,因为它们代表用户的操作或领域内的变化。而文档仅告知实体的最新状态,失去了事件所承载的领域价值。
以下是一个部分事件和文档的示例,展示订单地址的变化:
OrderAddressChanged
{
OrderId: 15251212,
Address: "9980 Rock Maple Street",
UserId: 12162
}
OrderDocument
{
OrderId: 15251212,
Address: "9980 Rock Maple Street",
OrderLines: [
{
ProductId: 1147421,
Quantity: 1
}
],
OrderedAt: "2021-01-23T18:25:43.511Z",
UserId: 12168
}
1.2 何时使用事件
如果接收系统仅需对地址的变化做出反应,使用事件更为有利。例如,当用户更改订单地址时,计费服务需要更新发票中的地址,处理
超级会员免费看
订阅专栏 解锁全文
171万+

被折叠的 条评论
为什么被折叠?



