gRPC vs Thrift_dazheng的博客-CSDN博客_grpc thrift


本站和网页 https://blog.csdn.net/dazheng/article/details/48830511 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

gRPC vs Thrift_dazheng的博客-CSDN博客_grpc thrift
gRPC vs Thrift
置顶
dazheng
于 2015-09-30 17:01:42 发布
33094
收藏
33
分类专栏:
框架
文章标签:
thrift
grpc
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dazheng/article/details/48830511
版权
框架
专栏收录该内容
1 篇文章
1 订阅
订阅专栏
简单分布式架构
基本问题
传输什么样的数据,用哪种协议哪种方式数据交换的效率好服务端如何处理请求
需要扩展服务端时
当你的服务超过最简单结构时,你想要
灵活性可扩展低延迟当然,你更想要简单
应该用这些协议吗
SOAP
XML, XML还是XMLCORBA
美好的想法,糟糕的实现过渡设计和臃肿 DCOM, COM+
主要用于windows平台HTTP/TCP/Socket/Whatever
久经考验的但是缺少协议处理
需要自己实现协议封装自己实现客户端、服务端关注底层协议及状态
那我们需要什么
不同的语言间可以透明交互
平台和语言无关可以很好的平衡
效率(时间、空间)开发易用性和执行速度使用已有的类库
RPC编程简介
远程过程调用(Remote Procedure Call,RPC)
是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。为什么选择RPC
提高开发效率,开发人员可以把更多精力放在具体的接口实现,而不必考虑数据的底层传输问题。大多数rpc框架都是很多优秀开发人员的智慧结晶,它们的功能实现和执行效率都很优秀。client端和server端必须遵循统一的接口规范,避免产生client和server之间接口或数据局结构不匹配的情况。
Google gRPC
gRPC
gRPC是一个高性能、通用的开源RPC框架,其由Google 2015年主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发语言。gRPC提供了一种简单的方法来精确地定义服务和为iOS、Android和后台支持服务自动生成可靠性很强的客户端功能库。客户端充分利用高级流和链接功能,从而有助于节省带宽、降低的TCP链接次数、节省CPU使用、电池寿命。最新的Google API支持gRPC支持 C, C++, Node.js, Python, Ruby, Objective-C,PHP and C#当前版本Alpha协议 BSDProtoBuf
其由Google 2001年设计,2008年开源。Google内部的服务几乎都是用的PB协议久经考验、充分验证、良好实现 -使用ProtoBuf: Google、Hadoop、ActiveMQ、Netty当前版本v3.0.0-alpha-3协议 BSD
Apache Thrift
thrift是一种可伸缩的跨语言服务的RPC软件框架。它结合了功能强大的软件堆栈的代码生成引擎,以建设服务,高效、无缝地在多种语言间结合使用。2007年由facebook贡献到apache基金,是apache下的顶级项目。支持C、C++ 、C# 、D 、Delphi 、Erlang 、Go 、Haxe 、Haskell 、Java 、JavaScript 、node.js 、OCaml 、Perl 、PHP 、Python 、Ruby 、SmallTalk使用Thrift:Hadoop、HBase、Cassandra、Scribe、LastFM、Facebook、 Evernote当前版本 0.9.2协议Apache License 2.0
典型操作模型
IDL-like语言定义接口运行工具生成java、python、Go等引用程序
如: thrift –gen go MyProject.thrift生成的引用程序哪怕再多,都是可读的在自己的程序中引用生成的程序DO NOT EDIT!
Tthritr操作原理
gRPC实现原理类似
Interface Definition Language (IDL)
gRPC
syntax = "proto3"; //protobuf3协议
package infg;
option optimize_for=SPEED;
message Person {
string name = 1;
map<string, int64> tel = 2;
message MediaRp {
string uri = 1;
string title = 2;
int32 width = 3;
int32 height = 4;
repeated Person person = 5;
enum Player {
JAVA = 0;
FLASH = 1;
Player player = 6;
message MediaRq {
string uri = 1;
service media {
rpc Media(MediaRq) returns (MediaRp);
Thrift
namespace go inft
typedef i32 int;
typedef i64 long;
enum Player {
JAVA = 0;
FLASH = 1;
struct Person {
1: required string name;
2: optional map<string, long> tel;
struct MediaRp {
1: required string uri;
2: optional string title;
3: required int width;
4: required int height;
5: required list<Person> person;
6: required Player player;
struct MediaRq {
1: required string uri;
service media {
MediaRp media(1: MediaRq mediaRq);
IDL 规则
每列必须有一个唯一的正整数标识符Thrift每列可以标识是“optional”、“required”,pb不可以,每列都是“optional”gRPC service中,都必须有输入和输出,而且参数及返回值必须是定义好的message类型,而thrift中,输入和输出都可以为空,而且参数可以是定义好的struct,也可以是其他支持的类型structs/messages都可以包含其他的structs/messages每列可以有“default”值同一个文件中, 多个structs/messages可以被引用可以引入其他文件定义整数标识符
“= 1”, “ = 2” or “ 1:”, “ 2:”,在二进制文件中唯一标识一列保持数字标识不变非常重要数字1到15占用一个字节数字16到2047占用两个字节保持1到15用以最频繁使用的字段
比较
测试环境: 116做RPC服务器,118做AS server、RPC客户端 116 24核CPU 128G内存, 118 32核CPU 196G内存, 都是万兆网
多版本
系统应该支持多版本,哪怕是老的客户端调用新的服务端,或者相反在Thrift和protobuf中,多版本是通过字段标识符实现的正在使用的字段,请不要更新整数标识符可以删除不在使用的字段,原标识符可以分给其他字段PB中[deprecated=true]标识废弃字段字段标识符和字段类型唯一标识一个字段不需要重新编译新版本
如何选择
什么时候应该选择gRPC而不是Thrift
需要良好的文档、示例喜欢、习惯HTTP/2、ProtoBuf对网络传输带宽敏感什么时候应该选择Thrift而不是gRPC
需要在非常多的语言间进行数据交换对CPU敏感协议层、传输层有多种控制要求需要稳定的版本不需要良好的文档和示例
参考
gRPC官网 http://www.grpc.io/ Thrift官网 http://thrift.apache.org/ Pb vs thrift vsf avro http://www.slideshare.net/IgorAnishchenko/pb-vs-thrift-vs-avro golang gRPC示例 http://blog.csdn.net/dazheng/article/details/46544045 THRIFT VS. PROTOCOL BUFFERS http://old.floatingsun.net/articles/thrift-vs-protocol-buffers/ Thrift使用指南 http://dongxicheng.org/search-engine/thrift-guide/
dazheng
关注
关注
18
点赞
33
收藏
打赏
评论
gRPC vs Thrift
简单分布式架构基本问题 传输什么样的数据,用哪种协议哪种方式数据交换的效率好服务端如何处理请求需要扩展服务端时当你的服务超过最简单结构时,你想要 灵活性可扩展低延迟当然,你更想要简单应该用这些协议吗SOAP XML, XML还是XMLCORBA 美好的想法,糟糕的实现过渡设计和臃肿 DCOM, COM+主要用于windows平台HTTP/TCP/Socket/Wh
复制链接
扫一扫
专栏目录
rpc王者—gRPC框架
12-22
gRPC框架视频教程,该课程内容主要包括grpc入门、安装、文件编写和编译、grpc-server编写、grpc-client编写。
armeria,异步rpc/rest库构建在java 8、netty、http/2、thrift和grpc之上.zip
10-11
有关详细信息,请访问官方网站。
评论 4
您还未登录,请先
登录
后发表或查看评论
(三)四种流行的RPC框架(Dubbo/Motan/Thrift/Grpc)
热门推荐
zl_StepByStep的博客
04-14
1万+
目录
●Dubbo
●Motan
● Thrift
● Grpc
上述四种流行RPC框架的对比
●Dubbo
本来阿里2014年就不在维护Dubbo了,直到2017年9月份又恢复了维护,可能一来是用户量很多,哪怕是在不维护的情况下还是有很多的用户,二来是微服务比较火,比较看好微服务的方向。以下是Dubbo的架构模型(实线表示同步调用,虚线表示异步调用):
...
分布式系统应用——gRPC教程
最新发布
weixin_47692652的博客
10-24
648
分布式系统应用——gRPC教程
Go-Turbo一个很”轻”的微服务工具把你的grpc|thrift接口变成HTTP接口
08-13
Turbo能生成一个反向代理服务器,把HTTP请求转换为 grpc 或者 Thrift 格式的请求。
ice-dubbo-thrift-grpc性能测试对比
06-05
ice-dubbo-thrift-grpc性能测试对比 ,ice-dubbo-thrift-grpc性能测试对比,ice-dubbo-thrift-grpc性能测试对比,ice-dubbo-thrift-grpc性能测试对比
grpc和thrift的概念及区别
铁柱的博客
08-13
597
rpc框架是微服务时代绕不过去的坎,作为连接各个微服务的“纽带”,也是我们后端从业人员必须掌握的。博主目前接触过thrift和grpc,两者可谓各有千秋,都值得我们学习。以下是早期的学习笔记,部分来源已经找不到出处了,记录一下。...
Golang通过Thrift框架完美实现跨语言调用
三少GG
08-26
5984
每种语言都有自己最擅长的领域,Golang 最适合的领域就是服务器端程序。
  做为服务器端程序,需要考虑性能同时也要考虑与各种语言之间方便的通讯。采用http协议简单,但性能不高。采用TCP通讯,则需要考虑封包、解包、粘包等等很多因素,而且想写个高效的TCP服务,也很难。
  其实,对于此类需求,采用RPC(Remote Procedure Call Protocol)编程最靠谱。使用 RP
Grpc 和 Thrift 对比
chengzhi0371的博客
04-17
4437
RPC协议
远程过程调用, 计算机通信协议,允许运行于一台机器上的程序调用网络中另外一台机器的子程序
为什么选择RPC
提高开发效率,开发人员可以把更多精力放在具体的接口实现,而不必考虑数据的底层传输问题。
大多数rpc框架都是很多优秀开发人员的智慧结晶,它们的功能实现和执行效率都很优秀。
...
gRPC vs Thrift 比较
刘小雨的博客
12-12
137
https://blog.csdn.net/dazheng/article/details/48830511
微服务网关选型,请收下我的膝盖!
石杉的架构笔记
02-14
664
「关注“石杉的架构笔记”,大厂架构经验倾囊相授」儒猿技术团队最新出品《基于ShardingSphere的分库分表实战》文章来源:【公众号:楼仔】| 常用API网关的对比和选型,并讲解...
RPC-TEST:测试gRPC和Thrift的性能。 所有服务均由Java,Scala和Golang实施为HelloWorld
05-20
简单的Thrift和gRPC性能测试
使用一个简单的“ helloworld”原型来测试节俭和gRPC。 所有服务器和客户端均由Golang,Java和Scala实现
测试结果如下(毫秒/ 10000次呼叫)。 第一个值使用一个客户端测试服务器,第二个值使用20个客户端同时测试。
高朗
Java
Scala
节约
470/231
404/381
387/355
gRPC
1375/970
4478/4205
4733/448
dubbo、dubbox、motan、thrift、grpc等RPC框架比较及选型
weixin_30648963的博客
10-28
1908
概述
前段时间项目要做服务化,所以我比较了现在流行的几大RPC框架的优缺点以及使用场景,最终结合本身项目的实际情况选择了使用dubbox作为rpc基础服务框架。下面就简单介绍一下RPC框架技术选型的过程。
RPC简述
该系列文章将讲述以下RPC框架的helloword实例以及其实现原理简述,由于每一种RPC框架的原理实现不同且都比较复杂,如果想深入研究还请自行到官网或者其他技术博客学习。R...
thrift长连接 java_thrift,gRPC,rpcx,motan,dubbox等rpc框架对比-Go语言中文社区
weixin_39965881的博客
02-28
267
thrift,gRPC,rpcx,motan,dubbox等rpc框架对比MotanDubboxthriftgRPCrpcx开发语言JavaJava跨语言跨语言go分布式服务治理YY可以配合zookeeper, Eureka等实现可以配合etcd(go),zookeeper,consul等实现自带服务注册中心,也支持zookerper,etcd等发现方式底层协议motan协议,使用tcp长连接Du...
【译】基于python 的 RPC 框架比较: gRPC vs Thrift vs RPyC
goodspeeed的专栏
08-15
457
原文地址:https://www.hardikp.com/2018/07/28/services/引言那一年是2015年。我正在写一堆ML训练脚本以及几个生产脚本。他们都需要金融数据。数据...
【RPC基础系列2】一文搞懂gRPC和Thrift的基本原理和区别
飞楼踏梦
08-09
580
​讲解gRPC和Thrift的基本原理,以及两者如何选型。
前言
之前对于gRPC和Thrift只停留在会用的阶段,虽然也初步了解过两者的执行流程,但时间一长又忘了,如果让我评估两者如何选型,我更是蒙圈。所以就想把之前学习的知识整理一下,来填补自己的知识盲区。
Rpc回顾
更多内容请参考《【RPC基础系列1】聊聊RPC》
RPC 框架的目标就是让远程服务调用更加简单、透明,RPC 框架负责屏蔽底层的传输方式(TCP 或者 UDP)、序列化方式(XML/Json/ 二进制)和通信细节。服...
rpc_thrift
hs_wimy的博客
05-18
38
rpc的一点自我理解
即远程过程调用。通常来说是指一台机器调用另一台机器上的服务。那么其是基于网络通信的,要保证可靠性的话rpc则是采用tcp来进行传输。数据在网络中的传输都是基于二进制流的形式,那么就需要将请求体和响应进行序列化,有基于文本形式的json和基于二进制形式的protocol buffer等等。常见的rpc框架有grpc(Google), thrift(Facebook)。
protocol buffer优势
网上已经有很多文章,大致来说即更小的存储体积,更快的计算速度,但不是明文传输,需要工
go微服务系列(十一):gRPC和Thrift使用与选型
阿白,
06-21
468
其实,除了 gRPC 外,Facebook 开源的 Thrift 框架也是业界较为流行的 RPC 方案,比如 HBase 就是使用它来提供 API 支持的。gRPC 是由 Google 开源的高性能 RPC 框架。自 2015 年发布以来,gRPC 日益成熟,并成为跨语言 RPC 通信中最流行也最受欢迎的选择之一。gRPC 拥有很多特性,其中最引人注目的有以下几个方面:1.内置流式 RPC 支持。这意味着你可以使用同一 RPC 框架来处理普通的 RPC 调用和分块进行的数据传输调用,这在很大程度上统一了网络
grpc与thrift
jimmy-yang的博客
04-03
1483
HTTP2.0 相比 HTTP1.1 有非常大的不同,HTTP1.1 还是基于文本协议的问答有序模式,但是 HTTP2.0 是基于二进制协议的乱序模式 (Duplexing)。这意味同一个连接通道上多个请求并行时,服务器处理快的可以先返回而不用因为等待其它请求的响应而排队。
头部优化:我们知道 HTTP 协议的请求头有大量的 key/value 文本组成,多个请求直接 key/value 重复...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
dazheng
CSDN认证博客专家
CSDN认证企业博客
码龄17年
暂无认证
44
原创
10万+
周排名
163万+
总排名
19万+
访问
等级
1973
积分
37
粉丝
48
获赞
29
评论
152
收藏
私信
关注
热门文章
gRPC vs Thrift
33093
Go连接Kafka
28385
数据湖介绍
20927
Aerospike使用介绍
20378
ETL DataStage实现
16433
分类专栏
系统
8篇
hadoop
10篇
DataStage
2篇
数据库
7篇
Go
6篇
读书笔记
5篇
工具
1篇
数据仓库
4篇
NoSQL
2篇
BigData
4篇
框架
1篇
数据挖掘
2篇
生活
最新评论
gRPC vs Thrift
楼仔:
我之前看了一篇RPC框架选型的文章,里面包括GRPC、Thrift、Dubbo、Spring Cloud这4种常用的RPC框架,讲述了每种框架的原理,还有示例,非常适合新手或者进阶的同学学习,希望可以一起学习交流~~
《RPC框架:从原理到选型,一文带你搞懂RPC》:https://mp.weixin.qq.com/s/ll4nUVB28KpyTMS93xAckQ
ETL DataStage实现
dazheng:
谢谢,还是2009年写的,太老了
Aerospike使用介绍
Nicky Li_Aerospike
回复
张立钢OR张练钢: 商用版确实在性能上有很大的提高,您可以关注Aerospike微信公众号:aerospike_cn, 可以和AS官方的技术顾问交流,谢谢!
ETL DataStage实现
黑心砖厂搬运工:
博主厉害啊,作为DS入门非常不错
免费:商业的未来(读书笔记)
uybeg:
哈哈
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
ETL SparkSQL实现
数据湖介绍
Go连接Hive
2020年1篇
2017年1篇
2016年3篇
2015年46篇
目录
目录
分类专栏
系统
8篇
hadoop
10篇
DataStage
2篇
数据库
7篇
Go
6篇
读书笔记
5篇
工具
1篇
数据仓库
4篇
NoSQL
2篇
BigData
4篇
框架
1篇
数据挖掘
2篇
生活
目录
评论 4
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
dazheng
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值