Skip to Main Content
微服务与事件驱动架构
book

微服务与事件驱动架构

by Adam Bellemare
October 2021
Beginner to intermediate content levelBeginner to intermediate
250 pages
7h 11m
Chinese
Posts & Telecom Press
Content preview from 微服务与事件驱动架构
有状态的流
103
如图
7-11
所示,如果生产者在事务执行期间遭遇致命性异常,通过从变更日志恢复,可以
简单地重建其替代实例。事件流的消费者组偏移量也可以被重置到偏移量事件流中最后已
知的处理位置。
消费者
聚合程序
库存变更日志流
库存变动流
应用程序容器
恢复消费
者偏移量
恢复库存表的状态
读写
库存表
0
7-11:用变更日志和之前的偏移量从代理恢复状态
生产者一旦恢复运行就可以开始处理新的事务,并且事件代理会认为所有之前未完成的事
务都是失败的并将它们取消。根据代理实现的不同,事务机制在某种程度上会有所不同,
因此请确保了解清楚你所使用的事务机制。
7.6.3
 没有
客户端
代理
事务的有效一次处理
对不支持“客户端
代理”事务的实现来说,要做到事件的有效一次处理也是可能的,尽
管这需要更多的工作和对重复事件的仔细考虑。首先,如果上游服务无法提供有效一次事
件的生产保证,那么它们就可能产生重复的记录。需要识别并过滤上游进程创建的重复事
件。其次,需要在一个
本地事务
中对状态和偏移量管理进行更新,以确保对系统状态只应
用一次事件处理逻辑。通过遵循此策略,客户端可以确保其处理程序产生的内部状态与输
入事件流的逻辑描述保持一致。下面来更详细地看看这些步骤。
最好使用支持幂等写入的事件代理和客户端,而不是事后解决去重问题。前
者可以很好地扩展到所有的消费者应用程序,后者则成本高昂且难以扩展。
1.
产生重复事件
如果生产者已成功地将事件写入事件流,但是没能接收到写入确认且进行重试,或者在更
新其消费者偏移量之前崩溃,则会产生重复事件。这两种场景有一些不同。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

云原生:运用容器、函数计算和数据构建下一代应用

云原生:运用容器、函数计算和数据构建下一代应用

Boris Scholl, Trent Swanson, Peter Jausovec
Kafka权威指南

Kafka权威指南

Neha Narkhede, Gwen Shapira, Todd Palino
下一代空间计算:AR与VR创新理论与实践

下一代空间计算:AR与VR创新理论与实践

Erin Pangilinan, Steve Lukas, Vasanth Mohan

Publisher Resources

ISBN: 9787115571106