掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
微服務(wù)架構(gòu)是一種既定模式,用于構(gòu)建由松散耦合模塊組成的復(fù)雜系統(tǒng)。它是過去幾年中最受關(guān)注的軟件架構(gòu)趨勢之一。將一個大型的、相互依賴的系統(tǒng)分解成許多小的、輕量級的模塊,這似乎是一個非常簡單的想法,這些模塊可以使軟件管理更容易。

我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、成都做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、贊皇ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的贊皇網(wǎng)站制作公司
這里有一個要點:在將整體應(yīng)用程序分解為小模塊之后,應(yīng)該如何以有意義的方式將它們連接在一起?不幸的是,這個問題沒有單一的正確答案,但通常情況下,有幾種方法取決于應(yīng)用程序和個別用例。
微服務(wù)中使用的兩種常見協(xié)議是使用資源 API 的 HTTP 請求/響應(yīng)和跨多個微服務(wù)通信更新時的輕量級異步消息傳遞。讓我們探索這些協(xié)議。
微服務(wù)可以通過多種不同的通信模式進行通信,每種模式都針對不同的用例。這些類型的通信主要可以分為兩個維度。第一個維度定義通信協(xié)議是同步的還是異步的:
同步與異步通信第二個維度定義了通信是有一個接收者還是多個接收者:
微服務(wù)之間最常見的通信類型是在調(diào)用 REST API 時使用同步協(xié)議(如 HTTP/HTTPS)的單接收器通信。微服務(wù)通常使用消息協(xié)議在微服務(wù)之間進行異步通信。這種異步通信可能涉及單個接收器或多個接收器,具體取決于應(yīng)用程序的需要。
表述性狀態(tài)傳輸 (REST) 是一種流行的請求和響應(yīng)通信架構(gòu)風(fēng)格,它可以作為同步通信類型的一個很好的例子。這是基于 HTTP 協(xié)議,包含 GET、POST、PUT、DELETE 等動詞。在這種通信模式中,調(diào)用者等待服務(wù)器的響應(yīng)。
圖 1:基于 REST API 的通信
REST 是服務(wù)間通信最常用的架構(gòu)風(fēng)格,但在涉及微服務(wù)架構(gòu)時,嚴重依賴這種類型的通信會產(chǎn)生一些負面影響:
消息在遵循異步協(xié)議的微服務(wù)架構(gòu)中被廣泛使用。在此模式中,服務(wù)發(fā)送消息而不等待響應(yīng),并且一個或多個服務(wù)異步處理消息。異步消息傳遞提供了許多好處,但也帶來了冪等性、消息排序、毒消息處理和消息代理的復(fù)雜性等挑戰(zhàn),這些消息代理必須具有高可用性。
重要的是要注意異步 I/O 和異步協(xié)議之間的區(qū)別。異步 I/O意味著調(diào)用線程在執(zhí)行 I/O 操作時不會被阻塞。這是軟件設(shè)計方面的一個實現(xiàn)細節(jié)。異步協(xié)議意味著發(fā)送方不等待響應(yīng)。
圖 2:基于消息的通信
異步消息傳遞與同步消息傳遞相比有一些優(yōu)勢:
盡管異步消息傳遞有很多優(yōu)點,但它也有一些折衷:
異步消息傳遞已經(jīng)成熟為多種消息傳遞模式。這些模式適用于分布式系統(tǒng)的多個部分必須以可靠和可擴展的方式相互通信的場景。讓我們來看看其中的一些模式。
發(fā)布/訂閱模式意味著發(fā)布者將消息發(fā)送到消息代理上的通道。一個或多個訂閱者訂閱頻道并以異步方式從頻道接收消息。當(dāng)微服務(wù)需要向大量消費者廣播信息時,此模式很有用。
圖 3:發(fā)布/訂閱模式
發(fā)布/訂閱模式具有以下優(yōu)點:
使用這種模式有一些缺點:
在基于隊列的模式中,發(fā)送方將消息發(fā)布到包含接收方所需數(shù)據(jù)的隊列。隊列充當(dāng)緩沖區(qū),存儲消息直到它被接收者檢索。接收者從隊列中檢索消息并按照自己的節(jié)奏處理它們。此模式對于使用容易過載的服務(wù)的任何應(yīng)用程序都很有用。
圖 4:基于隊列的模式
基于隊列的模式有以下優(yōu)點:
使用這種模式有一些缺點:
異步通信通常通過消息代理進行管理。在為異步通信選擇正確的消息傳遞基礎(chǔ)設(shè)施時,需要考慮一些因素:
微服務(wù)越來越成為設(shè)計可擴展和彈性系統(tǒng)的實際方法。微服務(wù)之間的所有通信都沒有單一的方法。RESTful API 提供請求-響應(yīng)模型以在服務(wù)之間進行通信,而異步消息傳遞則在不同服務(wù)之間提供更具可擴展性的生產(chǎn)者-消費者關(guān)系。盡管微服務(wù)可以通過消息傳遞和 REST API 相互通信,但消息傳遞架構(gòu)是提高敏捷性和快速移動的理想選擇。它們常見于使用微服務(wù)的現(xiàn)代應(yīng)用程序或任何具有解耦組件的應(yīng)用程序中。
在為您的微服務(wù)選擇合適的通信方式時,請務(wù)必將消費者的需求與一種或多種通信類型相匹配,從而為您的服務(wù)提供強大的接口。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流