【9-2:RPC設計】

RPC

  • 1. 基礎
    • 1.1 定義&特點
    • 1.2 具體實現框架
    • 1.3 應用場景
  • 2. RPC的關鍵技術點&一次調用rpc流程
    • 2.1 RPC流程
      • 流程
      • 兩個網絡模塊如何連接的呢?
      • 其它特性
      • RPC優勢
    • 2.2 序列化技術
      • 序列化方式
      • PRC如何選擇序列化框架
      • 考慮因素
    • 2.3 應用層的通信協議-http
      • 什么是IO
        • 操作系統的IO模型有哪些
    • 2.4 動態代理
      • 其它動態代理方案
    • 2.5 基于ZK注冊的原理
      • 基于zk注冊數據的存儲結構-以dubbo為例
    • 2.6 容錯策略之超時重試
      • 什么是超時重試?
      • 如何檢測請求是否超時?
      • 時間輪算法
    • 2.7 熔斷限流
      • 熔斷降級的概念
      • 如何判斷熔斷
      • 熔斷工作合適開始?又合適結束
      • 有了熔斷降級為何還要限流?
      • 常見的限流算法
  • 3. 實現一個自己定義的RPC框架-mini版
    • PRC框架
    • 網絡模塊

1. 基礎

1.1 定義&特點

RPC,remote procedure call,遠程過程調用,它定義了一臺機器上的程序去調用另一臺機器上子程序的這一行為
特點:

  • 把遠程實現搬到了本地,效果上遠程調用和本地調用沒有差別
  • 使用cs模式,客戶端發起請求,服務端接收請求參數后執行
  • 屏蔽跨進程跨網絡調用底層復雜性讓我們更專注于業務邏輯

1.2 具體實現框架

  1. dubbo(apache alibaba java)
  2. motan(微博)
  3. tars(騰訊內部)
  4. grpc
  5. thrift
  6. spring cloud openfeign

1.3 應用場景

跨網絡通信都可以用

2. RPC的關鍵技術點&一次調用rpc流程

2.1 RPC流程

流程

在這里插入圖片描述
在這里插入圖片描述

  1. 客戶端調接口走到代理類,組裝請求并序列化,然后協議編碼并發送
  2. 服務端收到請求,進行協議解析以及反序列化拿到請求參數
  3. 服務端根據請求參數調用接口實現,然后組裝響應
  4. 響應按同樣的方式返回

兩個網絡模塊如何連接的呢?

在這里插入圖片描述

注冊中心就是一個存數據的地方,最好可以提供監聽功能。注冊中心與rpc框架是分開的
常見的注冊中心:zookeeper、nacos、etcd

其它特性

在這里插入圖片描述

  • 路由篩選可用的提供者
  • 負載均衡:從可用的提供者種,選擇具體用哪個
  • 熔斷限流:流量控制
  • 網絡處理
  • 協議處理

RPC優勢

  1. 讓構建分布式應用更容易,解耦服務,容易擴展
  2. RPC一般使用長連接,不必每次通信都要建立連接,減少網絡開銷

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

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

相關文章

數據結構第14節 加權圖

