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 具體實現框架
- dubbo(apache alibaba java)
- motan(微博)
- tars(騰訊內部)
- grpc
- thrift
- spring cloud openfeign
1.3 應用場景
跨網絡通信都可以用
2. RPC的關鍵技術點&一次調用rpc流程
2.1 RPC流程
流程
- 客戶端調接口走到代理類,組裝請求并序列化,然后協議編碼并發送
- 服務端收到請求,進行協議解析以及反序列化拿到請求參數
- 服務端根據請求參數調用接口實現,然后組裝響應
- 響應按同樣的方式返回
兩個網絡模塊如何連接的呢?
注冊中心就是一個存數據的地方,最好可以提供監聽功能。注冊中心與rpc框架是分開的
常見的注冊中心:zookeeper、nacos、etcd
其它特性
- 路由篩選可用的提供者
- 負載均衡:從可用的提供者種,選擇具體用哪個
- 熔斷限流:流量控制
- 網絡處理
- 協議處理
RPC優勢
- 讓構建分布式應用更容易,解耦服務,容易擴展
- RPC一般使用長連接,不必每次通信都要建立連接,減少網絡開銷