0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

四種遠(yuǎn)程調(diào)用的區(qū)別和聯(lián)系

汽車玩家 ? 來源:今日頭條 ? 作者:莫輅 ? 2020-04-21 17:26 ? 次閱讀

首先看下這張圖要實現(xiàn)網(wǎng)絡(luò)通信,底層要通過TCP的三次握手連接,而我們最熟悉的應(yīng)該是HTTP協(xié)議,那Http是什么呢,是怎樣在不同的計算機上完成數(shù)據(jù)傳輸?shù)哪?,并且有了http為什么還出現(xiàn)了webservice,消息隊列,RPC等其他協(xié)議呢。

四種遠(yuǎn)程調(diào)用的區(qū)別和聯(lián)系

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é)。

四種遠(yuǎn)程調(diào)用的區(qū)別和聯(lián)系

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)行交互。

四種遠(yuǎn)程調(diào)用的區(qū)別和聯(liá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)用方式了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    478

    瀏覽量

    30770
  • TCP
    TCP
    +關(guān)注

    關(guān)注

    8

    文章

    1324

    瀏覽量

    78759
收藏 人收藏

    評論

    相關(guān)推薦

    雙軸測徑儀的四種樣式!

    閉合。用于外徑、橢圓度或?qū)挾群穸鹊臋z測。 這四種樣式的測徑儀使用用途僅前兩和后兩區(qū)別,看產(chǎn)線上是否有生產(chǎn)板材、扁線等需要測量寬度與厚度的產(chǎn)品。 需要注意的是,以上
    發(fā)表于 08-27 17:42

    濾波電路的四種類型是什么

    濾波電路是電子電路中非常重要的一部分,它主要用于對信號進(jìn)行頻率選擇,即允許特定頻率范圍內(nèi)的信號通過,而阻止其他頻率的信號。濾波電路根據(jù)其特性可以分為四種基本類型:低通濾波器(Low-Pass
    的頭像 發(fā)表于 08-08 16:25 ?466次閱讀

    簡述四種基本觸發(fā)器及其功能

    在數(shù)字電路設(shè)計中,觸發(fā)器是一基本且重要的存儲元件,用于存儲二進(jìn)制信息(即0和1)。根據(jù)功能和應(yīng)用場景的不同,觸發(fā)器可以分為多種類型,其中四種基本觸發(fā)器包括RS觸發(fā)器、JK觸發(fā)器、D觸發(fā)器和T觸發(fā)器。以下是對這四種基本觸發(fā)器及其
    的頭像 發(fā)表于 07-27 14:59 ?2856次閱讀

    介紹MCUboot支持的四種升級模式(2)

    介紹MCUboot支持的四種升級模式,分別是Overwrite、Swap、Direct XIP和加載到RAM中執(zhí)行。由于FSP不支持第四種——加載到RAM中執(zhí)行,因為我們重點介紹前三。
    的頭像 發(fā)表于 06-13 10:56 ?520次閱讀
    介紹MCUboot支持的<b class='flag-5'>四種</b>升級模式(2)

    電氣設(shè)備的狀態(tài)有哪四種

    電氣設(shè)備的狀態(tài)可以分為四種:正常狀態(tài)、異常狀態(tài)、故障狀態(tài)和緊急狀態(tài)。這四種狀態(tài)涵蓋了電氣設(shè)備在運行過程中可能遇到的各種情況。本文將詳細(xì)分析這四種狀態(tài)的特點、原因、影響以及相應(yīng)的處理措施。 一、正常
    的頭像 發(fā)表于 06-05 16:47 ?2307次閱讀

    如何理解IGBT的四種SOA?

    如何理解IGBT的四種SOA? IGBT的四種SOA表示了IGBT器件在不同工作狀態(tài)下的安全操作區(qū)域。這四種SOA是:Continuous SOA、Limited SOA、Pulse SOA
    的頭像 發(fā)表于 02-18 11:04 ?784次閱讀

    四種編程語言之間的區(qū)別聯(lián)系

    編程語言是一人與計算機之間進(jìn)行交流的方式,不同的編程語言有著不同的特點和用途。本文將對四種常見的編程語言——Python、Java、C++和JavaScript進(jìn)行比較,分析它們的區(qū)別聯(lián)系
    的頭像 發(fā)表于 02-05 14:16 ?1086次閱讀

    A/D轉(zhuǎn)換的四種誤差

    針對A/D轉(zhuǎn)換中可能出現(xiàn)的誤差,主要分為以下四種情況,漂移誤差、線型比例誤差、非線性誤差、非單調(diào)性誤差。還有那些能夠引起AD轉(zhuǎn)換出現(xiàn)比較大的誤差類別? 先說AD轉(zhuǎn)換是怎么取值的,假設(shè)輸入信號0-3V
    發(fā)表于 01-30 14:19

    電子負(fù)載的四種功能實現(xiàn)原理

    電子負(fù)載的四種功能實現(xiàn)原理? 電子負(fù)載是一用于模擬負(fù)載、測試和評估電源、電池和其他電子設(shè)備的工具。它可以模擬電子負(fù)載的特性,并能夠提供不同的負(fù)載條件。電子負(fù)載主要通過四種功能來實現(xiàn):恒流負(fù)載、恒阻
    的頭像 發(fā)表于 01-18 14:13 ?1617次閱讀

    四種霍爾元件的感應(yīng)方式分別是什么呢?

    四種霍爾元件的感應(yīng)方式分別是什么呢? 霍爾元件是一基于霍爾效應(yīng)的電子元件,常用于測量磁場、電流和位置等物理量。根據(jù)感應(yīng)方式的不同,霍爾元件可以分為四種類型:線性霍爾元件、增量式霍爾元件、磁敏電阻
    的頭像 發(fā)表于 12-18 14:49 ?615次閱讀

    設(shè)備管理通道控制四種方式

    設(shè)備管理的主要任務(wù)之一是控制設(shè)備和內(nèi)存或處理機之間的數(shù)據(jù)傳送,外圍設(shè)備和內(nèi)存之間的輸入/輸出控制方式有四種,下面分別介紹。
    發(fā)表于 12-08 14:05 ?707次閱讀
    設(shè)備管理通道控制<b class='flag-5'>四種</b>方式

    四種接近傳感器PK,誰能勝出?

    四種接近傳感器PK,誰能勝出?
    的頭像 發(fā)表于 12-07 09:28 ?1275次閱讀
    <b class='flag-5'>四種</b>接近傳感器PK,誰能勝出?

    四種半導(dǎo)體器件基本結(jié)構(gòu)

    按施敏教授的觀點,半導(dǎo)體器件有個最基本的結(jié)構(gòu)單元:金半接觸、PN結(jié)、異質(zhì)結(jié)、MOS結(jié)構(gòu)。所有的半導(dǎo)體器件都可以看作是這四種基本結(jié)構(gòu)的組合,比如BJT由兩個背靠背的PN結(jié)構(gòu)成,MOSFET由MOS結(jié)構(gòu)和兩對PN結(jié)構(gòu)成。
    的頭像 發(fā)表于 11-30 15:56 ?2459次閱讀
    <b class='flag-5'>四種</b>半導(dǎo)體器件基本結(jié)構(gòu)

    什么是遠(yuǎn)程過程調(diào)用

    開發(fā)環(huán)境:Ubuntu VS Code 編譯器:g++ 編程語言:C++ 框架源碼下載:GitHub 認(rèn)識RPC RPC的全稱是遠(yuǎn)程過程調(diào)用(Remote Procedure Call
    的頭像 發(fā)表于 11-10 10:10 ?826次閱讀
    什么是<b class='flag-5'>遠(yuǎn)程過程調(diào)用</b>

    四種類型的MOSFET的主要區(qū)別

    晶體管,它屬于電壓控制型半導(dǎo)體器件。根據(jù)導(dǎo)電溝道類型和柵極驅(qū)動電壓的不同,可以分為N溝道-增強型MOSFET、N溝道-耗盡型MOSFET、P溝道-增強型MOSFET、P溝道-耗盡型MOSFET四種類型。
    的頭像 發(fā)表于 11-07 14:51 ?1577次閱讀
    <b class='flag-5'>四種</b>類型的MOSFET的主要<b class='flag-5'>區(qū)別</b>