最簡單的Rpc框架的實現

2021-07-28 22:15:50 字數 1012 閱讀 5783

平時用到接觸的都很少,每次用過之後就忘記,所以要想真正的達到拿來就用的境界那就:#刻意練習#

下面介紹。。寫不動。。。

就寫寫自己的理解:

主要的角色有一下幾種:

服務提供者:

執行在服務端,負責提供介面定義和服務實現類。(其實就像現實生活中專門提供服務的,比如說酒店提供的服務是休息睡覺,飯店提供的服務是解決溫飽),這裡提供的服務由程式猿自己定義,就是說想提供什麼樣的服務給別人就基於服務去實現

服務發布者:

這個發布者呢,就是讓服務讓別人能夠知曉,不僅僅是本地自己呼叫,可以發布出去讓更多需要服務的人知道。給服務提供者這個角色提供服務。

本地服務**:

同樣的,當消費者需要一樣服務的時候,現實生活中的中介。就是類似於這個**,能夠幫助消費者去找**能夠提供哪樣的服務,並告訴消費者。消費者只負責消費以及享受這個服務就可以了。

那麼現在就好理解

什麼是rpc?--remote procedure

call

讓消費者只需要了解誰在什麼位置提供了什麼樣的遠端服務介面即可,無需關心底層的細節,就像現實中去飯店吃飯,你只要吃就好,無需知道飯是幾個廚師做的,菜是幾個人洗的一樣。。。

rpc框架面臨的挑戰:

1:服務越來越多,服務的url管理變得十分困難,(解決方法:通過服務註冊中心,動態註冊和發現服務,並且消費者在本地快取服務提供者的列表,防止註冊中心宕機,降低f5等硬體負載均衡的依賴)

2:服務間的依賴關係變得複雜,結果導致分不清哪個應用要在哪個應用之前啟動,以及之間的呼叫關係,(通過分布式訊息跟蹤系統視覺化展示服務呼叫鏈,用於依賴分析 、業務呼叫路徑梳理等,幫助架構師清理不合理的服務依賴,防止業務架構腐化)

3:伺服器的呼叫量越來越大,服務的容量問題舅暴露出來了,某個服務需要多少機器支撐、什麼時候該加機器,(採集服務呼叫kpi資料,進行彙總和分析,通過計算得出服務部署例項和伺服器的配置規格)

、、、、、、、

實現RPC框架

什麼是rpc client端 student student call serveraddr,addage,student 1.將這個呼叫對映為call id。2.將call id,student params 序列化,以二進位制形式打包 3.把2中得到的資料報傳送給serveraddr,這需要使用...

實現基於springboot的RPC框架(序)

rpc框架大家或多或少都用過,出自於阿里系的就有dubbo,hsf,sofarpc等。但是,要深入理解rpc的原理卻不容易,其中光是核心部分,就涉及到動態 netty,服務註冊與發現,序列化,多執行緒等等。筆者為了弄清楚rpc框架的大致呼叫實現原理,自己造了個輪子 zrpc.首先,筆者寫這個rpc框...

Golang實現自己的RPC框架

rpc session.go package rpc import encoding binary io net 編寫資料會話中讀寫 會話連線的結構體 type session struct 建立新連線 func newsession conn net.conn session 向連線中寫資料 fu...