RPC/gRPC入門學習

一、RPC

1.1? ?RPC概念

RPC = Remote Procedure Call, 即遠程過程調用,是一種用于構建分布式系統的理念,在一些資料中被稱為“請求-響應”協議。兩個進程可以位于同一系統中,也可以位于不同的系統中,通過網絡相互連接。

RPC使程序能向網絡中另一臺計算機上的軟件請求服務,而無需了解網絡的具體細節。

RPC允許開發人員使用函數調用的方式而非網絡細節的方式,簡化了網絡的復雜性,從而促進了將軟件分布在不同系統上的過程。

RPC的工作原理是允許一個程序(客戶端)直接調用另一臺機器(服務器)上的程序(函數)。客戶端發出的程序調用看似是本地的,但實際上是在遠程機器上運行的。當進行RPC調用時,調用參數會被打包并通過網絡傳輸到服務器,服務器會解包這些參數,執行所需的程序,并將結果返回給客戶端。

1.2? ?RPC工作過程

1.客戶端調用客戶端代理程序,并以常規方式傳遞參數,該客戶端程序位于客戶端自身地址空間中。

2.客戶端代理會將參數封裝到消息中。封裝過程包括將參數的表示轉換為標準格式,并將每一個參數復制到消息中。

3.客戶端代理將消息傳遞到傳輸層,傳輸層再將該消息發送到遠程服務器。在服務器端,傳輸層將消息傳遞給服務器代理,服務器代理會解包參數,并使用常規的調用機制調用所需的服務器例程。

4.當服務器程序執行完畢后,它會返回到服務器代理,然后由該代理將返回值整理成一條消息。

5.然后,服務器代理將消息傳遞給傳輸層。傳輸層將結果消息發送回客戶端傳輸層,而客戶端傳輸層再將該消息傳遞給客戶端代理。

6.客戶端代理會對返回參數進行解封裝處理,并將執行結果返回給調用者。

二、gRPC

2.1? ? gRPC概念

在 gRPC 里客戶端應用可以像調用本地對象一樣直接調用另一臺不同的機器上服務端應用的方法,使得您能夠更容易地創建分布式應用和服務。與許多 RPC 系統類似, gRPC也是基于以下理念:定義一個服務,指定其能夠被遠程調用的方法 (包含參數和返回類型)。在服務端實現這個接口,并運行一個 gRPC 服務器來處理客戶端調用。在客戶端擁有一個存根能夠像服務端一樣的方法。

2.2? ? gRPC的優勢

1.基于HTTP2長連接,創建高效、可靠的通信服務平臺

HTTP/2的優勢:

(1) 多路復用:引入幀和流的概念,在一個TCP連接中可以存在多條流,可以區分出多個request/response。下一個請求無需等待上一個響應返回即可發出。

(2) 服務器推送:減少了請求數量。服務端推送能把客戶端所需要的資源伴隨著請求頁面一起發送到客戶端,省去了客戶端重復請求的步驟。正因為沒有發起請求,建立連接等操作,所以靜態資源通過服務端推送的方式可以極大地提升速度

(3) 二進制分幀

(4) 首部壓縮:利用HPack實現頭部壓縮。HTTP/2可以維護一個字典,差量更新 HTTP 頭部,大大降低因頭部傳輸產生的流量。

gRPC則在此基礎上進行了開發,具有連接池功能、健康狀態管理、高效使用數據幀以及多路復用等特性。

2. 支持多種編程語言和平臺

C, C++, Python, PHP, Nodejs, C#, Objective-C、Golang、Java

3.使用Protocol Buffers作為接口定義語言(IDL),避免了數據格式不一致的問題。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87855.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87855.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87855.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

租車小程序電動車租賃小程序php方案

電動車租賃小程序源碼,開發語言后端php,前端uniapp。四個端:用戶端門店端分銷商端小程序,pc管理后臺。一 用戶端:可以掃門店碼,進入門店詳情頁。也可以通過地圖找車。或者門店列表進入,或者快速…

Python數據分析基礎04:預測性數據分析

相關章節: 《Python數據分析基礎03:探索性數據分析》 《python數據分析基礎02:數據可視化分析》 《Python數據分析基礎01:描述性統計分析》 預測性數據分析(Predictive Analytics) 的深度解析&#xff0…

PFAE(Pyramidal Frequency Attention Extraction)通過頻域注意力機制提高邊界模糊、遮擋等場景的的檢測能力

在偽裝物體檢測中,現有方法多依賴空間局部特征,難以捕捉全局信息,而 Transformer 類方法計算成本高昂。頻率域特征因具備全局建模能力,可有效抑制背景噪聲、提升偽裝物體語義清晰度,但頻域與空域的頻繁轉換會增加計算復…

AE插件安裝方法

Adobe After Effects簡稱AE,是adobe公司開發的一個視頻剪輯及設計軟件,AE軟件能夠實現對素材的非線性編輯而完成畫面的組接,同時還能對任何一部分進行修改,達到想要的結果。AE含有很多腳本、常用的表達式和插件,做動畫…

舵輪時鐘-STM32-28路PWM--ESP8266-NTP時間

1.STM32--PWM生成STM32不具備如此多的PWM,因此采用軟件定時器的方案實現:使用hal庫實現;main.c#include "main.h"#define close1 500#define open 1500#define close 2500// 定時器中斷配置(以TIM2為例) voi…

Redis的單線程和多線程(單Worker線程)

