几种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。

相关文章
相关标签/搜索