AxonFramework簡介

Axon是一個輕量級框架震束,能夠幫助開發(fā)者通過在架構層面構建可擴展和可伸縮的應用。(注:以DDD面向領域驅動設計為基礎的CQRS框架)

Axon Framework背景当犯、發(fā)展簡史

隨著時間的發(fā)展垢村,軟件的需求也在不斷增長。公司都希望自己的(web)應用程序和自身業(yè)務共同發(fā)展嚎卫。這就意味著不僅僅是工程和代碼變得更復雜嘉栓,也意味著功能不斷地新增、更改和移除。它令人沮喪的是,一個看似易于實現(xiàn)的功能侵佃,卻要求開發(fā)團隊改動整個應用程 序麻昼。此外,如今的web程序的目標是針對潛在的數(shù)十億用戶趣钱,這便使可伸縮性成了必要的條件涌献。

雖然有很多的應用和框架圍繞著可擴展性問題進行處理,例如GigaSpaces(類似Microsoft Azure) 和 Terracotta(分布式緩存線性擴展平臺),它們都存在著一個根本的缺陷首有。他們通過要求開發(fā)人員在開發(fā)應用時燕垃,使用分層體系架構,來試圖解決可擴展性問題井联。在某些情況下卜壕,他們甚至會阻止或嚴格限制使用一個真正的領域模型,強迫所有領域邏輯都放到服務中烙常。雖然可以很快地構建一個應用程序轴捎,最終,這種做法將導致復雜性的增加和開發(fā)速度減慢蚕脏。

命令查詢職責分離(CQRS)模式解決了這些問題侦副,大幅改變了應用程序的架構。CQRS不是將分離的邏輯分到不同的層 ,邏輯的分離是以改變應用程序的狀態(tài)或查詢?yōu)橐罁?jù)驼鞭。這意味著秦驯,執(zhí)行命令(行為有可能更改應用程序的狀態(tài))和查詢應用程序數(shù)據(jù)是由不同的組件執(zhí)行。這種分離事實上最重要的原因是挣棕,他們各自有不同的技術和非技術的要求译隘。當命令執(zhí)行后,查詢組件利用事件同步或異步地進行更新洛心。該更新機制通過事件來完成固耘,正是這種架構如此的可擴展,可伸縮词身,最終會更易于維護厅目。

注意
一個完整的CQRS解釋不在本文的范圍之內。如果你想了解更多關于CQRS的信息, 請訪問 Axon Framework的網(wǎng)站: www.axonframework.org法严。它包含了背景知識的鏈接璧瞬。

由于CQRS與主導當今軟件局面的分層架構有著根本上的不同,開發(fā)人員試圖找到自己實現(xiàn)這個架構的方式渐夸,但往往會掉入各種陷阱嗤锉。這就是了Axon Framework 產(chǎn)生的原因:幫助開發(fā)人員實現(xiàn)CQRS,并讓他們只專注于業(yè)務邏輯墓塌。

Axon是什么?

Axon Framework 通過支持開發(fā)者應用命令查詢職責分離(CQRS)架構模式,來幫助構建可伸縮瘟忱、可擴展和可維護的應用程序奥额。它通過提供最重要的構建塊的實現(xiàn)來實現(xiàn),如:聚合访诱、倉儲以及事件總線(事件的調度機制)垫挨。此外,Axon提供了對注解(annotation)的支持,它允許你構建聚合和事件監(jiān)聽器而不用將你的代碼捆綁到Axon特有的邏輯触菜。這使你能夠專注于業(yè)務邏輯, 而不是數(shù)據(jù)傳輸(the plumbing)九榔,并幫助你使代碼更容易隔離測試。

Axon不會試圖以任何方式隱藏CQRS架構或任何組件涡相。因此哲泊,根據(jù)團隊規(guī)模,明智的選擇是催蝗,每 個團隊中有一個或多個對CQRS有著透徹了解的開發(fā)人員切威。不管怎么樣,Axon幫助保證把事件交付給正確的事件監(jiān)聽器,并按正確的順序并發(fā)處理它們丙号。這些多線程問題通常很難處理,導致難以跟蹤Bug先朦、應用程序完全失去響應。當你的時間緊迫,你可能甚至不想去關心這些問 題犬缨。Axon的代碼是經(jīng)過完全測試的,以防止這些類型錯誤的出現(xiàn)喳魏。

Axon Framework由多個模塊(jar)組成,這些模塊提供工具和組件來構建可伸縮的基礎設施怀薛。Axon核心模塊為不同的組件提供了基本的API刺彩,并為單JVM的應用程序解決方案提供了簡單實現(xiàn)。其他模塊提供專業(yè)的組件乾戏,來解決可伸縮性和高性能的問題。

何時使用Axon?

