當前位置: 妍妍網 > 碼農

讓rpc支持雙向通訊

2024-01-29碼農

百度解釋:RPC(Remote Procedure Call)— 遠端程序呼叫,它是一種透過網路從遠端電腦程式上請求服務,而不需要了解底層網路技術的協定。RPC協定假定某些傳輸協定的存在,如TCP或UDP,為通訊程式之間攜帶資訊數據。可能各位看了這句話,還是不懂。那我舉個例子。平時老婆經常給我發指令,陽台的衣服收下,面對面發就是本地過程呼叫,透過微信,或者電話告訴我。然後我再執行就是遠端程序呼叫。

## .net RPC框架選型

1.最好支持TCP、HTTP兩種通訊協定。即使不支持也可以擴充套件,或者整合兩種RPC元件。

2.最好支持異步、同步兩種呼叫方式。

3.效能要盡可能的好。

4.通訊層最好要有失敗重試的機制或者類似的補償機制。

5..net技術路線。

## 經過篩選,大致確定了2個元件:Thrift、gRPc

### 讓rpc支持雙向通訊

rpc采用了C/S模型,不支持雙向通訊:client只能遠端呼叫server端的RPC介面,但client端則沒有RPC供server端呼叫,這意味著,client端能夠主動與server端通訊,但server端不能主動與client端通訊而只能被動地對client端的請求作出應答。這種RPC模式在某些套用中存在缺陷,比如:有些套用,在大部份情況下,client端會主動向server端發請求或者向server端發送數據,而在少部份情況下,server端也需要主動向client發送一些命令,告知進行某些操作。

### 為了解決該問題

雙client/server

通訊雙方都既是client,也是server。該方案需要在通訊雙方之間建立兩個通訊通道,開啟兩個埠,這比較繁瑣,且很不優雅。但仍是目前普遍采用的一套方案。

client/server <————————-> client/server