Thrift 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Thrift 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Thrift 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
开发语言 Java 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织 Apache
地区 不详
投 递 者 不详
适用人群 未知
收录时间 2008-10-27

软件简介

Thrift 是一个软件框架(远程过程调用框架),用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引 擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。

thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器,现在是 Apache 基金会的顶级项目

thrift允许你定义一个简单的定义文件中的数据类型和服务接口,以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。。

著名的 Key-Value 存储服务器 Cassandra 就是使用 Thrift 作为其客户端API的。

服务定义文件:

service Calculator extends shared.SharedService {

  /**
   * A method definition looks like C code. It has a return type, arguments,
   * and optionally a list of exceptions that it may throw. Note that argument
   * lists and exception lists are specified using the exact same syntax as
   * field lists in struct or exception definitions.
   */

   void ping(),

   i32 add(1:i32 num1, 2:i32 num2),

   i32 calculate(1:i32 logid, 2:Work w) throws (1:InvalidOperation ouch),

   /**
    * This method has a oneway modifier. That means the client only makes
    * a request and does not listen for any response at all. Oneway methods
    * must be void.
    */
   oneway void zip()

}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (6)

加载中
该评论暂时无法显示,详情咨询 QQ 群:912889742
请教一个问题,有什么好用的适合Android或者IOS客户端的RPC调用框架吗?后台基本上用Java,Thrift,BRAP这两个框架怎么样?
2013/05/25 10:53
回复
举报
@红薯 Thrift下载地址错了 Thrift
2014/03/26 19:59
回复
举报
thrift既然底层用的是socket,为啥还要依赖httpclient #Thrift#
2016/02/02 08:21
回复
举报
thrift既然底层用的是socket,为啥还要依赖httpclient #Thrift#
2016/02/02 08:30
回复
举报
thrift 支持多种传输模式,可以使用raw socket通信,也可以通过以http协议通信
2020/04/03 20:36
回复
举报
更多评论
发表了资讯
2017/01/09 12:13

服务开发框架 Thrift 0.10.0 发布

Thrift 0.10.0 发布,Thrift 是一个可伸缩的跨语言的服务开发框架。它结合了功能强大的软件堆栈和代码生成引 擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。 暂时还未找到更新日志,欢迎评论提供。 下载地址: Source code (zip) Source code (tar.gz)...

4
21
发表了资讯
2013/08/22 00:00

服务开发框架 Thrift 0.9.1 发布

Thrift是一个可伸缩的跨语言的服务开发框架。It combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml. 服务开发框架Apache thrift 0.9.1发布。2013-08-22 上个版本还是2012-10-16的0.9.0 著名的 Key-Value 存储服务器 Cassandra 就是使用 Thrift 作为其客户端API...

1
28
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2018/03/04 15:55

【thrift】thrift详解

转载:http://zheming.wang/thrift-rpcxiang-jie.html Thrift Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(目前支持C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk和OCaml),并由生成的代码负责RPC协议层和传输层的实现。 Thrift实际上...

0
2
发表了博客
2019/05/17 14:39

[thrift] thrift基本原理及使用

<div id="content_views" class="markdown_views"> <!-- flowchart 箭头图标 勿删 --> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path> </svg> <p>参考文章<a href="https://blog.csdn.net/lihao21/article/details/54909236" rel="nofollow" target="_blank"...

0
0
发表了博客
2020/04/12 18:31

thrift笔记----大体上thrift知识

thrift类似java里面的socket和sockchannel中server和client通信 thrift最重要的是跨语言,里面提供了序列化和反序列化、json和实体对象等方法 Apache Thrift软件框架(用于可扩展的跨语言服务开发)将软件堆栈与代码生成引擎结合在一起, 以构建可在C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi  等语言 里面大概方法 图片转其他地方 数据类型 bool:布...

0
1
发表了博客
2015/03/02 08:35

thrift

hrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。 发展历程: thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器。 功能: thrift允许定义一个简单的定义文件中的数据类型和服务接口,...

0
1
发表了博客
2015/09/23 13:39

Thrift

thrift了解 跨平台RPC,生成不同语言

