日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

什么是RPC框架?實現(xiàn)原理呢?與SOA、REST有啥區(qū)別?

來源: 責編: 時間:2024-06-14 17:35:44 165觀看
導讀面試題1:說說你對RPC框架的理解?RPC (Remote Procedure Call)即遠程過程調(diào)用,是分布式系統(tǒng)常見的一種通信方法。它允許程序調(diào)用另一個地址空間(通常是共享網(wǎng)絡的另一臺機器上)的過程或函數(shù),而不用程序員顯式編碼這個遠程調(diào)

面試題1:說說你對RPC框架的理解?

RPC (Remote Procedure Call)即遠程過程調(diào)用,是分布式系統(tǒng)常見的一種通信方法。它允許程序調(diào)用另一個地址空間(通常是共享網(wǎng)絡的另一臺機器上)的過程或函數(shù),而不用程序員顯式編碼這個遠程調(diào)用的細節(jié)。23a28資訊網(wǎng)——每日最新資訊28at.com

除 RPC 之外,常見的多系統(tǒng)數(shù)據(jù)交互方案還有分布式消息隊列、HTTP 請求調(diào)用、數(shù)據(jù)庫和分布式緩存等。23a28資訊網(wǎng)——每日最新資訊28at.com

其中 RPC 和 HTTP 調(diào)用是沒有經(jīng)過中間件的,它們是端到端系統(tǒng)的直接數(shù)據(jù)交互。23a28資訊網(wǎng)——每日最新資訊28at.com

通俗點說

  • RPC就是從一臺機器(客戶端)上通過參數(shù)傳遞的方式調(diào)用另一臺機器(服務器)上的一個函數(shù)或方法(可以統(tǒng)稱為服務)并得到返回的結(jié)果。
  • RPC會隱藏底層的通訊細節(jié)(不需要直接處理Socket通訊或Http通訊)。
  • 客戶端發(fā)起請求,服務器返回響應(類似于Http的工作方式)RPC在使用形式上像調(diào)用本地函數(shù)(或方法)一樣去調(diào)用遠程的函數(shù)(或方法)。

追問1:RPC框架實現(xiàn)原理是什么樣的

在RPC框架中主要有三個角色:提供者、消費者和注冊中心。如下圖所示:23a28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片23a28資訊網(wǎng)——每日最新資訊28at.com

  • 提供者: 暴露服務的服務提供方。
  • 提供者: 調(diào)用遠程服務的服務消費方。
  • 注冊中心: 服務注冊與發(fā)現(xiàn)的注冊中心。

圖片圖片23a28資訊網(wǎng)——每日最新資訊28at.com

原理圖如上,也就是說兩臺服務器A,B,一個應用部署在A服務器上,想要調(diào)用B服務器上應用提供的函數(shù)/方法,由于不在一個內(nèi)存空間,不能直接調(diào)用,需要通過網(wǎng)絡來表達調(diào)用的語義和傳達調(diào)用的數(shù)據(jù)。23a28資訊網(wǎng)——每日最新資訊28at.com

比如說,A服務器想調(diào)用B服務器上的一個方法:Employee getEmployeeByName(String fullName)23a28資訊網(wǎng)——每日最新資訊28at.com

RPC整個調(diào)用過程,主要經(jīng)歷如下幾個步驟:23a28資訊網(wǎng)——每日最新資訊28at.com

1、建立通信23a28資訊網(wǎng)——每日最新資訊28at.com

首先要解決通訊的問題:即A機器想要調(diào)用B機器,首先得建立起通信連接。23a28資訊網(wǎng)——每日最新資訊28at.com

主要是通過在客戶端和服務器之間建立TCP連接,遠程過程調(diào)用的所有交換的數(shù)據(jù)都在這個連接里傳輸。連接可以是按需連接,調(diào)用結(jié)束后就斷掉,也可以是長連接,多個遠程過程調(diào)用共享同一個連接。23a28資訊網(wǎng)——每日最新資訊28at.com

