# thrift-admin **Repository Path**: jiangzhou123456/thrift-admin ## Basic Information - **Project Name**: thrift-admin - **Description**: thrift 封装 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-10-19 - **Last Updated**: 2024-06-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # thrift-admin(spring-boot-starter-thrift) #### 介绍 thrift 封装,可以像dubbo一样使用Java客户端 #### 软件架构 软件架构说明 thrift封装实现: 为了方便使用,将thrift封装成starter样式,spring boot项目应用后无需其他配置,在主类上使用@EnableThrift注解即可使用 提供的注解 @EnableThrift(@ThriftClient, @ThriftServer复合注解), @ThriftClient, 在主类上注解,标注当前服务为Thrift客户端消费者服务 @ThriftServer, 在主类上注解,标注当前服务为Thrift服务端生产者服务 @ThriftComponentScan, 在主类上注解,指定扫描ThriftService注解包路径 @ThriftService, 使用方式类似@Service,且具备@Service能力。在服务上注解,框架会将扫描范围内的标注有@ThriftService注解的类作为Thrift远程服务的提供者,并会将该服务注册到spring bean容器中。同时会将该类实现的接口作为thrift Iface类并注册到注册中心,方便和客户端建立联系 @ThriftReference, 使用方式类似@Autowire,且具备@Autowire能力。注解在字段,set方法上,框架会优先通过byName去注册中心找提供服务的Iface,如果name为空则byClass寻找,并生成Iface代理类将Client封装在内,调用方法时直接调用Client方法 #### 安装教程 1.新建maven/gradle项目, 2.新建iface模块 3.新建provider模块,在生产者主类上使用@ThriftServer注解,并在pom中依赖iface模块 4.新建consumer模块,在消费者主类上使用@ThriftClient注解,并在pom中依赖iface模块 5.iface模块中定义所需的接口, 6.provider模块中添加service实现iface接口,并加上@ThriftService注解 7.consumer模块中添加controller代码,并采用字段注入或者方法注入方式注入iface中定义的接口,能够像使用本服务一样使用远程服务 ![img_1.png](img_1.png) ![img_2.png](img_2.png) #### 能力 1.提供拦截器拓展接口 2.提供序列化器接口 3.支持多种thrift通信协议 * simple: 单线程阻塞模型 * nonBlocking: 单线程非阻塞模型 * threadPool: 线程池同步模型 * hsHa: 半同步半异步模型(默认使用) * threadedSelector: 线程池选择器模型 4.提供注册中心模板,默认zookeeper注册中心,拓展consul注册中心,可以快速拓展redis,nacos,数据库等作为注册中心 5.提供负载均衡模板,默认Robin规则,可以快速拓展其他规则 #### 使用说明 参考thrift-demo 添加拦截器可以处理处理多租户,日志链路 默认注册中心使用zookeeper,可选consul 默认使用服务hsHa 具体配置可以尝试一下 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request