領(lǐng)域驅(qū)動設(shè)計和消息傳遞的融合
時間:2022-03-03 21:54:01 | 來源:行業(yè)動態(tài)
時間:2022-03-03 21:54:01 來源:行業(yè)動態(tài)
DDD不僅可以幫助企業(yè)敏捷地編寫高質(zhì)量的代碼,還能使所編寫的軟件能靈活應(yīng)對業(yè)務(wù)變化。 當(dāng)使用消息傳遞技術(shù)在清晰整潔和定義良好的限界上下文之間進行通信時,就可以消除時序上的耦合,結(jié)合DDD就能構(gòu)建可以自治的微服務(wù)。
Unisys首席應(yīng)用架構(gòu)師、全球DDD社區(qū)領(lǐng)袖Indu Alagarsamy在分享中認(rèn)為,DDD與作為軟件技術(shù)的消息傳遞進行融合,也就是實現(xiàn)領(lǐng)域驅(qū)動設(shè)計與事件驅(qū)動架構(gòu)相結(jié)合,構(gòu)建可以隨著業(yè)務(wù)變化而擴展的可靠系統(tǒng)。
Indu Alagarsamy還以電商場景進行了詳細(xì)說明,銷售、庫存、運輸?shù)炔煌块T的員工使用的領(lǐng)域語言不同,領(lǐng)域驅(qū)動設(shè)計引入了限界上下文的概念。我們可以根據(jù)團隊或部門拆分模型,進行上下文的劃分和設(shè)計。這時上下文之間需要能夠以一種自主且可靠的方式進行通信,這是事件驅(qū)動架構(gòu)很好地與領(lǐng)域驅(qū)動設(shè)計結(jié)合的地方。
命令和事件都是消息,但是通過明確區(qū)分什么是命令、什么是事件,可以幫助我們更好地設(shè)計軟件。然而如何設(shè)計一個具有事件、消息和命令的系統(tǒng)呢?這就需要引入事件風(fēng)暴。事件風(fēng)暴是一種了解業(yè)務(wù)流程的協(xié)作可視化方式,在討論流程中的業(yè)務(wù)行為時,使用事件風(fēng)暴,程序員和架構(gòu)師能夠找出信息流。
我們要做的是編寫符合業(yè)務(wù)需求的正確軟件,了解重要的業(yè)務(wù)行為有助于編寫正確的代碼,并使軟件與業(yè)務(wù)保持一致,事件和消息驅(qū)動架構(gòu)可以幫助我們擺脫時間耦合,使軟件組件具有自主性。隨著對領(lǐng)域相關(guān)信息的了解越來越多,你可以不斷的改進模型,使其變的更好。如果你想使模型中的上下文自治,可以使用事件在這些不同的限界上下文之間進行通信。Indu Alagarsamy說。
同時,Indu Alagarsamy認(rèn)為,微服務(wù)的本質(zhì)在于服務(wù)需要自治,并可以根據(jù)數(shù)據(jù)做出決定,不需要不停地詢問其他上下文。因此,事件作為在相同的限界上下文中進行通信的機制,變得非常重要。