AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

事件架构和事件流

  • 2017-09-10
  • 本文字数:1015 字

    阅读完需:约 3 分钟

将一个单体系统迁移到分布式系统或微服务系统,通常也是从源于同一数据库的单一数据源(SSOT,Single Source Of Truth)转变为源自多数据库的多个数据源。如果使用事件架构(Event Architecture)并将所有事件持久化为数据流,那么就我们可以转回到单一数据源上。这是 Ben Stopford 在他撰写的博客文章中提出的,此篇博客是他关于如何在 Kafka 中使用事件的系列博文之一。

Stopford 是 Confluent 公司的一名工程师他在博文中指出,传统的消息系统中,事件是短暂存在的,已消费的事件并没有历史信息。持久化所有的事件不仅会创建单一数据源,而且可以回溯和重放事件,使得对数据可执行似于版本管理系统中那样的操作。这使得恢复崩溃的系统以及在修复软件故障后重放事件成为可能。

对于一个典型的基于事件的系统,它会对事件进行监听,更新事件在数据库中的状态并做持久化,进而发出新的事件。在 Stopford 看来,这一架构具有两个挑战。首先,如何在同时写入数据和事件日志时维护一致性。其次,因为存在不同的代码路径等原因,在数据库中的和事件中的数据会出现一些偏差,这可能会导致系统中的不一致问题。解决问题的最好方法是类似于在事件溯源系统中那样,将事件作为头等实体并仅使用事件。

要着手实现事件流,一个途径是使用“变更数据捕获 ”(Change Data Capture)技术。采纳了这一技术的数据库正在不断增加。使用CDC,对数据库的写入将在后台转换为事件流。Stopford 在文章中提及,CDC 的一个优点就是提供了一致点。我们可以对数据库做读写操作,无需分布式事务就让事件流保持数据库和数据流的同步。

Stopford 提供了一个 CDC 的重要用例,就是实现旧架构的迁移。通过使用 CDC 连接到遗留系统的数据库,他们抽取出了事件流,并从使用遗留系统逐步迁移到使用事件流的系统。

在使用事件溯源和事件流中,一个非常有用的模式就是对事件的两次持有。其中一次在基于保留(Retention)的消息类(Topic)中。此类消息按时间顺序保留了每次更改,用于事件溯源视图中。另一次是在压缩消息类(Compacted Topic)中,该类消息类仅提供实体的最新视图,因此规模更小,速度更快。

文末 Stopford 做了总结,指出基于流的事件架构的最显著特性是可不断进化的能力。一旦有新的需求出现,系统就能构建出新的服务,进而轻易地进行部署,并通过从头开始重放所有的事件而维持更新状态。他相信,考虑到 Kafka 所能提供的功能,它非常适用于此类架构之中。

查看英文原文: Event Architectures and Event Streaming

2017-09-10 19:003004
用户头像

发布了 391 篇内容, 共 147.9 次阅读, 收获喜欢 257 次。

关注

评论

发布
暂无评论
发现更多内容

京东图片搜索API的Base64编码限制:超过1MB图片的压缩方案

tbapi

京东图片搜索接口 京东拍立淘API

【免费领取】含高速公路、桥梁群监测等真实案例的白皮书

TDengine

tdengine 国产时序数据库 时序数据库tdengine

告别OOM!SpringBoot内存泄漏的11个排查方法

Geek_e3e86e

Java 编程

云渗透实战:解密AWS CTF挑战中的秘密

qife

AWS安全 云渗透测试

技术分享 | 如何实现不停机从OSS迁移到Valkey

伊克罗德信息科技

领域驱动设计理解及实践探讨

Damon

一文让你全方面了解云管平台

行云管家

云计算 云服务 云管平台 云管理

PO设计模式全攻略,在 UI 自动化中的实践总结(以企业微信为例)

测试人

软件测试

“鞍云智鼎”AI大模型,鞍钢“智”胜转型的破题密钥

用友BIP

Presto在B站的应用

数新网络官方账号

Labubu的风过了?无用的产品才是艺术

IPD产品研发管理

产品 产品经理 产品设计 产品运营 盲盒

Python+Selenium 测试用例编写终极实战入门指南(一)

测试人

软件测试

使用jenkins进行流水线编译

天翼云开发者社区

数据库、

什么是 MPP 数据库?解锁海量数据分析的关键技术

镜舟科技

数据分析 查询优化 StarRocks 分布式计算框架 MPP数据库

开源破界,智控赋能:解锁企业能源管理新维度

开源能源管理系统

开源 能源管理

实战解析京东商品评论API:评价情感分析与行业应用案例

tbapi

京东商品评论接口 京东评论API 京东商品评论内容采集

2025年6月文章一览

codists

Python

AI 体验走查 - 火山引擎存储的 AI UX 探索之路

字节跳动开源

火山引擎 AI 体验走查 可用性测试

为什么YashanDB数据库是大数据处理的理想选择?

数据库砖家

为什么选择YashanDB数据库作为您的数据解决方案

数据库砖家

为什么选择YashanDB作为你的数据库平台?

数据库砖家

为什么选择YashanDB作为您的数据存储解决方案?

数据库砖家

以YashanDB为核心构建企业数字化基础设施

数据库砖家

Flink 任务类加载泄漏问题分析

Joseph295

一个static关键字引发的线上故障:深度剖析静态变量与配置热更新的陷阱

不在线第一只蜗牛

Java

为什么YashanDB数据库是数据驱动企业的选择?

数据库砖家

25年青岛正规等保测评机构信息看这里!

行云管家

等保 等保测评

谷歌地图代理 | 构建未来服务:谷歌地图API深度集成你的应用与平台

Cloud Ace 云一

10亿订单如何分库分表?

电子尖叫食人鱼

Java 数据库

Vue3 的强势崛起,低代码搭车铺路?

秃头小帅oi

近700名开发者齐聚HDD赋能交流会,以代码共建共享鸿蒙新世界

最新动态

事件架构和事件流_语言 & 开发_Jan Stenberg_InfoQ精选文章