文档章节

几种RPC的对比

F
 FLYUP_CHEN
发布于 03/13 17:54
字数 1055
阅读 85
收藏 1

Tars:

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。我在测试的时候服务经常起不来,也是不知道为什么。但是相信强大的腾讯团队后面会做的越来越好。

 

motan-go

 

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

Motan是一套高性能、易于使用的分布式远程服务调用(RPC)框架。 Motan-go是motan的golang语言实现。

功能

  • 提供golang client、server以及agent与其他语言通过motan2协议进行通信。
  • 支持集成consul、zookeeper等配置服务组件,提供集群环境的服务发现及治理能力。
  • 支持动态自定义负载均衡、跨机房流量调整等高级服务调度能力。
  • 基于高并发、高负载场景进行优化,保障生产环境下RPC服务高可用。
  • agent支持双向代理,通过agent可以使其他解释型语言(例如PHP)快速提供、访问motan服务。
  • agent支持强大的扩展机制,能够提供完整服务治理功能

motan-go支持集群调用,使用的是zookeeper分布式应用程序协调服务。目前不支持consul,使用agent实现和其他语言的互通,和go之间不需要代理。 在github上的例子和现在的代码是不匹配的,我在使用的时候是有问题的,但是在其源码的main目录下有想要的server和client的例子可以直接运行成功。

motan-go支持服务器的发现和卸载,注册中心和服务间使用心跳来包活。

夸语言使用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。

© 著作权归作者所有

F
粉丝 5
博文 33
码字总数 21152
作品 0
万州
高级程序员
私信 提问
AMQP-RabbitMQ/6/RPC模式/关注消息处理结果

6. RPC But what if we need to run a function on a remote computer and wait for the result? Well, that's a different story. This pattern is commonly known as Remote Procedure Cal......

FutaoSmile丶
06/08
0
0
技术问题纪录1

Spring Bean的生命周期 Spring AOP的定义与原理,运行时增强还是编译时增强 Spring bean后处理器与容器后处理器 Spring事务传播行为 Spring 事务编程式事务处理 HashMap,TreeMap,Hashtable,...

yanjilin
2016/12/05
8
0
远程调用方式 ==> RPC与Http的比较

一.远程调用方式 无论是微服务还是分布式服务(都是SOA,都是面向服务编程),都面临着服务间的远程调用。那么服务间的远程调用方式有哪些呢? 常见的远程调用方式有以下几种: RPC:Remote ...

Armymans
2018/11/30
0
0
分布式一致性算法Raft

  Paxos自1990年提出以后,相当长时间内几乎已成为分布式一致性算法的代名词。但因其难以理解和实现,目前知名实现仅有Chubby、Zookeeper、libpaxos几种,其中Zookeeper使用的ZAB对Paxos做...

莫名2013
2018/01/10
0
0
RPC如何提高响应速度

手写了一个rpc 1.zookeeper注册发现服务; 2.common-pool管理netty-client链接; 3.netty nio异步通讯,通过notify实现同步调用 问题来了,上述RPC本地调用耗时400ms/100次,对比另一款rpc耗时...

许雪里
2015/11/06
528
2

没有更多内容

加载失败,请刷新页面

加载更多

可见性有序性,Happens-before来搞定

写在前面 上一篇文章并发 Bug 之源有三,请睁大眼睛看清它们 谈到了可见性/原子性/有序性三个问题,这些问题通常违背我们的直觉和思考模式,也就导致了很多并发 Bug 为了解决 CPU,内存,IO ...

tan日拱一兵
30分钟前
3
0
网络七层模型与TCP/UDP

为了使全球范围内不同的计算机厂家能够相互之间能够比较协调的进行通信,这个时候就有必要建立一种全球范围内的通用协议,以规范各个厂家之间的通信接口,这就是网络七层模型的由来。本文首先...

爱宝贝丶
34分钟前
4
0
Jenkins World 贡献者峰会及专家答疑展位

本文首发于:Jenkins 中文社区 原文链接 作者:Marky Jackson 译者:shunw Jenkins World 贡献者峰会及专家答疑展位 本文为 Jenkins World 贡献者峰会活动期间的记录 Jenkins 15周岁啦!Jen...

Jenkins中文社区
51分钟前
8
0
杂谈:面向微服务的体系结构评审中需要问的三个问题

面向微服务的体系结构如今风靡全球。这是因为更快的部署节奏和更低的成本是面向微服务的体系结构的基本承诺。 然而,对于大多数试水的公司来说,开发活动更多的是将现有的单块应用程序转换为...

liululee
今天
8
0
OSChina 周二乱弹 —— 我等饭呢,你是不是来错食堂了?

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @ 自行车丢了:给主编推荐首歌 《クリスマスの夜》- 岡村孝子 手机党少年们想听歌,请使劲儿戳(这里) @烽火燎原 :国庆快来,我需要长假! ...

小小编辑
今天
904
12

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部