2、服務尋址23a28資訊網(wǎng)——每日最新資訊28at.com

要解決尋址的問題,也就是說,A服務器上的應用怎么告訴底層的RPC框架,如何連接到B服務器(如主機或IP地址)以及特定的端口,方法的名稱名稱是什么。23a28資訊網(wǎng)——每日最新資訊28at.com

通常情況下我們需要提供B機器(主機名或IP地址)以及特定的端口,然后指定調(diào)用的方法或者函數(shù)的名稱以及入?yún)⒊鰠⒌刃畔ⅲ@樣才能完成服務的一個調(diào)用。23a28資訊網(wǎng)——每日最新資訊28at.com

可靠的尋址方式(主要是提供服務的發(fā)現(xiàn))是RPC的實現(xiàn)基石,比如可以采用redis或者zookeeper來注冊服務等等。23a28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片23a28資訊網(wǎng)——每日最新資訊28at.com

從服務提供者的角度看:當提供者服務啟動時,需要自動向注冊中心注冊服務;23a28資訊網(wǎng)——每日最新資訊28at.com

當提供者服務停止時,需要向注冊中心注銷服務;23a28資訊網(wǎng)——每日最新資訊28at.com

提供者需要定時向注冊中心發(fā)送心跳,一段時間未收到來自提供者的心跳后,認為提供者已經(jīng)停止服務,從注冊中心上摘取掉對應的服務。23a28資訊網(wǎng)——每日最新資訊28at.com

從調(diào)用者的角度看:調(diào)用者啟動時訂閱注冊中心的消息并從注冊中心獲取提供者的地址;23a28資訊網(wǎng)——每日最新資訊28at.com

當有提供者上線或者下線時,注冊中心會告知到調(diào)用者;23a28資訊網(wǎng)——每日最新資訊28at.com

調(diào)用者下線時,取消訂閱。23a28資訊網(wǎng)——每日最新資訊28at.com

3、網(wǎng)絡傳輸23a28資訊網(wǎng)——每日最新資訊28at.com

  • 序列化

當A機器上的應用發(fā)起一個RPC調(diào)用時,調(diào)用方法和其入?yún)⒌刃畔⑿枰ㄟ^底層的網(wǎng)絡協(xié)議如TCP傳輸?shù)紹機器,由于網(wǎng)絡協(xié)議是基于二進制的,所有我們傳輸?shù)膮?shù)數(shù)據(jù)都需要先進行序列化(Serialize)或者編組(marshal)成二進制的形式才能在網(wǎng)絡中進行傳輸。然后通過尋址操作和網(wǎng)絡傳輸將序列化或者編組之后的二進制數(shù)據(jù)發(fā)送給B機器。23a28資訊網(wǎng)——每日最新資訊28at.com

  • 反序列化

當B機器接收到A機器的應用發(fā)來的請求之后,又需要對接收到的參數(shù)等信息進行反序列化操作(序列化的逆操作),即將二進制信息恢復為內(nèi)存中的表達方式,然后再找到對應的方法(尋址的一部分)進行本地調(diào)用(一般是通過生成代理Proxy去調(diào)用,通常會有JDK動態(tài)代理、CGLIB動態(tài)代理、Javassist生成字節(jié)碼技術等),之后得到調(diào)用的返回值。23a28資訊網(wǎng)——每日最新資訊28at.com

4、服務調(diào)用23a28資訊網(wǎng)——每日最新資訊28at.com

B機器進行本地調(diào)用(通過代理Proxy)之后得到了返回值,此時還需要再把返回值發(fā)送回A機器,同樣也需要經(jīng)過序列化操作,然后再經(jīng)過網(wǎng)絡傳輸將二進制數(shù)據(jù)發(fā)送回A機器,而當A機器接收到這些返回值之后,則再次進行反序列化操作,恢復為內(nèi)存中的表達方式,最后再交給A機器上的應用進行相關處理(一般是業(yè)務邏輯處理操作)。23a28資訊網(wǎng)——每日最新資訊28at.com

