开源软件名称:turbo-rpc
开源软件地址:https://gitee.com/hank-whu/turbo-rpc
开源软件介绍:
turbo-rpcturbo-rpc 是一款速度超凡的异步响应式RPC框架 功能特点- 仅支持异步调用, Service 接口所有 public 方法返回值都必须为 CompletableFuture
- 配置定义在 Service 接口上, 而非实现类上, 方法实现者和调用者都不需要引入奇奇怪怪的注解
- 支持 REST 调用
- 支持失败回退, 支持熔断, 支持心跳, 支持自动重连
- 支持自定义 服务注册 负载均衡 序列化
- 支持 Filter, 可通过该机制实现 Tracing 限流限速 黑白名单 等功能
- 支持 spring boot
Quick StartMaven依赖: <!-- 必须引入 --><dependency> <groupId>com.turbo-rpc</groupId> <artifactId>turbo-rpc</artifactId> <version>0.0.9</version></dependency><!-- 序列化方式,kryo protostuff 两个中任选一个 --><dependency> <groupId>com.turbo-rpc</groupId> <artifactId>turbo-kryo</artifactId> <version>0.0.9</version></dependency><!-- 序列化方式,kryo protostuff 两个中任选一个 --><dependency> <groupId>com.turbo-rpc</groupId> <artifactId>turbo-protostuff</artifactId> <version>0.0.9</version></dependency><!-- zk注册中心,可选引入 --><dependency> <groupId>com.turbo-rpc</groupId> <artifactId>turbo-register-zk</artifactId> <version>0.0.9</version></dependency><!-- SpringBoot集成,可选引入 --><dependency> <groupId>com.turbo-rpc</groupId> <artifactId>turbo-spring-boot-starter</artifactId> <version>0.0.9</version></dependency> 1.定义接口 @TurboService(version = "1.0.0")public interface HelloService { @TurboService(version = "1.0.0", rest = "hello") default CompletableFuture<String> hello(String msg) { // default实现会自动注册为失败回退方法,当远程调用失败时执行 return CompletableFuture.completedFuture("error"); }} 2.服务端实现接口 @Componentpublic class HelloServiceImpl implements HelloService { @Override public CompletableFuture<String> hello(String msg) { return CompletableFuture.completedFuture(msg); }} 3.配置turbo-server.conf, 声明 服务器地址 序列化协议 注册地址 等信息 4.服务端启动 @SpringBootApplication(scanBasePackages = { "com.hello" })@EnableTurboServerpublic class TruboServerBootTest { public static void main(String[] args) { SpringApplication.run(TruboServerBootTest.class, args); }}
5.客户端调用 @Componentpublic class HelloReferTest { @Autowired HelloService helloService; public void doSomeThing(String msg) { helloService.hello(msg) .thenAccept(message -> System.out.println(message)); }} 6.配置turbo-client.conf, 声明 服务器地址 序列化协议 注册地址 等信息 7.客户端启动 @SpringBootApplication(scanBasePackages = { "com.hello" })@EnableTurboClientpublic class HelloBootTest { public static void main(String[] args) { SpringApplication.run(HelloBootTest.class, args); }} turbo 技术原理 |
请发表评论