2016-07-22 82 views
1

使用幾個不同的消息和RPC系統後,我得出的結論是,你最終總是需要傳統的RPC,某種推事件。否則,你不可避免地結束了一些投票黑客。是否有任何允許回調的Thrift式RPC系統?

例如,HTTP原本只支持RPC風格的方法(GET和POST立即返回響應)。人們意識到推送事件是需要的,因此使用長輪詢來攻擊它。最終這被修復了Server-Sent Events

CoAP協議(HTTP的一個輕量級的基於UDP的版本)也加入了「監視」選項GET請求支持推送事件。這是一個非常優雅的解決方案。

但無論這些都是節儉風格的RPC,我的意思是你寫的接口定義文件,並有一些工具,編譯該接口爲本地代碼爲您選擇的語言。此後,您可以直接調用遠程過程,就好像它們是本地過程一樣。

所以我的問題是,是否有讓你訂閱推送事件並調用回調(或類似)當一個事件到達任何節儉風格的RPC系統?

+0

你看着GRPC?它基於回調(雖然不一定是訂閱模式,因爲我認爲你只能有一個處理程序),並且支持protobuf,並且剛開始也支持FlatBuffers。 – Aardappel

回答

1

是:

  • GRPC支持「流動」,這意味着單個邏輯RPC調用實際上可以涉及在每個方向上的多個消息。
  • Cap'n Proto支持對象的功能,其允許連接的任一側發送一個對象引用到另一側,它調用可以製成。例如,客戶端可以調用服務器上的方法,並且作爲方法參數之一提供回調對象。回調對象實現了一些預定義的RPC接口。當服務器調用回調對象時,它正在回調客戶端。事實上,Cap'n Proto連接是完全對稱的:客戶端和服務器之間的協議級沒有區別。

(披露:我是頭兒原的作者,也是Protocol Buffers的V2的作者,雖然我不GRPC無關。)

+0

完美,謝謝! – Timmmm

相關問題