写点什么

事件架构和事件流

  • 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:003307
用户头像

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

关注

评论

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

【YashanDB知识库】YCM数据库托管遇到的问题

YashanDB

数据库

【YashanDB知识库】YashanDB查询时间与实际时间默认少8小时

YashanDB

数据库 yashandb

首批认证!Aloudata AIR 通过中国信通院“数据虚拟化平台技术要求”评测

Aloudata

数据分析 数据管理 数据集成 数据编织 数据虚拟化技术

【YashanDB知识库】Mybatis-Plus适配崖山配置

YashanDB

数据库 yashandb

AI口语陪练APP的测试

北京木奇移动技术有限公司

软件外包公司 AI口语练习 AI英语学习

苹果电脑系统维护工具TinkerTool System 9 for mac激活版

小玖_苹果Mac软件

百度APP iOS端磁盘优化实践(上)

百度Geek说

百度

百度商家智能体年度回顾:帮助万千商家省人、省钱、省心

新消费日报

专业矢量绘图设计软件Sketch for mac中文激活版

小玖_苹果Mac软件

视频下载工具Downie 4 for Mac中文激活版

小玖_苹果Mac软件

多协议远程管理软件Termius for Mac激活版

小玖_苹果Mac软件

【YashanDB知识库】WAS配置YashanDB JDBC连接

YashanDB

数据库 yashandb

【YashanDB知识库】YashanDB安全设置示例

YashanDB

数据库 yashandb

JustStream PRO for Mac(投屏软件)v2.12激活版

小玖_苹果Mac软件

Java开发分析工具JProfiler 14 for Mac激活版

小玖_苹果Mac软件

动态壁纸制作工具Dynaper - Dynamic Wallpapers for mac激活版

小玖_苹果Mac软件

首个“非遗版春节”怎么过?扫描全能王发起新春扫描活动

合合技术团队

人工智能 AI 算法

腾讯面试:那些腾讯面试过的MySQL场景问题

王中阳Go

腾讯 MySQL 高可用 面试问题 数据库、

【YashanDB知识库】YCM和YMP密码重置

YashanDB

yashandb

数据要素价值持续释放,提供新质生产力核心要素

芯盾时代

数据安全 新质生产力

优秀的markdown写作软件Ulysses for Mac 中文激活版

小玖_苹果Mac软件

电子书制作软件Jutoh for Mac中文注册版

小玖_苹果Mac软件

客户案例|某车企建设统一监控平台实践

腾讯云可观测平台

Prometheus 日志服务 腾讯云可观测平台

【YashanDB知识库】Yasldr错误处理

YashanDB

数据库 yashandb

Karmada 完成安全审计!项目成熟度持续升级

华为云原生团队

云计算 容器 云原生

低代码平台:快速搭建与优化MES系统,提升生产效率

万界星空科技

低代码 低代码平台 mes 万界星空科技mes 万界星空科技低代码平台

矢量图形设计软件Illustrator 2024 for Mac(AI2024)中文激活版

小玖_苹果Mac软件

电脑风扇控制软件Macs Fan Control Pro for mac中文激活版

小玖_苹果Mac软件

人工智能丨AI助力软件测试:从小红书与DeepSeek合作看未来发展

测试人

软件测试

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