深入探索事件驱动架构:从工作流到任务队列
1. 工作流编排
工作流编排允许在与关联 ID 相关的更大系统定义上下文中,对事件模式进行临时或正式定义。通过在更大上下文中隔离与关联 ID 相关的消息,开发者可以控制组件间的工作流,并将事件管理的复杂性集中到工作流配置中。
工作流编排常用于实现 Saga 模式,这是一种使用消息和每个微服务事务来管理分布式事务的机制。在 Saga 模式中,服务按指定顺序处理分布式事务;若事务失败,可运行一系列补偿事务来撤销已完成工作的影响。
工作流系统通过将工作流分解为相关的托管事件集,为每个工作流实例分配独立的存储和管理(锁定、更新等),从而实现水平扩展。当特定工作流不主动处理事件和更新系统状态时,它可以将系统的当前状态存储在外部存储中,然后退出。
以下是一个示例工作流的源代码:
async handle_event(event) {
meaning = await extract_meaning(event);
if (meaning.count > 5) {
for (int i = 0; i < meaning.count; i += 5) {
slice = meaning.select(i, i+4);
submit_event(slice);
}
} else {
correlation = await find_correlation(meaning)
if (correlation.found) {
boost_sentiment(c
超级会员免费看
订阅专栏 解锁全文
1206

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



