前言

在上一篇文章中,我們說到了異步消息通訊,下面這篇文章呢,大部分內(nèi)容是翻譯來自于這篇微軟的文章,所以其內(nèi)容還是具有一定的理論指導意義的。

當我們跨多個微服務進行內(nèi)部通訊的時候,異步消息和事件驅(qū)動至關(guān)重要。我們可能需要在不同的邊界上下文中進行域模型的更新。
我們舉個例子,比如 eShop 這個項目中,Ording 服務在下單的時候要和 Catelog 服務進行通訊進行庫存的扣減操作,這個時候我們就需要一種方式來做這個事情,并且能夠在發(fā)生故障的時候也能正常工作,也就說需要進行基于異步消息和最終一致性的通訊方式。

當使用基于消息的通訊方式的時候,進程中是采用的異步的方式通訊的??蛻舳讼蚰硞€服務發(fā)送消息,如果這個消息需要回復,那么另一個服務會向客戶端發(fā)送一個不同的消息,并且客戶端會認為該消息不會立即被接收到,并且不存在響應,這就是一種基于消息的通訊方式。

消息由標題(name 或者 title)和內(nèi)容(Body)共同構(gòu)成。消息通常會通過一些異步協(xié)議進行發(fā)送(如AMQP,kafka協(xié)議)。

異步消息通訊有兩種:一種是單接收者(端到端),另外一種是多接收者(廣播)。

如果有同學對消息隊列比較了解的話,這就是消息隊列的兩種典型使用方式。

基于消息的單接收者

網(wǎng)友評論