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 SourcingCQRS 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