并不是每一個應用程序都會從Axon中獲益三热。簡單的CRUD (Create, Read, Update, Delete) 應用程序鼓择、沒有橫向擴展預期的應用程序,可能無法從CQRS或Axon中受益就漾。

具有以下一個或多個特點的應用程序可能會從CQRS和Axon中受益:

  • 在相當長的一段時間內可能會擴展新的功能呐能。例如,一個網(wǎng)上商店可能初期僅僅是一 個訂單進度跟蹤系統(tǒng)抑堡。后期摆出,可能會擴展到對庫存信息的管理,確保物品售出后及時的更新 庫存首妖。隨后偎漫,財務人員可能需要銷售的財務統(tǒng)計數(shù)據(jù)等等。雖然很難預測軟件項目未來會如何發(fā)展有缆,但是大多數(shù)類型的應用程序都清楚地呈現(xiàn)為這樣象踊。

  • 應用程序有一個比較高的讀寫比温亲,這意味著數(shù)據(jù)只寫幾次,但卻要讀很多次杯矩。由于查 詢的數(shù)據(jù)源與用于命令驗證的數(shù)據(jù)源不同栈虚,因此才有可能對數(shù)據(jù)源的快速查詢提供優(yōu) 化。重復數(shù)據(jù)不再是一個問題史隆,因為當數(shù)據(jù)改變時魂务,事件也會被發(fā)布。

  • 應用程序需要不同格式的展示數(shù)據(jù)泌射,許多應用程序目前不僅僅只停留在顯示數(shù)據(jù)到網(wǎng) 頁上粘姜。 某些應用程序,例如,每月郵件通知所發(fā)生的與用戶有關的變化,搜索引擎也是一個例子魄幕。他們使用相同的應用程序數(shù)據(jù),但在某種意義上這是優(yōu)化的快速搜索相艇。 報表工具隨著時間的變化匯總信息,這同樣是同一數(shù)據(jù)的不同格式纯陨。使用Axon坛芽,每個數(shù)據(jù)源都可以彼此獨立地實時或定時更新。

  • 當應用程序面對不同的受眾翼抠,清晰地隔離組件時咙轩,它也能從Axon中獲益。例如網(wǎng)上商 店阴颖。員工會在網(wǎng)站上更新產(chǎn)品信息和可用性活喊,同時客戶可以下單和查詢他們的訂單狀 態(tài)。通過Axon量愧,這些組件可以部署在不同的服務器上钾菊,并使用不同的策略進行擴展。 通過事件機制偎肃,Axon將分發(fā)事件到部署在不同服務器上的訂閱組件煞烫,使其保持最新的 數(shù)據(jù)狀態(tài)。

  • 與其他應用程序集成可能是繁瑣的工作累颂。嚴格使用命令和事件定義應用程序的API滞详, 會使它更容易與外部應用程序集成。任何應用程序都可以發(fā)送命令或監(jiān)聽應用程序生 成的事件紊馏。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末料饥,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子朱监,更是在濱河造成了極大的恐慌岸啡,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赫编,死亡現(xiàn)場離奇詭異篇裁,居然都是意外死亡,警方通過查閱死者的電腦和手機赡若,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門达布,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逾冬,“玉大人,你說我怎么就攤上這事身腻〔梗” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵嘀趟,是天一觀的道長。 經(jīng)常有香客問我她按,道長牛隅,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任媒佣,我火速辦了婚禮,結果婚禮上陵刹,老公的妹妹穿的比我還像新娘默伍。我一直安慰自己衰琐,他們只是感情好也糊,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著羡宙,像睡著了一般狸剃。 火紅的嫁衣襯著肌膚如雪悄窃。 梳的紋絲不亂的頭發(fā)上倚搬,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音,去河邊找鬼斗搞。 笑死,一個胖子當著我的面吹牛慷妙,可吹牛的內容都是我干的僻焚。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼膝擂,長吁一口氣:“原來是場噩夢啊……” “哼虑啤!你這毒婦竟也來了隙弛?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤狞山,失蹤者是張志新(化名)和其女友劉穎全闷,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體萍启,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡总珠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了勘纯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片局服。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖驳遵,靈堂內的尸體忽然破棺而出淫奔,到底是詐尸還是另有隱情,我是刑警寧澤堤结,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布唆迁,位于F島的核電站,受9級特大地震影響霍殴,放射性物質發(fā)生泄漏媒惕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一来庭、第九天 我趴在偏房一處隱蔽的房頂上張望妒蔚。 院中可真熱鬧,春花似錦月弛、人聲如沸肴盏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽菜皂。三九已至,卻和暖如春厉萝,著一層夾襖步出監(jiān)牢的瞬間恍飘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工谴垫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留章母,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓翩剪,卻偏偏與公主長得像乳怎,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子前弯,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內容