写点什么

如何选取事件架构

  • 2017-08-29
  • 本文字数:1109 字

    阅读完需:约 4 分钟

如果你要设计一个分布式系统,它可能是基于微服务的,并且你在考虑采用事件架构(Event Architecture),那么目前存在多种的模型和技术可供使用。 David Dawson 近期在的博客帖子中介绍了 [多种风格类型的事件架构,并指出,非功能性需求是影响架构实现选择的一个主要因素。

Dawson 是一位自由职业的系统架构师,他将事件架构简单地定义为一种基于事件的软件架构。鉴于事件也是数据模型的一部分,因此事件架构也是一种数据架构。他强调指出,事件架构并非定义服务交互方式的一系列技术或特定模型。

分阶段事件驱动架构(SEDA,Staged Event-Driven Architecture)是一种简单并很好确立的模型。SEDA 本质上是一个工作流过程,其中各个组件根据自身的处理情况发出事件去驱动整个过程,而事件通常使用某种消息总线进行传输。Dawson 指出,SEDA 模型的一个重要问题是事件的生存期很短,因而在会在传输或组件离线过程中丢失。因此与其让系统采纳最终一致性,不如实现一种Dawson 所称的“期许一致性”(Hopeful Consistency)。只要所有组件工作正常,系统就是一致的。一旦有组件崩溃,那么最终将会得到不一致的系统,这时必须做手工恢复去回到一致性状态。Dawson 称其为“面向实体的微服务”,并强烈建议不要采纳这种架构。

为重建一致性状态,Dawson 给出的最优解决方案是将事件看作是一种数据,并持久化事件流。这样我们就可以在任一时刻重放(Replay)流以恢复状态,并且借助此得到真正的最终一致性系统。从中我们还可以得到其它一些优点,例如可以对同一事件流给出多个视图。

从Dawson 的经验来看,尽管通常称持久化事件流为“事件溯源”,但是他坚信这并非正确的,因为它不是去重建一个实体的状态,而是对不受限实体集创建视图。鉴于此,他更愿意称其为“类型流处理”(Style Stream Processing)。他认为 Kafka 正是使用了这样的架构。Kafka 客户按流的顺序依次读取事件,但在重放事件时可以从头开始,或是从所需的特定事件处开始。

用 DDD 的术语解释,聚合(aggregate)是处于一致性范畴内的一系列实体。通过对一个聚合的所有更改发出和持久化事件,并通过重放而获取的同一事件而构建同一聚合的状态,我们可以得到经事件溯源的聚合根,Dawson 称其为“真实事件溯源”。Daswon 指出,具有独立单一事件流在重建聚合过程中是非常重要的。对于创建视图等其它一些需求,必须要创建独立的流。

为辅助构建基于事件架构模型的系统,Dawson 创建了 Muon Stack 项目。它是一系列面向消息和事件的软件库和服务,用于构建分布式系统。其中包括了一个事件流 API 客户端,以及一个名为“ Photon ”的事件存储。目前他正致力于构建 Muon Stack 对 Kafka 的接口。

查看英文原文: Selecting an Event Architecture

2017-08-29 19:002990
用户头像

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

关注

评论

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

AI做体育赛事解说员,比赛观看平台开发搭建AI解说升级探究

软件开发-梦幻运营部

内部即时通讯软件,为企业协同办公保驾护航

BeeWorks

私有化部署助力企业信息安全,WorkPlus助您完美替代企微、钉钉、飞书!

BeeWorks

Snagit for mac(屏幕截图工具) 2023.2.4永久激活版

mac

苹果mac Windows软件 屏幕截图软件 Snagit 2023

九月 Web3 游戏报告: 数量增长,巨头入场,用户获取和留存仍存挑战

Footprint Analytics

区块链游戏 NFT Web3 游戏 Web3 Games

IPQ9574, IPQ9554, IPQ4029, IPQ5018-IPQ6010- high-performance multi-core cpu-leading WiFi revolution

wifi6-yiyi

ipq9574

NFTScan 支持非 EVM 公链的 NFT Collection 的认证功能

NFT Research

NFT NFT\ NFTScan

HarmonyOS语言基础类库开发指南上线啦!

HarmonyOS开发者

HarmonyOS

通过 Random 和 UUID 算法实现 JMeter 的随机数生成

Liam

程序员 测试 Jmeter 测试工具 随机数

开放原子开源基金会开源安全委员会九月新增成员单位

开放原子开源基金会

深度学习CV任务的突破与优化

百度开发者中心

人工智能 深度学习 大模型训练

重构AI智慧未来,小度全屋智能生态再进化

新消费日报

流程图如何制作?好用的11款流程图软件盘点!

彭宏豪95

效率 流程图 流程图绘制工具 办公软件 绘图工具

Hyperworks对比其他仿真软件有哪些特色_Hyperworks介绍

智造软件

CAE软件 altair hyperworks

双翻页大屏看书,Mate X5上的华为阅读让你“阅”如纸上

最新动态

OpenHarmony应用全局的UI状态存储:AppStorage

OpenHarmony开发者

OpenHarmony

ABAQUS常用的插件及使用介绍-ABAQUS软件教程

思茂信息

abaqus 有限元仿真 有限元技术

Audio Hijack for Mac(音频录制软件) 4.2.5完整版

mac

苹果mac Windows软件 Audio Hijack 音频录制软件

数字孪生智慧市政三Web3D可视化管理平台

2D3D前端可视化开发

物联网 可视化 智慧城市 数字孪生 智慧市政

低代码系列——可视化编辑器

互联网工科生

低代码 可视化编排

语音识别技术的挑战与机遇再探讨

来自四九城儿

优化模型之”标注错误“

矩视智能

深度学习 机器视觉

MySQL的自增id会用完吗?用完怎么办

互联网工科生

MySQL MySQL自增ID

低代码如何赋能实体经济走向数实融合

力软低代码开发平台

从手动操作到自动化管理,如何实现企业身份业务全面自动化?

Authing

事件驱动 企业管理 Authing 身份自动化

OpenHarmonyMeetup2023深圳站圆满举办

科技热闻

五大场景告诉你,如何把iPaaS运用到实处

RestCloud

数据同步 数据同步工具 ipaas

开源贡献难吗?

字节跳动云原生计算

flink 开源 字节

全球领先的即时通讯厂家,为企业提供卓越沟通解决方案

BeeWorks

语音识别技术的行业应用与发展趋势

来自四九城儿

如何选取事件架构_语言 & 开发_Jan Stenberg_InfoQ精选文章