axon框架創始人談微服務與事件驅動

banq發表於2018-09-28
Allard Buijze在最近的阿姆斯特丹事件驅動微服務會議上的演講中指出,Axon Framework的應用正在快速增長,最近下載量達到100萬次,他在會上描述了Axon的基本概念,歷史和未來,這是一個系統框架,基於DDD,事件溯源和CQRS

Axon Framework是JVM平臺的開源產品,由Allard Buijze於2009年創立。2017年7月,成立了一家獨立公司AxonIQ,專門與Axon產品合作。

Buijze首先指出事件非常特殊; 他們是描述了發生的事情,並且是系統歷史的一部分。我們可以根據事件找到過去的問題,我們可以設定對未來的期望。使用事件推動事件溯源 ,不僅僅把事件用於大資料處理或監控等次要功能,而是作為應用程式中的事實來源(替代資料庫)。

Buijze還指出,服務消費使用事件的模式非常重要 - 這在事件溯源中至關重要。如果您的服務是根據內部資料而不是根據事件做出決策,那麼您就無法實現完整的事件溯源。雖然你有一個事件驅動架構,但卻無法保證事件是服務中發生事情的真實表示。

有許多基於實體服務的微服務架構(一個總服務呼叫許多微服務),他將這種設計技術稱為名詞驅動設計,想法是找到描述新系統的文件中的所有名詞,這些名詞對應一個服務,所有動詞都成為API呼叫。這種技術可能會產生分散式的大泥球,所有服務都相互依賴。如果一個服務發生故障,整個系統將無法使用。

他希望從單體開始而不是從微服務開始新系統,這樣更易於部署和重構,雖然難以擴充套件,他指出我們不應該將一塊好的巨石單體與一大塊泥球混淆,要確保內部有明確定義的結構。隨著時間的推移,當有太多人不得不使用程式碼的相同部分時,則需要提取一些元件,最好不要更改其他部分。隨著時間的推移和需求的增加,越來越多的元件可以搬出。

為了幫助提取元件,位置透明度非常重要,Buijze指出Axon的主要特徵不是CQRS,它是應用程式內部元件之間的位置透明性。如果兩個元件不知道它們各自的位置,則可以更改該位置。這也意味著您不必知道特定操作在哪個服務中 - 您只需傳送訊息並找到其目的地。

元件既不應該知道也不應該對它與之互動的元件的位置做出任何假設
事件很重要,但Buijze指出,元件有理由傳送三類不同訊息,並強調事件與訊息不同:

1. 事件是,當發生了事件,它們被分發給所有處理器,不返回任何結果。

2.命令是指你希望系統執行某些操作的意圖。它們被路由到某個處理器並返回結果。

3.查詢是指你想知道的事情,並返回結果。

為了支援位置透明度的承諾並使用這些不同型別的訊息,AxonHub於2017年在去年的會議上釋出。Buijze將其描述為一種訊息傳遞平臺,它可以瞭解不同訊息的型別,但不是訊息內容,並且能夠將不同型別的訊息路由到正確的目的地。他指出,即使在這種情況下管道知道訊息型別,這些集中式管道的思想也是符合智慧終端和啞管道的微服務通訊定義。

展望未來,Buijze認為微服務將繼續發展下去,他還認為Axon元件工作方式和通訊方式在無伺服器環境中非常有用。他們朝這個方向邁出的第一步將是提供SaaS解決方案,但他也指出他們需要學習更多知識,並且還需要做更多工作才能有效地使用無伺服器環境。

今年早些時候,Axon團隊釋出了AxonDB,這是一個專門建造的事件儲存。該商店被AxonHub用於儲存事件,因此他們決定將這兩種產品合併到會議期間宣佈的Axon Server中。該伺服器既可用作開源,也可用作企業版。

下一版Axon 版本4的工作正在進行中,最近釋出了第一個里程碑。產品釋出計劃於10月18日開始。

原文

相關文章