Java基于String Boot、Thrift、Zookeeper实现RPC
来源:互联网 发布:遥控器淘宝 编辑:程序博客网 时间:2024/06/08 11:29
Thrift的优势是支持异构系统,相对于http协议效率较高,之前项目一直用的是dubbo,最近想了解一下thrift相关内容,以下是尝试工程中的一些内容,做一些记录
说明
1.代码基于JDK8、spring/boot实现
2.注册发现采用zookeeper
3.Thrift Sockect连接池使用commons-pool2实现
4.使用TMultiplexedProcessor发布多个服务
代码实现分为服务端(provider)和客户端(consumer),实际使用过程中一个项目可能既是服务端又是客户端
服务端
ThriftService: 注解类,标识需要暴露的服务,可以指定版本号version,权重weight,例如:
@ThriftService(version="1.1.2", weight=3)@Servicepublic class OrderServiceImpl implements OrderService.Iface{}
ThriftServerRegistry: 将暴露的服务注册到zookeeper,注册格式如下:
|rpc //root节点|- com.github.thrift.service1.user.UserService_1.1.1 //Persistent节点|-- 192.168.1.21:8089:3 //ip:port:weight, Ephemeral节点|-- 192.168.1.22:8089:2 //ip:port:weight, Ephemeral节点
客户端
ThriftReference: 注解类,标识需要消费的服务,可以指定服务版本号version,例如:
public class ConsumerService{ @ThriftReference(version="1.1.1") UserService.Iface userClient;}
ThriftServerDiscovery: 发现服务,并生成响应缓存
ThriftConsumerProxy: 生成服务代理
ThriftSocketPoolFactory: 工厂类,采用commons-pool2生成Thrift TSocket连接池
ThriftRefAnnBeanPostProcessor: 扫描含有ThriftReference注解的属性或者set方法,调用ThriftConsumerProxy的方法注入代理类
详细代码请查看github
项目结构
thrift-consumer: 服务消费端封装
thrift-provider: 服务提供端封装
thrift-service1-api: Thrift代码,供服务端和消费端引用
thrift-service1-core: 服务提供端示例
thrift-service2-core: 服务消费端示例
- Java基于String Boot、Thrift、Zookeeper实现RPC
- Thrift 个人实战--RPC服务的发布订阅实现(基于Zookeeper服务)
- 基于ZooKeeper和Thrift构建动态RPC调用
- RPC入门总结(七)Thrift+Zookeeper实现服务治理
- 基于Netty和Zookeeper实现RPC框架
- 基于spring+thrift集成zookeeper实现服务注册与发现
- thrift系列 - harpc 基于thrift的轻量级rpc框架
- thrift(1)------基于thrift通信组件的简单RPC服务
- Thrift RPC
- 基于zookeeper、连接池实现的Thrift服务负载均衡和服务发现
- 基于Thrift的高可用RPC开源项目
- VIP_OSP--基于Thrift的RPC框架的基本原理
- Apache Thrift基于RPC的远程调用 c++
- 基于Java平台的AMF-RPC实现(BlazeDS)
- Java实现简单的RPC调用(基于TCP协议)
- Zookeeper实现简单的分布式RPC框架
- 利用zookeeper实现简单的RPC框架
- nodejs基于zookeeper的thrift简易框架---(typescript)
- 工作任务
- forEach()和map()的区别
- jasypt 集成spring、spring boot 加密
- VPN问题记录
- 时间格式转换 X小时前
- Java基于String Boot、Thrift、Zookeeper实现RPC
- Linux物理内存管理概述
- 小伙伴建站解读,网站改版的三种模式
- 解决NetBeans代码编辑视图和左边的项目文件同步定位的问题
- 第八周(2) 数组和广义表 对称矩阵的压缩存储及基本
- javascript Math对象
- 收藏的连接
- Java中可变长参数的使用及注意事项
- Fatal signal 11问题的解决方法