首先看下這張圖要實現網絡通信,底層要通過TCP的三次握手連接,而我們最熟悉的應該是HTTP協議,那Http是什么呢,是怎樣在不同的計算機上完成數據傳輸的呢,并且有了http為什么還出現了webservice,消息隊列,RPC等其他協議呢。
1.Http
http 譯為超文本傳輸協議,用于分布式,協作式超媒體信息系統的應用協議,它屬于是OSI參考模型中應用層,并且是建立在傳輸層上(TCP)協議之上的一種應用。
http 有以下特點
http協議支持客戶端/服務端模式,也是一種請求/響應模式的協議。
簡單快速:客戶向服務器請求服務時,只需傳送請求方法和路徑。請求方法常用的有GET、HEAD、POST。
HTTP是獨立于媒體的:HTTP允許傳輸任意類型的數據對象。客戶端和服務器都需要使用適當的MIME類型指定內容類型。
無連接:HTTP客戶端(瀏覽器)發起HTTP請求,并在發出請求后,客戶端等待響應。服務器處理該請求并發送回響應,然后客戶端斷開連接。因此,客戶端和服務器僅在當前請求和響應期間相互了解。
無狀態:HTTP是無連接的,因此HTTP是無狀態協議的直接結果。連接斷開后之前的連接狀態將丟失。
這里簡單說一下它的主要特性。http 幾句話是無法說清楚的,要知道http權威指南用700多頁來介紹http。那么有了這么牛B的http為什么還出現了webservice呢,下面我們簡單了解下webservice。
2.WebService
引用w3cshool中對它特性的描述:
Web Services 是應用程序組件
Web Services 使用開放協議進行通信
Web Services 是獨立的(self-contained)并可自我描述
Web Services 可通過使用UDDI來發現 Web Services 可被其他應用程序使用 XML 是 Web Services 的基礎
此外。公開網絡上的現有功能,可以將它說為一個服務發布供其他程序調用。Web Services允許各種應用程序相互通信并在彼此之間共享數據和服務。其他應用程序也可以使用Web服務。Web服務使用標準化的行業標準協議進行通信。Web服務使用SOAP 基于HTTP協議,因此可以使用現有的低成本來實現Web服務。通過使用 Web services,您的應用程序可向全世界發布功能或消息。Web services 使用 XML 來編解碼數據,并使用 SOAP 開放的協議來傳輸數據。這樣說來 webservice 就是XML和HTTP的組合。webservice使用基于xml的soap協議,soap有以下特點:
SOAP 指簡易對象訪問協議
SOAP 是一種通信協議
SOAP 用于應用程序之間的通信
SOAP 是一種用于發送消息的格式
SOAP 被設計用來通過因特網進行通信
SOAP 獨立于平臺
SOAP 獨立于語言
SOAP 基于 XML
SOAP 很簡單并可擴展
SOAP 允許您繞過防火墻
SOAP 將被作為 W3C 標準來發展
由于webservice基于http,那webservcie理論上是可以被http替代的。由于webservice 使用基于xml的soap協議。xml可以表示復雜的數據類型,且容易讀寫。
3.RPC
RPC全稱 Remote Procedure Call,即遠程過程調用。它是一種強大的技術,可用于構建基于客戶端服務器的分布式應用程序。 它基于擴展傳統的本地過程調用,以便被調用過程不必與調用過程存在于相同的地址空間中。 這兩個進程可能在同一系統上,也可能是通過網絡連接在一起的不同系統上。它用于客戶端-服務器應用程序。 當計算機程序使過程或子例程在不同的地址空間中執行時,將使用RPC機制,該過程被編碼為常規過程調用,而程序員無需關注遠程交互編碼細節。
RPC調用過程
RPC的基本特征:
所調用的過程在另一個進程中,該進程可能駐留在另一臺機器中。
進程不共享地址空間。
參數僅按值傳遞。
RPC在服務器進程的環境中執行。
它不提供對調用過程環境的訪問。
那么為什么要使用RPC呢?RPC的優點
RPC提供摘要,即對用戶隱藏了網絡通信的消息傳遞性質。
RPC通常會省略許多協議層以提高性能。 即使很小的性能改進也很重要,因為程序可能經常調用RPC。
RPC允許不僅在本地環境中在分布式環境中使用應用程序。
使用RPC代碼進行重寫/重新開發的工作量得以最小化。
RPC支持的面向過程和面向線程的模型。
http和RPC各有優缺點,他們是互補的。
4.MQ
消息隊列允許應用程序通過相互發送消息進行通信。 當目標程序忙或未連接時,消息隊列提供臨時消息存儲。消息隊列提供異步通信協議,該協議是一種將消息放入消息隊列并且不需要立即響應來繼續處理的系統。 例如電子郵件, 發送電子郵件后,發件人將繼續處理其他事情,而無需接收者的立即響應。 這種處理消息的方式使生產者與使用者解耦,從而使他們不需要同時與消息隊列進行交互。
消息隊列調用
消息隊列的主要特征:
異步業務處理能力
程序之間沒有直接連接,降低系統間的耦合,系統更容易擴展和維護
流量削鋒 ,服務器按照其處理能力從消息隊列中訂閱消息進行處理。
提升了系統間通信可靠性, 消息隊列將對嘗試訪問隊列的應用程序進行身份驗證,并允許您使用加密來加密通過網絡傳輸以及在隊列中傳輸的消息
那么使用MQ的好處就一目了然了。
總結:計算機之間通信需底層都要通過TCP連接來傳輸數據, HTTP,WebService,RPC,MQ他們有各自的優缺點,并且是有聯系的,以及使用場景。通俗的說遠程調用抽象的核心都是RPC,而RPC也可以基于http。 http簡單、直接、開發方便,但是請求中包含一些無用信息;WebService傳輸的信息較大,傳輸效率低;RPC性能消耗低,傳輸效率高,但是比較抽象,可能簡單場景需要復雜的配置.MQ可異步傳輸。系統可用性降低、系統復雜性提高、一致性問題。那么如果需要使用他們,就要根據自己的業務需求和場景來使用這些調用方式了。
-
HTTP
+關注
關注
0文章
510瀏覽量
31358 -
TCP
+關注
關注
8文章
1375瀏覽量
79160
發布評論請先 登錄
相關推薦
評論