Redis的單線程和多線程 Redis6.0之前是單線程的,6.0之后是多線程的,我們先了解6.0版本之前的單線程Redis。但其實無論6.0之前還是6.0之后,redis用于工作的線程也只有一個,所以也可以說redis一直是單線程的。 Redis單線程 Redis 6.…

OSPFv3基礎

文章目錄 OSPFv3基礎OSPFv3的改進OSPFv2 v3相同OSPFv2 v3不同 🏡作者主頁:點擊! 🤖Datacom專欄:點擊! ??創作時間:2025年07月07日22點31分 OSPFv3基礎 OSPFv3協議號依然為89,在I…

前端篇——HTML知識點體系

目錄 一、基礎結構與文本 1. 文檔基礎 2. 文本元素 二、多媒體元素 1. 圖像 2. 音頻 3. 視頻 三、列表系統 1. 無序列表 2. 有序列表 3. 定義列表 四、表格系統 1. 表格結構 2. 合并單元格 五、表單系統 1. 輸入控件 2. 表單元素 3. 高級表單特性 六、布局系…

產品需求管理文檔中,需求模塊是怎么界定的

產品需求文檔中,需求模塊的界定方式主要包括:1、基于業務流程的功能劃分、2、按用戶角色使用場景分類、3、根據系統架構與技術邊界拆解、4、對數據實體和功能點進行組合聚類、5、結合未來演進節奏設置獨立迭代單元。 其中,“基于業務流程的功…

國內免代理免費使用Gemini大模型實戰

文章目錄 一、免費申請Gemini API密鑰二、使用openai-gemini1、在github上找到openai-gemini2、將openai-gemini部署到Netlify3、在Cherry Studio中配置和使用gemini的模型1)在Cherry Studio中配置gemini API2)在Cherry Studio中使用gemini 的模型 4、在…

day46-tomcat-java業務部署

1. ?選型1.1. 🎯中間件java web中間件說明tomcat組件,功能多jetty精簡,功能少一些......weblogic使用oracle數據庫配合weblogic(商業)國產:東方通(TongWEB)1.2. 📌jdkjdk選型說明jdk(oracle jdk)商業版,jd…

[netty5: HttpServerCodec HttpClientCodec]-源碼分析

在閱讀該篇文章之前,推薦先閱讀以下內容: [netty5: ChannelHandler & ChannelHandlerAdapter]-源碼解析[netty5: HttpObjectEncoder & HttpObjectDecoder]-源碼解析 HttpServerCodec HttpServerCodec 是一個 Netty 編解碼器,結合 …

華為OD機試 2025B卷 - 數組組成的最小數字(C++PythonJAVAJSC語言)

2025B卷目錄點擊查看: 華為OD機試2025B卷真題題庫目錄|機考題庫 + 算法考點詳解 2025B卷 100分題型 最新華為OD機試 真題目錄:點擊查看目錄 華為OD面試真題精選:點擊立即查看 2025華為od 機試2025B卷-華為機考OD2025年B卷 題目描述 給定一個整型數組,請從該數組中選…

Ubuntu下Tomcat的配置

進入Tomcat的conf目錄下 1 備份配置文件 cp server.xml server.xml.2下載server.xml&#xff0c;用notepad文本編輯器打開 2 修改Tomcat的端口號 找到如下內容<Connector port"8080" protocol"HTTP/1.1"connectionTimeout"20000"redirectPort…

Docker部Ollama安裝、本地大模型配置與One-API接入

Docker 安裝 Ollama Ollama 支持 Docker 安裝,極大簡化了部署流程。以下是具體步驟: 創建ollama文件夾 創建 docker-compose.yaml 文件新建一個 docker-compose.yaml 文件,內容如下: 編輯文件 …

ABB焊接機器人智能節氣儀

在現代焊接工業中&#xff0c;ABB焊接機器人憑借其高精度、高效率等優勢被廣泛應用。而在焊接過程中&#xff0c;節氣是一個重要的考量因素&#xff0c;這就凸顯出ABB焊接機器人智能節氣儀的重要性。ABB焊接機器人節氣是提高焊接生產效益的關鍵環節。傳統的焊接過程中&#xff…

攝影后期:使用Photoshop進行暗角控制

方法一&#xff1a;ctrlshiftR調出鏡頭校正工具&#xff0c;調整暈影 方法二&#xff1a;

pyhton基礎【24】面向對象進階五

目錄 十五.多繼承的繼承順序 - mro 調用父類方式不同導致結果不同 單繼承中的super 簡單總結 面試題 十六.魔術方法 魔術方法概述 魔術方法概覽 __getattribute__屬性 __getattribute__注意事項 常用的魔術方法 __doc__ __module__和__class__ __init__ __del__…

如何保障MySQL客戶端連接數據庫安全更安全

公司員工或外協人員&#xff0c;直接使用業務賬號或高權限賬號連接MySQL服務器&#xff0c;如同讓數據在連接時減少風險——賬號密碼易泄露、操作行為難追溯、安全風險陡增&#xff01;尤其是在客戶端連接環節&#xff0c;如何確保每一個接入點都安全可控&#xff0c;每一次操作…

機器學習入門:線性回歸詳解及Scikit-learn API使用指南

一、線性回歸概述線性回歸是統計學和機器學習領域中最基礎、最廣泛應用的預測建模技術之一。自19世紀初由弗朗西斯高爾頓(Francis Galton)首次提出以來&#xff0c;線性回歸已成為數據分析的核心工具&#xff0c;在經濟學、社會科學、生物統計學、工程學等眾多領域發揮著重要作…