0
0
发表了博客
2020/04/12 17:32

thrift笔记----大体上thrift知识

thrift类似java里面的socket和sockchannel中server和client通信 thrift最重要的是跨语言,里面提供了序列化和反序列化、json和实体对象等方法 Apache Thrift软件框架(用于可扩展的跨语言服务开发)将软件堆栈与代码生成引擎结合在一起, 以构建可在C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi  等语言 里面大概方法 图片转其他地方 数据类型 bool:布...

0
0
发表了博客
2019/03/13 16:38

thrift maven

maven-thrift-plugin该插件可以让我们在maven中使用 编译.thrift文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.liyao</groupId> <arti...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2016/01/08 13:36

spark beeline 查询问题

beeline 通过thriftsvr 建立session select 的时候只能出现第一列的值,如下图: 单select一列数据的时候,可正常输出 求解答

2
0
发表了问答
2015/10/02 16:28

python脚本执行hive的HQL语句,报错?Invalid status -128

请问 python脚本执行hive的HQL语句,语句报错。 错误代码: 2015-09-30 01:43:26,568 ERROR [HiveServer2-Handler-Pool: Thread-39]: server.TThreadPoolServer (TThreadPoolServer.java:run(253)) - Error occurred during processing of message. java.lang.RuntimeException: org.apache.thrift.transport.TTransportException: Invalid status -128 at org.apache.thrift.transport.TSaslServerTransport$Factory.getTrans...

4
0
发表了问答
2016/06/02 11:35

thrift 使用 TFramedTransport 分层传输协议.如何获取客户端IP

