写点什么

Jonas Boner 谈 Events 将如何重塑现代系统

  • 2017-11-16
  • 本文字数:898 字

    阅读完需:约 3 分钟

Lightbend 的创始人兼首席技术官 Jonas Boner 在最近的 Reactive Summit 2017 会议上做了主题发言,谈到了事件驱动型服务(event driven services)、以及事件驱动架构(EDA)和事件流处理(ESP)技术将会给基于分布式系统的现代应用程序的设计带来哪些帮助。

Boner 的演讲一开始以 Tuxedo Terracotta 和多阶段的事件驱动构架 ( SEDA ) 为例,讲述了事件驱动系统历史演变的相关背景。了解事件驱动的本质很重要,因为事件代表着事实。

事件给了系统服务自主性,并帮助系统降低了风险。它们还降低了系统的耦合性(loose coupling),增加了系统的可伸缩性、弹性和可追溯性。事件驱动的服务基本上反转了系统中的控制流程,这有助于系统最小化耦合和增加自主性。事件驱动的解决方案更关注于系统的行为而不是系统的结构。

他建议开发人员不要只关注系统中的“领域对象”(Domain Objects),而应关注事件(Events)。他谈到了 Mark Burgess 提出的 Promise Theory ,并通过利用 promise 来使用事件加以界定 Bounded Context(跨边界上下文)。

Boner 还表示,事件使我们能够管理时间,并引用了 Greg Young 的话:

建模事件迫使我们暂时关注系统中正在发生的事情。时间成为系统的关键因素。

事件记录(Event Logging )允许我们通过将事件视为时间快照(snapshot),并且将事件日志作为我们的完整历史记录来建立时间微缩模型。通过重播用于调试、审计和跟踪的历史日志事件,我们就可以恢复到不同时间段的系统状态。这样的话,发生系统故障和进行数据复制时,我们就可以重现当时的状况。

Boner 讨论了事件驱动架构的以下模式:

  • Event Loop
  • Event Stream
  • Event Sourcing
  • CQRS for temporal decoupling (用于临时解耦的 CQRS)
  • Event Stream Processing(事件流处理)

Apache Flink Spark Streaming Kafka Streams Apache Gearpump Apache Beam 这样的事件流处理技术可以用来实现这些设计模式。

查看英文原文 Jonas Boner on How Events Are Reshaping Modern Systems


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-11-16 18:002045

评论

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

Sentinel的整体工作流程分析

互联网架构师小马

Sentinel 是如何实现资源指标数据统计的

互联网架构师小马

Java sentinel

软件测试|一文教你flask路由配置

霍格沃兹测试开发学社

微服务高并发:流量效果控制,经典限流算法

互联网架构师小马

镭速用心打造,新版本发布,为用户实现更多可能

镭速

Nop平台为什么是一个独一无二的开源软件开发平台

canonical

开源 低代码 开发平台

虚拟机安装Ubuntu16并安装Ros(Kinetic)

Studying_swz

6 月 优质更文活动

责任链模式在 Sentinel 中的应用

互联网架构师小马

INFINI Labs 产品更新 | Easysearch 新增跨集群复制 (CCR)、支持快照生命周期管理 (SLM) 功能等

极限实验室

搜索引擎 console Gateway agent easysearch

软件测试|Python绘图神器——Matplotlib使用教程(一)

霍格沃兹测试开发学社

ChatGPT教我用200行代码写一个简版Vue框架 - OpenTiny

Kagol

vue.js 前端 ChatGPT

限流功能实现原理

互联网架构师小马

MegaOS重磅亮相新华三领航者峰会,助推百行百业全数字化

新消费日报

Java SPI 在 Sentinel 中是如何应用的?

互联网架构师小马

Java sentinel spi

一文快速了解微服务架构

穿过生命散发芬芳

微服务 6 月 优质更文活动

2023-06-09:什么是Redis事务?原理是什么?

福大大架构师每日一题

redis 福大大

android项目问题总结

Studying_swz

6 月 优质更文活动

pytorch实现前馈神经网络实验(手动实现)

Studying_swz

6 月 优质更文活动

软件测试|教你轻松解决pip安装下载超时问题

霍格沃兹测试开发学社

头部大模型公司进京赶考,向量数据库成为应考神器

Zilliz

Milvus Zilliz AIGC 向量数据库 zillizcloud

C语言编程—强制类型转换

芯动大师

C语言 强制类型转换 6 月 优质更文活动

STM32读取BH1750光照强度数据打印到串口

DS小龙哥

6 月 优质更文活动

2024深圳电子展

AIOTE智博会

电子展

H5 单双引号问题

Andy

阿里内部人手一份的Spring Cloud Alibaba手册

小小怪下士

Java 程序员 SpringCloud springcloudAlibaba

请解释如何实现算法 PERMUTE-BY-SORTING,以处理两个或更多优先级相同的情形。也就是说,即使有两个或更多优先级相同,你的算法也应该产生一个均匀随机排列。

福大大架构师每日一题

福大大 ChatGPT

精进:如何跳出疯狂的忙碌

老张

个人提升 如何解决问题 思维逻辑

Jonas Boner谈Events将如何重塑现代系统_语言 & 开发_Srini Penchikala_InfoQ精选文章