成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

這么回答面試通過率提高60%,談談你對RPC框架的理解

開發 架構
RPC的全稱是Remote Procedure Call,翻譯過來叫遠程過程調用。

 有位工作6年的小伙伴,面試的時候被問到這樣一道題,說談你對RPC的理解。在分布式微服務架構中,遠程通信是最基本的需求。常見的遠程通信方式有基于REST架構的HTTP協議,以及基于RPC協議的RPC框架。今天,我給大家分享一下我的理解。

1、什么是RPC

首先,給大家介紹一下什么是遠程調用。很多小伙伴會誤以為,遠程調用是指跨越物理距離上的遠程。實際上,準確地說,遠程調用是指跨進程的功能調用。

圖片

跨進程,可以理解為同一臺計算上的多個進程、多個JVM或者多臺計算之間的進程。

那什么是RPC呢?RPC的全稱是Remote Procedure Call,翻譯過來叫遠程過程調用。

圖片

它是一種通過網絡從遠程計算機程序上獲取服務,而不需要了解代碼網絡技術實現的一種協議。凡是符合這種協議的框架,都可以稱之為RPC框架。

圖片

通俗理解就是,A計算機提供一個服務,B計算機可以像調用本地服務一樣去調用A計算機提供的服務,這就是RPC的主要作用。

其實,RPC的應用在很早之前就出現了。在40年以前,也就是1981年的時候,由一家叫做Nelson的公司提出,并把它應用到了分布式系統之間的通信協議。

2、RPC協議

要實現RPC,需要通過網絡進行數據傳輸,并且對調用的過程進行封裝。現在比較流行的RPC框架一般都是采用TCP協議作為底層的傳輸協議。當然,其他協議也是可以的,比如UDP。

RPC協議,強調的是過程調用,調用的過程對于用戶來說是完全透明的,用戶不需要關心調用細節。可以像調用本地服務一樣去調用遠程服務。

我們來看這樣一張圖。

圖片

一個完整的RPC協議包含了四個組件,分別是Client、Server、Client Stub和Sever Stub。

圖片

Client客戶端表示服務的調用方。

Sever服務端是真正的服務提供方。

Client Stub表示客戶端存根,專門用來存放服務端的地址信息,再將客戶端的請求參數打包成網絡消息,也就是序列化,然后通過網絡遠程發送給服務提供方。

Server Stub表示服務端存根,用來接收客戶端發送過來的消息,然后,解析消息內容,也就是反序列化,并且調用本地方法。

3、RPC的應用場景

RPC在分布式系統中,有非常廣發的應用,我給大家總結為5個方面:

圖片

1、分布式系統網絡通訊

2、分布式子系統之間的服務治理

3、分布式負載均衡和流控

4、服務發現與注冊

5、構建分布式調試環境

【導航條:RPC框架】

(轉場,屏幕黑底白字,正中央出現“4 RPC框架)

4、RPC框架

圖片

在互聯網應用開發中,隨著業務的復雜度增加,一般都會采用分布式架構。分布式架構的核心,就是利用多臺普通的計算機組成一個龐大的復雜計算網絡,提供高并發、高性能、高可用的系統能力支撐。

圖片

在分布式架構中,原本的單體應用服務被拆分成多個獨立部署的服務,分布式在計算機網絡上,這些服務必然,需要通過網絡進行數據通信和交互。而RPC框架,就是解決在分布式架構中,各個服務之間的網絡通信問題的框架。

圖片

在Java應用中,JDK 1.1版本的時候就提供了對RPC的支持框架,叫做RMI。由于RMI不能實現跨域語言的遠程調用。

后面,廣發采用WebService來實現遠程調用,但是,WebService需要定義非常復雜的Scheme文件,導致無效數據內容過于臃腫。

之后,就被HTTP加JSON的方案所代替了。

RPC發展到現在,實現的方式也非常多樣,但是基本都實現了跨語言的遠程調用。

圖片

一般來說,RPC框架都應用于大型企業,只有在業務復雜度和用戶體量都比較大的時候,需要對服務進行解耦,從而達到擴展性強、部署靈活的目的。目前比較流行的開源RPC框架有Goole的gRPC、Facebook的Thrift、Alibaba的Dubbo。這些框架除了提供基礎的遠程通信功能以外,還會在系統性能、傳輸效率、服務治理等方面做出一些優化設計。

比如,阿里開源的RPC框架Dubbo就提供了非常豐富的服務治理功能。

好了,相信各位小伙伴對于RPC又有了一個更加清晰的認識和了解。面試的時候,如果被問到RPC的問題,是不是知道怎么了呢?以上就是我對RPC的理解。

責任編輯:姜華 來源: Tom彈架構
相關推薦

2023-11-28 12:25:02

多線程安全

2022-06-30 09:10:33

NoSQLHBaseRedis

2020-03-23 10:51:40

面試技巧技術

2022-03-21 09:05:18

volatileCPUJava

2024-10-24 16:14:43

數據傳輸CPU零拷貝

2025-03-21 00:00:05

Reactor設計模式I/O 機制

2025-02-21 15:25:54

虛擬線程輕量級

2024-09-27 15:43:52

零拷貝DMAIO

2024-08-27 12:36:33

2024-09-26 16:01:52

2024-08-26 14:52:58

JavaScript循環機制

2019-07-26 06:42:28

PG架構數據庫

2024-10-12 16:25:12

2022-09-19 07:57:59

云服務互聯網基礎設施

2024-06-13 08:01:19

2024-09-20 05:46:00

2024-09-11 16:49:55

2024-05-31 08:10:58

Netty線程模型多路復用模型

2022-08-14 07:14:50

Kafka零拷貝

2022-10-09 15:18:31

SwaggerOpenAPI工具
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: а_天堂中文最新版地址 | 国产精品国产三级国产aⅴ无密码 | 日韩精品一区二区三区在线播放 | 99视频免费看 | 精品国产欧美日韩不卡在线观看 | 中文字幕 在线观看 | 免费一区 | 一区二区在线免费观看 | 国产高清视频一区 | 一区在线观看 | 婷婷狠狠| 国产精品欧美一区二区三区不卡 | 精品久久久久久久久久久久久久 | 欧美一区二区三区四区在线 | 不卡视频一区二区三区 | 成人免费视频网址 | 欧美精品导航 | 亚洲天堂男人的天堂 | 国产偷录叫床高潮录音 | 少妇精品久久久久久久久久 | 国产日韩精品一区二区 | 黄色一级大片在线免费看产 | 91精品国产欧美一区二区成人 | 日韩一二三 | 国产偷自视频区视频 | 99精品免费在线观看 | 91麻豆精品国产91久久久更新资源速度超快 | 欧美日韩高清一区 | 男人天堂国产 | 美女人人操 | 日韩精品一区二区三区老鸭窝 | 免费一区 | 欧美在线日韩 | 中文字幕欧美日韩一区 | 国产伦一区二区三区四区 | 欧美一级免费片 | 欧美a在线 | 久久精品国产久精国产 | 97精品国产97久久久久久免费 | 国产精品久久久久久久久久不蜜臀 | 国产精品一区二区av |