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

如何通俗易懂的向面試官解釋什么是 RPC 框架

開發 架構
RPC是指遠程過程調用,也就是說兩臺服務器A,B,一個應用部署在A服務器上,想要調用B服務器上應用提供的函數/方法,由于不在一個內存空間,不能直接調用,需要通過網絡來表達調用的語義和傳達調用的數據。

 關于RPC

首先了解什么叫RPC,為什么要RPC,RPC是指遠程過程調用,也就是說兩臺服務器A,B,一個應用部署在A服務器上,想要調用B服務器上應用提供的函數/方法,由于不在一個內存空間,不能直接調用,需要通過網絡來表達調用的語義和傳達調用的數據。

比如說,一個方法可能是這樣定義的:

Employee getEmployeeByName(String fullName)

那么:

  • 首先,要解決通訊的問題,主要是通過在客戶端和服務器之間建立TCP連接,遠程過程調用的所有交換的數據都在這個連接里傳輸。連接可以是按需連接,調用結束后就斷掉,也可以是長連接,多個遠程過程調用共享同一個連接。
  • 第二,要解決尋址的問題,也就是說,A服務器上的應用怎么告訴底層的RPC框架,如何連接到B服務器(如主機或IP地址)以及特定的端口,方法的名稱名稱是什么,這樣才能完成調用。比如基于Web服務協議棧的RPC,就要提供一個endpoint URI,或者是從UDDI服務上查找。如果是RMI調用的話,還需要一個RMI Registry來注冊服務的地址。
  • 第三,當A服務器上的應用發起遠程過程調用時,方法的參數需要通過底層的網絡協議如TCP傳遞到B服務器,由于網絡協議是基于二進制的,內存中的參數的值要序列化成二進制的形式,也就是序列化(Serialize)或編組(marshal),通過尋址和傳輸將序列化的二進制發送給B服務器。
  • 第四,B服務器收到請求后,需要對參數進行反序列化(序列化的逆操作),恢復為內存中的表達方式,然后找到對應的方法(尋址的一部分)進行本地調用,然后得到返回值。
  • 第五,返回值還要發送回服務器A上的應用,也要經過序列化的方式發送,服務器A接到后,再反序列化,恢復為內存中的表達方式,交給A服務器上的應用

 

(圖片來源:https://www.cs.rutgers.edu/~pxk/417/notes/03-rpc.html)

為什么RPC呢?就是無法在一個進程內,甚至一個計算機內通過本地調用的方式完成的需求,比如比如不同的系統間的通訊,甚至不同的組織間的通訊。由于計算能力需要橫向擴展,需要在多臺機器組成的集群上部署應用,

RPC的協議有很多,比如最早的CORBA,Java RMI,Web Service的RPC風格,Hessian,Thrift,甚至Rest API。

關于Netty

而Netty框架不局限于RPC,更多的是作為一種網絡協議的實現框架,比如HTTP,由于RPC需要高效的網絡通信,就可能選擇以Netty作為基礎。除了網絡通信,RPC還需要有比較高效的序列化框架,以及一種尋址方式。如果是帶會話(狀態)的RPC調用,還需要有會話和狀態保持的功能。

大體上來說,Netty就是提供一種事件驅動的,責任鏈式(也可以說是流水線)的網絡協議實現方式。網絡協議包含很多層次,很多部分組成,如傳輸層協議,編碼解碼,壓縮解壓,身份認證,加密解密,請求的處理邏輯,怎么能夠更好的復用,擴展,業界通用的方法就是責任鏈,

一個請求應答網絡交互通常包含兩條鏈,一條鏈(Upstream)是從傳輸層,經過一系列步驟,如身份認證,解密,日志,流控,***到達業務層,一條鏈(DownStream)是業務層返回后,又經過一系列步驟,如加密等,又回到傳輸層。

 

如何通俗易懂的向面試官解釋什么是 RPC 框架

 

(圖片來源:ChannelPipeline (The Netty Project API Reference (3.2.6.Final)))

這樣每一層都有一個處理接口,都可以進行不同的操作,比如身份認證,加解密,日志,流控,將不同的處理實現像拼積木那樣插接起來就可以實現一個網絡協議了(快速開發)。每一層都有自己的實現,上層不需要關注面向網絡的操作(可維護)。Netty已經提供了很多實現。

 

如何通俗易懂的向面試官解釋什么是 RPC 框架

 

(圖片來源:http://docs.jboss.org/netty/3.1/guide/html/architecture.html)

當然Netty還有許多好處,比如對非阻塞IO(NIO)的支持,比如在鏈上傳遞時***程度的減少buffer的copy(高性能)。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2018-01-17 22:36:46

區塊鏈數字貨幣比特幣

2019-04-08 20:20:37

2018-03-05 08:23:40

物聯網互聯網網絡技術

2021-05-26 16:12:20

區塊鏈加密貨幣比特幣

2011-10-26 19:57:33

2023-11-14 11:23:39

計算自動駕駛

2019-06-19 08:30:47

網絡協議IPTCP

2021-12-26 15:19:39

HTTPS網絡協議網絡傳輸

2019-01-17 10:02:48

2023-01-06 09:40:20

項目性能

2020-06-08 10:50:58

前端TypeScript代碼

2022-06-28 07:31:11

哨兵模式redis

2022-09-23 08:32:53

微服務架構服務

2021-09-07 10:44:33

Java 注解開發

2023-10-28 09:13:32

系統面試官架構

2021-11-04 08:16:50

MySQL SQL 語句數據庫

2022-07-06 08:17:50

C 語言函數選型

2019-05-20 07:37:00

TCPIP網絡協議

2021-02-19 10:02:57

HTTPSJava安全

2022-08-01 08:18:58

網絡網絡協議
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩欧美精品在线播放 | 中文字幕亚洲一区 | 久久网站免费视频 | 久草在线青青草 | 黑人成人网| 91在线观看视频 | 青娱乐av | 精品国产91亚洲一区二区三区www | 欧美激情一区二区三级高清视频 | 成人一区二区三区 | 91色站| 亚洲va国产日韩欧美精品色婷婷 | 日韩精品 电影一区 亚洲 | 成人午夜在线视频 | 日日日色 | 麻豆视频国产在线观看 | 少妇特黄a一区二区三区88av | 97狠狠干 | 亚洲精品国产成人 | 欧美一页 | 国产激情91久久精品导航 | 国产成人网 | 美国一级黄色片 | 在线a视频 | 特级一级黄色片 | 日韩在线不卡 | 天天天天操 | 国产亚洲区 | 亚洲区一区二 | 欧美美女爱爱 | 麻豆视频在线看 | 欧美aaaaaaaa | 欧美亚洲视频在线观看 | av第一页 | 国产在线精品免费 | 黄色免费看 | 中文视频在线 | 国产在线观看网站 | 欧美精品久久久久 | 国产精品永久免费观看 | 久久久www成人免费精品 |