加權圖是在圖論中一種更為復雜的圖結構,它擴展了無向圖和有向圖的概念,通過給圖中的邊附加一個數值來表示邊的某種屬性,如成本、距離、容量或相似度等。這個數值被稱為邊的“權重”。 定義 加權圖可以被形式化地定義為一個三元組 ( G (V, …

Vortex GPGPU的硬件設計和代碼結構分析

文章目錄 前言一、GPGPU是什么?1.1 GPU和GPGPU之間的差異1.2 GPU和CPU之間的集成方式1.3 GPU包含什么(列舉和VMIPS向量體系結構的差異) 二、Vortex GPGPU是什么?2.1 Vortex GPGPU的技術邊界和驗證環境2.2 Vortex GPGPU的指令集設計…

安卓穩定性之crash詳解

目錄 前言一、Crash 的基本原理二、Crash 分析思路三、實例分析四、預防措施五、參考鏈接 前言 在開發和測試 Android 應用程序時,遇到應用程序崩潰是很常見的情況。 Android 崩潰指的是應用程序因為異常或錯誤而無法正常執行,并且導致應用強制關閉。 一…

p11函數和遞歸

遞歸與迭代 求n的階乘。&#xff08;不考慮溢出&#xff09; int Fac1(int n) {int i0;int ret1;for(i1;i<n;i){ret*i;}return ret; } int main(){//求n的階乘int n0;int ret0;scanf("%d",&n);retFac1(n);printf("%d\n",ret);return 0; } int Fac…

什么是激光導航和視覺導航技術

激光導航和視覺導航技術是現代導航系統中的兩種重要技術&#xff0c;它們在多個領域&#xff0c;如掃地機器人、無人機、機器人導航等中都有廣泛應用。以下是對這兩種技術的詳細介紹&#xff1a; 一、激光導航技術 1. 定義與原理 激光導航技術是一種利用激光束進行精確測量和…

ChatGPT:||是短路運算符,那么|、、是什么?

ChatGPT&#xff1a;||是短路運算符&#xff0c;那么|、&、&&是什么? 在Java中&#xff0c;邏輯運算符&&和||是短路邏輯運算符&#xff0c;而&和|是非短路邏輯運算符。 && 和 || 是短路邏輯運算符。當使用這些運算符時&#xff0c;如果第一個…

解決 Docker 容器鏡像拉取難題:全面指南

一、引言 在使用 Docker 容器的過程中&#xff0c;經常會遇到鏡像拉取慢甚至無法下載的問題&#xff0c;這給開發和部署工作帶來了不小的困擾。本文將深入探討這一問題的原因&#xff0c;并提供多種有效的解決方案。 二、問題原因分析 網絡限制 本地網絡帶寬不足或存在網絡擁…

unity知識點 專項四 一文徹底說清楚(錨點(anchor)、中心點(pivot)、位置(position)之間的關系)

一 概述 想要使UI控件在屏幕中達到正確的顯示效果&#xff0c;比如自適應屏幕尺寸、固定邊距等等&#xff0c;首先要理清楚幾個基本概念和設置&#xff1a;錨點(anchor)、中心點(pivot)、位置(position)、UI縮放模式、父物件的transform設置 二 Anchor、Pivot與Position 2…

網絡連接線相關問題

問題1&#xff1b; 直通線為什么兩頭都是T568B&#xff1f;是否可以兩臺T5568A&#xff1f;或者任意線序&#xff0c;只需兩頭一致&#xff1f; 不行&#xff0c;施工規范規定。&#xff08;原因&#xff1b;網線最長距離100m&#xff0c;實際用起來要把網線包管&#xff0c;走…

【分布式系統】Filebeat+Kafka+ELK 的服務部署

目錄 一.實驗準備 二.配置部署 Filebeat 三.配置Logstash 四.驗證 一.實驗準備 結合之前的博客中的實驗 主機名ip地址主要軟件es01192.168.80.101ElasticSearches02192.168.80.102ElasticSearches03192.168.80.103ElasticSearch、Kibananginx01192.168.80.104nginx、Logs…

iperf3: error - unable to connect to server: No route to host

1.確認iperf3版本是否統一。 2.確認防火墻是否關閉。 關閉防火墻 : systemctl stop firewalld 查看防火墻狀態: systemctl status firewalld 3.重新建起鏈接

Java進階----接口interface

接口 接口概述 接口是一種規范&#xff0c;使用接口就代表著要在程序中制定規范. 制定規范可以給不同類型的事物定義功能&#xff0c;例如&#xff1a; 利用接口&#xff0c;給飛機、小鳥制定飛行規范&#xff0c;讓其都具備飛行的功能&#xff1b;利用接口&#xff0c;給鼠…

SMU Summer 2024 Contest Round 1

A.Hcode OnlineJudge 給出一個N面骰子和整數K&#xff0c;擲出1-N之間的每個數的概率相同&#xff0c;每次擲出一次&#xff0c;記為成績&#xff0c;若成績小于K&#xff0c;則開始拋硬幣&#xff0c;硬幣朝上則數翻倍&#xff0c;反之則為0&#xff0c;概率都為0.5。當數大于…

自動駕駛算法———車道檢測(一)

“ 在本章中&#xff0c;我將指導您構建一個簡單但有效的車道檢測管道&#xff0c;并將其應用于Carla 模擬器中捕獲的圖像。管道將圖像作為輸入&#xff0c;并產生車道邊界的數學模型作為輸出。圖像由行車記錄儀&#xff08;固定在車輛擋風玻璃后面的攝像頭&#xff09;捕獲。…

【ZIP壓縮大揭秘】輕松掌握ZIP分卷壓縮包的高效解壓秘籍!

在這個信息爆炸的時代&#xff0c;文件大小常常成為我們分享與存儲的絆腳石。幸運的是&#xff0c;ZIP分卷壓縮技術如同一把鑰匙&#xff0c;巧妙地將龐然大物分解成小巧易管理的部分。但面對這一串分卷壓縮包&#xff0c;你是否也曾迷茫于如何高效解壓&#xff0c;恢復文件的完…

解碼Python字符串:‘r‘、‘b‘、‘u‘和‘f‘前綴的全面指南

&#x1f4d6; 正文 1 字符串前加’r’ 表示原始字符串&#xff0c;消除轉義 print(abc\nde) # abc # deprint(rabc\nde) # abc\nde在下面這個列子中&#xff0c;如果不在路徑字符串前面加r那么&#xff0c;路徑中的空格就會出現問題 print(rD:\01 programming\09python\py…

全志A527 T527 cat /proc/cupinfo沒有Serial問題

1.前言 我們有些客戶是使用cpuinfo節點去獲取系統的cpuid的,如下: cat /proc/cupinfo processor : 0 BogoMIPS : 48.00 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp CPU impleme…

系統吃swap問題排查

目錄 背景 問題 分析并解決 1.控制線程數 2.更換IO組件 3.Linux進程信息文件分析 總結加餐 參考文檔 背景 隔壁業務組系統是簡單的主從結構&#xff0c;寫索引的服務(主)叫primary&#xff0c; 讀索引并提供搜索功能的服務(從)叫replica。業務線同步數據并不是平滑的&…

離散化及其在 Pandas 中的實現方法

目錄 1.什么是離散化&#xff1f; 2.離散化類型 3.示例代碼 3.1連續變量離散化 3.2定性變量離散化 4.運行結果 4.1連續變量離散化 4.2定性變量離散化 1.什么是離散化&#xff1f; 離散化是將連續數據或分類數據轉換為離散類別的過程&#xff0c;方便后續的數據分析和機…

static的理論學習

在說到static之前&#xff0c;需要先明確變量類型&#xff1a; 而在聊到變量類型之前我們可以將變量的兩個屬性好好學一學 變量的兩個屬性 作用域&#xff08;scope&#xff09;&#xff1a; 從內存的角度來看&#xff0c;就是變量存放在棧&#xff08;stack&#xff09;中&…