學習寫RPC(1) rpc元件

2021-09-19 14:36:58 字數 1066 閱讀 4013

最近在做dubbo專案,dubbo通訊的核心就是rpc,所以決定編寫rpc框架。

rpc存在的最重要的意義,就在於,他能簡化分布式系統內,不同服務間的資料交換,使得這種交換看起來像本地函式呼叫一樣。所以,我們用他最直接的目的:簡化跨機器跨程序的服務呼叫。

rpc中可以認為有四個角色,消費者(consumer),提供者(provider) 註冊中心(registry),監控中心(monitor)。

registry註冊中心

1)可以有多個,都是無狀態的,互相之間不互動。

2)所有服務註冊在註冊中心,等待client來連線。

3)職責(與其說職責,還不如說**要實現的功能):

①接收服務提供者的服務註冊資訊,接收到資訊之後,傳送ack資訊給服務提供者,否則服務提供者重新傳送註冊資訊

②接收消費者的訂閱資訊,並把它訂閱的結果返回給消費者

③如果註冊資訊變更,會主動通知訂閱變更資訊的消費者,註冊資訊的變更包括服務提供者下線,服務被人工降級,或者服務提供者的位址變更

④持久化一些服務資訊,例如某些服務管理員審核過了,則該服務重新註冊後則不需要再審核,再例如,某個服務負載均衡的策略被管理員設定為輪詢,那麼下次它在註冊的時候,則就是輪詢,而不是預設的負載策略

provider提供者

1)一是它是客戶端,需要去連線registry,傳送註冊資訊,它也需要去連線monitor端,去傳送一些呼叫的統計資訊

2)二是它也是服務端,需要作為server端等待consumer去連線,連線成功後呼叫服務

consumer消費者

去連線registry去獲取到訂閱資訊,二是它需要主動去連線provider端去呼叫服務

monitor監控者

與整個系統是沒有任何直接關係,實現方式也是多樣的,僅僅起監控作用。可以與上面一樣建立長連線,接收每個角色統計的資訊,然後展示給使用者,可以使用mq,使用訊息佇列,zookeeper,每個角色把自己統計的資訊放到佇列中,monitor去消費這些資訊,這樣做的好處就是解耦,如果monitor宕了,不影響服務

RPC原理學習

1.什麼是rpc rpc remote procedure call protocol 遠端過程呼叫協議,它是一種通過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協議。rpc協議假定某些傳輸協議的存在,如tcp或udp,為通訊程式之間攜帶資訊資料。在osi網路通訊模型中,rpc跨越了傳輸...

RPC框架 yar學習

rpc採用客戶機 伺服器模式。請求程式就是乙個客戶機,而服務提供程式就是乙個伺服器。首先,客戶機呼叫程序傳送乙個有程序引數的呼叫資訊到服務程序,然後等待應答資訊。在伺服器端,程序保持睡眠狀態直到呼叫資訊的到達為止。當乙個呼叫資訊到達,伺服器獲得程序引數,計算結果,傳送答覆資訊,然後等待下乙個呼叫資訊...

從零手寫RPC

clientstub sereverstub 可以看作乙個 物件,遮蔽rpc呼叫過程中複雜的網路處理邏輯,使rpc透明化,使得呼叫遠端方法想呼叫本地方法一樣。server 服務端提供遠端服務。注 serverstub又叫skeleton。public inte ce ihellopublic cla...