turbo-rpc

turbo-rpc 是一款速度超凡的异步响应式RPC框架

功能特点

Quick Start

Maven依赖:

<!-- 必须引入 -->
<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.服务端实现接口

@Component
public class HelloServiceImpl implements HelloService {
    @Override
    public CompletableFuture<String> hello(String msg) {
        return CompletableFuture.completedFuture(msg);
    }
}

3.配置turbo-server.conf, 声明 服务器地址 序列化协议 注册地址 等信息

4.服务端启动

@SpringBootApplication(scanBasePackages = { "com.hello" })
@EnableTurboServer
public class TruboServerBootTest {
    public static void main(String[] args) {
        SpringApplication.run(TruboServerBootTest.class, args);
    }
}

5.客户端调用

@Component
public 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" })
@EnableTurboClient
public class HelloBootTest {
    public static void main(String[] args) {
        SpringApplication.run(HelloBootTest.class, args);
    }
}

turbo 技术原理