在IT行业中,Thrift是一种高性能、可扩展的跨语言服务开发框架,由Facebook开源,现由Apache基金会维护。Thrift的主要目标是通过定义一种中间表示(IDL,接口定义语言)来构建可序列化数据结构和服务接口,使得不同编程语言之间可以进行高效、透明的通信。在本Java实现Thrift的Demo中,我们将深入理解Thrift的工作原理以及如何使用Java来实现它。 让我们了解Thrift的基本工作流程: 1. **接口定义**:使用Thrift IDL编写服务接口和数据类型。例如,你可以创建一个名为`Calculator`的服务,其中包含加、减、乘、除等方法,以及对应的请求和响应数据结构。 ```thrift service Calculator { i32 add(1:i32 num1, 2:i32 num2), i32 subtract(1:i32 num1, 2:i32 num2), i32 multiply(1:i32 num1, 2:i32 num2), i32 divide(1:i32 num1, 2:i32 num2) } ``` 2. **代码生成**:使用Thrift编译器将IDL文件转换为各种目标语言的源代码,包括Java。这会生成服务接口类(如`Calculator.java`)、协议处理类以及数据结构类。 3. **服务实现**:在Java中,你需要实现生成的服务接口。例如,创建一个`CalculatorServer`类,其中包含`Calculator`服务的所有方法的实现。 ```java public class CalculatorServer implements Calculator.Iface { @Override public int add(int num1, int num2) { return num1 + num2; } // 实现其他方法... } ``` 4. **服务器启动**:创建一个服务器实例,绑定到特定端口,并启动服务。通常会使用`TServer`抽象类的一个实现,如`TSimpleServer`或`TForkingServer`。 ```java TServerTransport serverTransport = new TServerSocket(9090); Calculator.Processor processor = new Calculator.Processor<>(new CalculatorServer()); TServer server = new TSimpleServer(serverTransport, processor); server.serve(); ``` 5. **客户端生成**:Thrift编译器同样会为客户端生成必要的代码。客户端可以使用这些类来创建服务的代理对象,与服务器进行通信。 6. **客户端调用**:在客户端代码中,创建一个`Calculator.Client`实例,连接到服务器,然后调用服务方法。 ```java TTransport transport = new TSocket("localhost", 9090); TProtocol protocol = new TBinaryProtocol(transport); Calculator.Client client = new Calculator.Client(protocol); transport.open(); int result = client.add(10, 20); transport.close(); System.out.println("Result: " + result); ``` 这个Java实现的Thrift Demo展示了如何利用Thrift进行跨语言通信。Thrift提供了一种高效的二进制序列化格式,使得数据在网络传输中占用更少的带宽,同时提供了丰富的服务接口定义,简化了多语言服务的开发。通过这种方式,开发者可以轻松地构建分布式系统,实现服务之间的高效通信。在实际应用中,Thrift常用于构建微服务架构,因为它能够很好地处理大规模、高性能的服务间通信需求。
2025-05-20 20:16:53 719KB java
1
压缩包分为三个部分,java工程(java的服务方,和java客户端) php工程,php的客户端 linux环境的服务方部署包以及脚本 其中myserver.tar.gz压缩包是linux环境的部署包, 在linux环境先解压, tar -zxvf myserver.tar.gz ./ 启动的时候进入 myserver/mysh/目录 然后运行 restart_thrift.sh 脚本就可以直接启动 ps 一下进程是否正常,如果错误请查看日志 然后就可以使用线下的php直接调用, 代码是从网上找到的,比较容易入门 当然也可以直接导入java目录下的java工程,直接运行服务端更简单
2023-11-22 09:05:59 6.96MB thrift java
1
一个例子c++php通讯的thrift例子。使用了facebook的thrift。学习一下。
2023-10-20 09:06:37 43KB thrift c++ php
1
Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 等等编程语言间无缝结合的、高效的服务。 Thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器。thrift允许你定义一个简单的定义文件中的数据类型和服务接口。以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。 官网地址:thrift.apache.org
2023-04-03 10:53:47 5.38MB thrift0.10 windows
1
thrift应用, c#实现,代码简洁清晰,一看就会。。。分布式技术必掌握之一
2023-03-30 13:01:21 460KB thrift .net csharp c#
1
包含boost、libevent、openssl、zlib、msys、perl等。 windows下使用MinGW编译thrift方法: https://blog.csdn.net/xzhswust/article/details/126914014 windows下使用VS2015编译thrift方法: https://blog.csdn.net/xzhswust/article/details/126915345
2022-12-13 14:10:13 144.12MB thrift
1
linux下呕心沥血的安装和测试thrift,真诚感谢整个过程中的各位帖主。
2022-11-09 18:40:51 2.12MB linux; thrift
1
libthrift.lib libthriftnb.lib
2022-07-29 10:02:51 6.08MB thrift libthrift.lib libthriftnb.lib
1
该文件thrift-0.9.2编译生成库,可直接使用,libthrift-0.9.2.so这个也需要
2022-07-29 09:59:55 3.85MB lib thrift
1
使用wireshark抓取thrift协议接口调用
2022-07-23 09:01:07 340KB thrift
1