幾種RPC的對比

Tars:php

Tars 是由騰訊出品的強大高性能RPC開發框架,配套一體化的運營管理,經過伸縮調度,實現運維半托管服務,目前支持C++,JAVA,PHP,Nodejs,Golang等語言。Tars最強大的地方在於在分佈式的環境中的優點,以及多語言的支持,如今不少的RPC框架並不支持PHP語言,Tars很好的支持了PHP的RPC框架。騰訊內部也一直都在使用,主要使用的是C++的框架,新推出的是基於GOlang的RPC框架。本人嘗試去搭建Tars基於GOlang的RPC服務,首先編寫客戶端和服務的的代碼是很容易的,安裝官方的語法規定寫出相應的代碼框架,而後使用tars2go工具轉換成go語言。Tars的基礎服務都是用C++寫的。官方的搭建文檔很是的簡單,沒有實用性,網上不少熱心的愛好者給了更詳細的搭建方法,這裏推薦博客:https://blog.csdn.net/m0_37973394/article/details/86591838。搭建過程是艱難的,進行了測試以後發現這個後端的網頁管理作的不是很完善,存在一些bug。我在測試的時候服務常常起不來,也是不知道爲何。可是相信強大的騰訊團隊後面會作的愈來愈好。node

 

motan-gopython

 

code地址:https://github.com/weibocom/motan-go.git,按照官方的描述以下:c++

Motan是一套高性能、易於使用的分佈式遠程服務調用(RPC)框架。 Motan-go是motan的golang語言實現。git

功能github

  • 提供golang client、server以及agent與其餘語言經過motan2協議進行通訊。
  • 支持集成consul、zookeeper等配置服務組件,提供集羣環境的服務發現及治理能力。
  • 支持動態自定義負載均衡、跨機房流量調整等高級服務調度能力。
  • 基於高併發、高負載場景進行優化,保障生產環境下RPC服務高可用。
  • agent支持雙向代理,經過agent可使其餘解釋型語言(例如PHP)快速提供、訪問motan服務。
  • agent支持強大的擴展機制,可以提供完整服務治理功能

motan-go支持集羣調用,使用的是zookeeper分佈式應用程序協調服務。目前不支持consul,使用agent實現和其餘語言的互通,和go之間不須要代理。 在github上的例子和如今的代碼是不匹配的,我在使用的時候是有問題的,可是在其源碼的main目錄下有想要的server和client的例子能夠直接運行成功。golang

motan-go支持服務器的發現和卸載,註冊中心和服務間使用心跳來包活。c#

誇語言使用simple序列號方式。後端

motan-go和騰訊的Tars進行對比優缺點以下:服務器

RPC框架

是否支持分佈式

是否須要中間文件

是否支持PHP

是否支持後臺管理

是否須要代理

   

motan-go

   

Tars

   

 

rpcx

github地址:https://github.com/smallnest/rpcx

從某種程度上說這個和motan是類似的,可是rpcx沒有代理,一樣使用zookeeper,etcd,consul等做爲註冊中心,目前motan只支持zookeeper其餘不支持,rpcx支持的比較多,rpcx還有一套服務的UI系統,這個功能和Tars是差很少,可是比Tars的簡單。rpcx一樣具備高性能,實現分佈式管理,負載均衡的功能。可是從代碼的完善程度上來講,rpcx更加的成熟和完善,文檔也是至關的完善,例子也是很是的多,我的感受是一個跨語言的不錯選擇,支持php, python, c/c++, node.js, c#等,數據的傳輸格式也支持的比較多:raw slice of bytes, JSON, Protobuf and MessagePack。

相關文章
相關標籤/搜索