服务端: TNonblockingServerSocket serverTransport = new TNonblockingServerSocket(new InetSocketAddress("0.0.0.0", port), timeout); THsHaServer.Args trArgs = new THsHaServer.Args(serverTransport); /**TTransport协议类型参见thrift.txt文件 */ trArgs.protocolFactory(new TCompactProtocol.Factory()); trArgs.transportFactory(new TFramedTransport.Factory()); trArgs.processorFactory(new TProcessorFac...

11
0
2015/12/29 13:30

求教如何实时监控数据库的变动

想要实现功能:检测目标数据中数据库的变动,返回变动数据,在另外一个系统中同步进行数据变动 只能通过检测数据库的方式监控变动,因为要要检测的数据库的系统是买的 改不了代码 目标数据库是mysql的 另一个是oracle的 求思路 求方法

0
0
发表了问答
2016/04/15 13:26

win10 下 php 的 stream_select 报错

win10 + php56+ thrift stream_select(): unable to select [34]: Result too large (max_fd=328)

2
0
发表了问答
2016/03/07 18:57

php使用CodeIgniter使用thrift的cpu使用率居高不下

最近在用php和thrift做个小东西,然后框架沿用之前的老系统,使用的是CodeIgniter,不过升级到了3.0.3。 php负责在前端接收http请求,然后通过thrift调用后端的Java做的服务接口。 在做第一轮压力测试的时候发现,php或者说CI的吞吐能力有点离谱。 测试环境服务器配置如下 cpu:Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz × 4 内存:2G OS:Debian GNU/Linux 6.0.5 php-fpm进程数:4 php的应用和java的应用部署在不同的服务器...

25
1
发表了问答
2017/06/08 14:51

dubbox+thrift ClassCastException

我使用的是dubbox 2.8.4+thrift,在某些情况下会报类型转换异常,报这个异常之后只能重启才能正常,在某些情况后又会抛异常,以下是异常堆栈。 [DUBBO] ChannelEventRunnable handle RECEIVED operation error, channel is NettyChannel [channel=[id: 0xbebe1b7d, /10.162.90.23:11451 => /10.51.38.65:30001]], message is Request [id=18, version=null, twoway=true, event=false, broken=false, data=RpcInvocation [meth...

3
0
发表了问答
2017/04/06 11:04

thrift,HELP

thrift客户端调用时,返回: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.sun.proxy.$Proxy69.saveBuyOne(Unkn...

1
0
发表了问答
2017/01/06 13:51

thrift struct 不支持继承怎么办???

thrift struct 不支持继承怎么办??? 最近在研究,rpc框架thrift, 针对java 来来说:一个类实体继承另一个类,怎么办? 返回null情况: https://www.ibm.com/developerworks/cn/java/j-lo-apachethrift/ 常见问题 NULL 问题 我们在对服务的某个方法调用时,有时会出现该方法返回 null 值的情况,在 Thrift 中,直接调用一个返回 null 值的方法会抛出...

3
0
发表了问答
2013/03/19 20:21

thrift传输文件,文本和avi格式的视频都能正常传输,jpg格式的图片有问题

thrift传输文件,文本和avi格式的视频都能正常传输,jpg格式的图片有问题。传输过来的图片不能打开,但是文件大小跟传过来之前的大小是一样的,不知道是不是要在传输的过程中进行编码处理或者怎么样。

3
1
发表了问答
2015/07/02 13:28

如何用zookeeper解决thrift的集群问题?

因为thrift不支持分布式,单点很容易出故障 所以想用zk解决thrift的集群 请问,能做吗?求思路?

5
0
发表了问答
2013/11/28 16:39

java thrift 如何传输文件

@liangxiao 你好,想跟你请教个问题:java 如何用thrift 传输文件,我想看文档,发现几乎没有这方面的文档,TFileTransport 这个我目前不知道怎么用

1
0
发表了问答
2016/07/21 16:56

Thrift底层通信的是netty实现的吗?

我们的系统是基于thrift做的,现在出现的问题是 外部的连接过多或者有连接死掉了会导致我们的系统连接满了,也就是请求从client端无法连接到我们thrift的服务端,总报错超时,其实我们看了后台并没有报错,服务端也没接收到,所以推测可能是thrift连接满了,其他的请求进不来(网络问题都排除了)。 所以目前我们想重构这里的实现逻辑,使用netty+protobuf或者直接使用netty+tcp(json形式传参数),不再使用netty。 疑问如下:...

14
1
发表了问答
2015/02/28 16:03

thrift是否支持NET Compact Framework

公司开发的windows ce应用,使用的是web service,巨慢,准备换成rpc方式,想使用thrift,不知道thrift是否支持NET Compact Framework?

1
0
发表了问答
2013/03/11 16:56

如何用thrift传送文件

这里有对thrift用的很熟的大牛吗?现在我用thrift在C++和java之间通讯,C++是客户端,java是服务器端。现在想要从C++客户端往Java服务器端传送文件,怎么处理啊?从Java服务器端忘C++客户端传送文件又怎么处理呢?

1
0
发表了问答
2015/04/22 15:20

ubuntu 下怎么用thrift 生成 java接口

ubuntu 下怎么用thrift 生成 java接口 之前是window时用:thrift-0.8.0.exe -r -gen java ./interface.idl 现在在ubuntu下,不知 怎么用了? 请教

1
0
发表了问答
2013/05/20 14:56

thrift 传输文件

@liangxiao 你好,想跟你请教个问题: 我看到你在两个月前说使用thrift传输文件,我现在需要实现这个功能但是不知道怎么做,能否告知一二,期待你的回复!

10
0
发表了问答
2015/09/03 22:26

apache Thrift如何优化java服务端代码(实现一个服务端可调用多个实现类)

最近使用了Thrift框架实现java远程方法调用,但是发现不怎么好扩展, 第一个问题,怎么实现多个接口? 第二个问题Thrift都是靠.thrift文件生成java接口代码,可不可以继承减少重复代码? 我的代码实现,服务端 服务端 public class RPCService implements Runnable {   // 注册端口   public static final int SERVER_PORT = 6543;      public void start() {     new Thread(new RPCService()).start(); }   @Override   p...

2
1
发表了问答
2016/01/07 16:00

Thrift如何动态的删除已经注册的服务

动态的增加服务,很简单 TMultiplexedProcessor mp = new TMultiplexedProcessor(); mp.registerProcessor("Calculator", new Calculator.Processor<>(new CalculatorImpl())); 这样,就动态的增加了一个服务 但是,动态的删除掉这个服务,怎么做

1
1
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
6 评论
590 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部