在設計和建立(事件驅動的)微服務系統時,ddd和cqrs概念一章中描述的概念非常適用。在本章中,我們將明確列出在此類環境中應用axon的幾種常見策略。
在axoniq,我們相信系統會逐漸發展為微服務,而不是嘗試從頭開始構建微服務系統。主要原因是探索合理的上下文邊界(請參閱「邊界上下文」)和模型需要時間。與在整體系統中相比,在分布式系統中更改這些邊界要困難得多。
axon利用元件的分離並在元件之間使用顯式訊息傳遞,這使這些元件位置透明。與使用服務發現不同,axon用於訊息傳遞的方法完全不需要元件知道訊息的目的地。它們會自動路由到乙個廣告元件,以宣傳處理此類訊息的功能。這使得這些系統比「常規」基於微服務的系統更靈活地進行更改。
在微服務環境中應用axon有不同的策略。可以在系統級別採用axon哲學,並使用axon構建所有服務。但是,僅在單個應用程式/服務中應用axon時,它也已經很有用。最後,我們還將討論在多語言環境中使用axon時的特定策略。為此,axon在構建時就考慮了整合。
在系統級別使用axon時,這意味著有多個服務在執行axon(或相容的api),乙個服務可以最大程度地使用訊息傳遞概念。應用程式可以簡單地利用不同的訊息匯流排來傳送和接收來自其他元件的訊息。在更改元件的部署策略時,這使系統變得非常靈活。
在現有的微服務系統中構建單個基於axon的服務時,您可能希望使用「傳統」的rest端點公開您的api。在這種情況下,基於axon的應用程式將需要乙個小的api層,該層將rest呼叫轉換為命令,然後將其分派到內部。但是請務必考慮到,請求可能不會被一致地路由,並且用於同一聚合的命令可能會被路由到不同的例項。
如果基於axon的服務已部署了多個例項,則仍可以使用匯流排的分布式實現來受益,以允許這些例項在它們之間適當地平衡訊息處理。
實際上,許多基於微服務的系統都在多語言環境中執行。不同的服務將在不同的技術堆疊上執行。在這些環境中,確保適當地保護上下文邊界並在適用的情況下提供體面的反腐層更為重要。
所有使用過的技術堆疊都不太可能遵循與axon應用程式相同的基於訊息傳遞的方法。但是,這並不意味著需要放棄這些概念。您仍然可以從顯式訊息傳遞的許多優點中受益。在這樣的環境中,可以將反腐層實現為處理命令,事件和查詢,並執行對外部服務的其他型別的呼叫(例如rest呼叫)的元件。這樣,使用顯式訊息傳遞的元件就不必擔心輪詢外部服務是否發生更改,也不必擔心由不同型別的api引起的技術挑戰。
axon支援不同型別的聯結器,這些聯結器允許將事件(在某些情況下,還包括其他訊息型別)發布到第三方訊息**。預設情況下,axon將對這些外部事件的格式進行假設,但始終可以覆蓋它們。閱讀有關這些特定擴充套件的章節以獲取更多詳細資訊。
測試驅動開發 實用指南2
第八章 合理劃分每層,在gui中不包含邏輯 對gui的測試使用httpunit或qtp可能效果更好 第九章 專案描述 拿到乙個專案,先按user case對需求進行分析,對於每個user case劃分任務,針對每個任務設計測試。比如增加使用者在j2ee中分為 頁面 useradd.jsp,users...
C標準庫參考指南(2)ctype h
2.ctype.h 字元類標頭檔案用於測試字元以及轉換字元。乙個引用另乙個字元的控制字元,是不屬於可列印字符集的。在ascii字符集中,0x0到0x1f的所有字元以及0x7f 刪除鍵 是控制字元,可列印字元從0x20 空格 到0x7e 波浪號 函式 isalnum isalpha iscntrl i...
Apache mina2 使用者指南(七)事件處理器
處理 mina 所觸發 i o 事件。這一介面時在過濾器鏈最後完成的所有活動的中心。iohandler 具有以下方法 sessioncreated 事件 會話建立事件在乙個新的連線被建立時觸發。對於 tcp 來說這是連線接受的結果,而對於 udp 這個在接收到乙個 udp 包時產生。這一方法可以被用...