Skip to content
xin.cao edited this page Jun 18, 2020 · 8 revisions

YuRPC

高性能RPC框架

yurpc 是一个基于java的高性能开源RPC框架,在API使用中借鉴了dubbo面向接口编程,使用过dubbo的可以很容易迁移享受高性能带来的服务体验。提供springboot高度集成starter包,实现几乎零配置使用

logo

YuRPC 实战

maven 依赖

<dependency>
    <groupId>com.github.xincao9</groupId>
    <artifactId>yurpc-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>

实体定义


public class Say {

    private Integer id;
    private String body;

    public Say(Integer id, String body) {
        this.id = id;
        this.body = body;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getBody() {
        return body;
    }

    public void setBody(String body) {
    
        this.body = body;
    }

    @Override
    public String toString() {
        return JSONObject.toJSONString(this, SerializerFeature.DisableCircularReferenceDetect);
    }
}

服务接口定义

public interface SayService {

    Say perform(Say say);
}

提供者实现服务接口

@YuRPCService
public class SayServiceImpl implements SayService {

    @Override
    public Say perform(Say say) {
        return say;
    }

}

服务提供者启动类

@SpringBootApplication
@EnableYuRPC(server = true)
public class ApplicationProvider {

    public static void main(String... args) {
        SpringApplication.run(ApplicationProvider.class, args);
    }
}

服务消费者启动类

@SpringBootApplication
@EnableYuRPC(client = true)
public class ApplicationConsumer {

    @YuRPCAutowired
    private SayService sayService; // 可以在任何spring bean 中注入yurpc服务


    public static void main(String... args) {
        SpringApplication.run(ApplicationConsumer.class, args);
    }

    @Bean
    public CommandLineRunner commandLineRunner() {
        return (String... args) -> {
            for (int no = 0; no < 100; no++) {
                String value = RandomStringUtils.randomAscii(128);
                Say say = new Say(no, value);
                System.out.println(sayService.perform(say)); // 远程调用yurpc服务
            }
        };
    }

}

application.properties

## 服务发现注册或订阅的zk地址,暂时只支持zookeeper的注册中心
yurpc.discovery.zookeeper=localhost:2181

## 消费者配置
yurpc.client.connectionTimeoutMS=5000 // 服务连接超时时间
yurpc.client.invokeTimeoutMS=1000 // 服务调用超时时间

## 提供者配置
yurpc.server.port=12306 // 服务监听端口

温馨提示

  • 欢迎查看示例 examples
  • yurpc 本身并不是必须和springboot一起使用,在示例中可以查看
  • 单独使用的话,配置文件名为 config.properties,在示例中可以查看
  • @EnableYuRPC(server = true, client = true) 意味着服务角色同为消费端和提供者使用

联系方式