面試題2:常見的RPC框架有哪些?

  • Thrift:thrift是一個軟件框架,用來進行可擴展且跨語言的服務的開發(fā)。它結(jié)合了功能強大的軟件堆棧和代碼生成引擎,以構建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 這些編程語言間無縫結(jié)合的、高效的服務。
  • Dubbo:Dubbo是一個分布式服務框架,以及SOA治理方案。其功能主要包括:高性能NIO通訊及多協(xié)議集成,服務動態(tài)尋址與路由,軟負載均衡與容錯,依賴分析與降級等。Dubbo是阿里巴巴內(nèi)部的SOA服務化治理方案的核心框架,Dubbo自2011年開源后,已被許多非阿里系公司使用。
  • Spring Cloud:Spring Cloud由眾多子項目組成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系統(tǒng)及微服務常用的工具,如配置管理、服務發(fā)現(xiàn)、斷路器、智能路由、微代理、控制總線、一次性token、全局鎖、選主、分布式會話和集群狀態(tài)等,滿足了構建微服務所需的所有解決方案。Spring Cloud基于Spring Boot, 使得開發(fā)部署極其簡單。

面試題3:說說RPC和SOA、SOAP、REST的區(qū)別吧

1、REST23a28資訊網(wǎng)——每日最新資訊28at.com

可以看著是HTTP協(xié)議的一種直接應用,默認基于JSON作為傳輸格式,使用簡單,學習成本低效率高,但是安全性較低。23a28資訊網(wǎng)——每日最新資訊28at.com

2、SOAP23a28資訊網(wǎng)——每日最新資訊28at.com

SOAP是一種數(shù)據(jù)交換協(xié)議規(guī)范,是一種輕量的、簡單的、基于XML的協(xié)議的規(guī)范。而SOAP可以看著是一個重量級的協(xié)議,基于XML、SOAP在安全方面是通過使用XML-Security和XML-Signature兩個規(guī)范組成了WS-Security來實現(xiàn)安全控制的,當前已經(jīng)得到了各個廠商的支持。23a28資訊網(wǎng)——每日最新資訊28at.com

它主要的優(yōu)點是:易用、靈活、跨語言、跨平臺。23a28資訊網(wǎng)——每日最新資訊28at.com

3、SOA23a28資訊網(wǎng)——每日最新資訊28at.com

面向服務架構,它可以根據(jù)需求通過網(wǎng)絡對松散耦合的粗粒度應用組件進行分布式部署、組合和使用。服務層是SOA的基礎,可以直接被應用調(diào)用,從而有效控制系統(tǒng)中與軟件代理交互的人為依賴性。23a28資訊網(wǎng)——每日最新資訊28at.com

SOA是一種粗粒度、松耦合服務架構,服務之間通過簡單、精確定義接口進行通訊,不涉及底層編程接口和通訊模型。SOA可以看作是B/S模型、XML(標準通用標記語言的子集)/Web Service技術之后的自然延伸。23a28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-93855-0.html什么是RPC框架?實現(xiàn)原理呢?與SOA、REST有啥區(qū)別?

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 技術人必看:如何選擇適合你公司的消息隊列工具

下一篇: 高可用解決方案詳解(八大主流架構方案)

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 昌图县| 共和县| 梁平县| 舟山市| 定南县| 冷水江市| 靖宇县| 邻水| 铜陵市| 怀化市| 巴楚县| 大洼县| 黄大仙区| 漳平市| 遂宁市| 乡城县| 屯门区| 平泉县| 楚雄市| 岳池县| 肥乡县| 苗栗县| 蒙城县| 喀喇沁旗| 三亚市| 荆州市| 育儿| 清新县| 马鞍山市| 台江县| 张家口市| 田阳县| 肥乡县| 勃利县| 山东省| 寿光市| 三亚市| 新安县| 昭通市| 安龙县| 平湖市|