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