写点什么

事件架构和事件流

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

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

关注

评论

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

进程,线程,协程 - 你了解多少?

蛋先生DX

线程 操作系统 进程 协程 上下文

如何评估文档管理工具?10款软件对比指南

爱吃小舅的鱼

文档管理工具

MT7915 in Action: Driving Seamless Wireless Solutions

wallyslilly

MT7915

免费办公室文档管理软件有哪些?精选9大软件

爱吃小舅的鱼

文档管理软件

“DataOps+大模型”——数造科技在大模型时代的数据开发创新探索

数造万象

人工智能 AI DataOps 大模型 #SQL

VMware Fusion Pro 13 for Mac(VM虚拟机软件)

Mac相关知识分享

Lightroom Classic 2021 for mac(LRC 2021中文直装版)

Mac相关知识分享

After Effects 2020 for Mac(ae 2020 中文直装版)

Mac相关知识分享

AE2020 中文版

6个最佳核心应用仪表盘构建工具

NocoBase

数据挖掘 数据分析 数据可视化 仪表盘

初识VPC网络的能力

天翼云开发者社区

云计算 网络安全 VPC

人工智能的发展趋势

天津汇柏科技有限公司

人工智能

如何选择合适的文档管理系统?8个方案对比

爱吃小舅的鱼

文档管理工具

IPQ4019 vs. IPQ5018-Comprehensive Comparison of WiFi Solutions

wifi6-yiyi

wifi wifi5

数字卫星:「超实时仿真」实现处理器性能5倍提升

DevOps和数字孪生

数字孪生

4K Video Downloader Plus Pro v1.9.2激活版 专业版在线视频下载器

iMac小白

想给MAC电脑换个壁纸?苹果电脑各类高清壁纸资源分享

Rose

解析淘宝商品评论API返回值中的评价热度与关注度

技术冰糖葫芦

API 接口 API 文档 API 测试 API 性能测试

律师必备的文档管理工具有哪些?10个推荐

爱吃小舅的鱼

文档管理工具

1024大赛来袭,工业智能体开发等你来挑战!

Openlab_cosmoplat

人工智能

HyperMesh基础教程:概述与有限元分析简介

智造软件

建模 仿真软件 Hypermesh 有限元技术 网格划分

从Naive RAG到Agentic RAG:基于Milvus构建Agentic RAG

Zilliz

AI Milvus Zilliz 向量数据库 rag

学习CST入门教程的好去处:CST基础与中文教程资源

思茂信息

初学者 cst操作

IDC《中国网络安全软件技术发展路线图,2024》报告身份管理&移动安全推荐厂商

芯盾时代

身份安全 移动安全

互联网大厂Java高频面试题整理(2024最新含答案)

架构师之道

Java 面试

文档管理系统怎么选?2024推荐的8款工具

爱吃小舅的鱼

文档管理系统

数据结构 - 栈

EquatorCoco

数据结构

Typora for Mac(Markdown文本编辑器)中文版

Mac相关知识分享

Mac软件

10分钟使用豆包MarsCode 帮我搭建一套后台管理系统

豆包MarsCode

人工智能 程序员 AI

企业如何确保文档安全?9款非云端文档管理工具助力

爱吃小舅的鱼

文档管理工具

Mac苹果电脑微信多开助手,拥有防撤回和微信多开的功能

你的猪会飞吗

微信多开和防撤回工具 微信多开助手 mac微信多开

止步阿里一面。。。

王中阳Go

Go 面试 后端

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