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