美文网首页
集成Spring-Boot与gRPC,grpc-spring-b

集成Spring-Boot与gRPC,grpc-spring-b

作者: onmeiei | 来源:发表于2019-09-29 20:06 被阅读0次

    项目地址:grpc-spring-boot-starter

    grpc是一个出身名门的RPC框架,性能高,灵活度高,支持多语言。
    支持多语言,如果你的项目在使用多种语言做开发,非常推荐使用。

    作为Java的扛把子,Spring没有提供官方的spring-boot-starter-grpc,所以出现了很多了grpc-spring-boot-starter。

    我也提供了一个快速上手,高度可定制化的grpc-spring-boot-starter供大家参考使用。

    主要功能包括,服务提供方服务消费者

    作为消费者

    基本功能
    1. 支持Autowire Stub(BlockingStub, FutureStub, Stub)三种。
    @Component
    public UserIdentifier {
        @Autowired
        private UserServiceGrpc.UserStub stub;
    }
    
    1. 自动连接Channel
      application.propertiesapplication.yaml中配置grpc.consumers.service.[SERVICE_NAME]=grpc://localhost:8080即可。
    grpc.consumers.service.user.UserService=grpc://localhost:8080
    
    高级功能

    application.propertiesapplication.yaml中配置grpc.consumers.service.[SERVICE_NAME]=xxxx即可。
    其中xxxx为Spring Bean的name,必须实现wenmingwei.consumers.Customizer接口

    package wenmingwei.consumers;
    
    import io.grpc.Channel;
    
    public interface Customizer {
    
        Channel customize();
    }
    

    可以用于自定义Channel,可以添加诸如服务发现, 服务降级, 负载均衡, 链路跟踪等等功能。
    后续会提供示例程序供大家参考。

    作为提供方

    基本功能
    1. 自动绑定服务并暴露。

    grpc服务的实现,加上注解@Component即可

    @Component
    public class UserServiceImpl extends UserServiceGrpc.UserServiceImplBase {
    //省略...
    }
    

    2.【可选】 默认服务器设置。

    grpc.providers.host=192.168.0.1
    grpc.providers.port=9999
    grpc.providers.name=default-grpc-server
    

    不设置的话,则默认监听8080端口

    高级功能
    1. 服务分组

    可以同时定义多个grpc服务监听,用于内部分组。
    每个服务监听用于监听不同的grpc服务。配置如下:

    # user服务的监听
    grpc.providers.host.0=192.168.0.1
    grpc.providers.port.0=8080
    grpc.providers.name.0=user-grpc-server
    grpc.providers.services.0=user.UserService
    
    # admin服务的监听
    grpc.providers.host.1=192.168.0.1
    grpc.providers.port.1=8081
    grpc.providers.name.1=admin-grpc-server
    grpc.providers.services.1=admin.AdminService
    
    1. 服务监听定制

    如果定义了grpc.providers.Y.customizer=xxxx,启动Y为服务监听序号,不设置则默认0。
    其中xxxx为Spring Bean的name,必须实现wenmingwei.providers.Customizer接口

    package wenmingwei.providers;
    
    import io.grpc.ServerBuilder;
    
    public interface Customizer<T extends ServerBuilder<T>> {
        void customize(ServerBuilder<T> serverBuilder);
    }
    

    可以用于自定义io.grpc.Server,可以添加诸如服务注册, 服务挡板, 链路跟踪等等功能。
    后续会提供示例程序供大家参考。

    欢迎大家提意见,后续进行改进。

    相关文章

      网友评论

          本文标题:集成Spring-Boot与gRPC,grpc-spring-b

          本文链接:https://www.haomeiwen.com/subject/fhyquctx.html