zoukankan      html  css  js  c++  java
  • 集成Spring-Boot与gRPC,grpc-spring-boot-starter

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

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

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

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

    grpc-spring-boot-starter

    该项目是java-grpc结合springboot、springcloud使用的一个开源项目,可以结合springboot项目单独使用,也可以结合springcloud项目在微服务架构下使用。该项目具有如下特点或特性:

    • 基于springboot自动配置,实现起步依赖,只需要简单的配置和相应的注解,就可以启动gRPC Server。
    • 支持在Spring Cloud项目中使用,支持主流的Spring Cloud eureka、springcloud consul的服务注册发现组件。
    • 支持分布式链路跟踪,结合springcloud sleuth,可以展示服务调用链。
    • 支持对gRPC Server的健康检查。

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

    作为消费者

    基本功能
    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,可以添加诸如服务注册, 服务挡板, 链路跟踪等等功能。
    后续会提供示例程序供大家参考。

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



    作者:onmeiei
    链接:https://www.jianshu.com/p/469e3603d689
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    JQuery Ajax调用asp.net后台方法
    Android版本检测\自动更新
    android Manifest.xml选项
    Android: 自定义Tab样式
    Android TextView(EditView)文字底部或者中间 加横线
    activity横竖屏翻转不重载
    一句代码过滤字符串中所有tag标签
    去除掉TabHost下面那个边线的小技巧
    软键盘挡住控件的问题
    自定义 textview上LINK的点击事件
  • 原文地址:https://www.cnblogs.com/duanxz/p/11957870.html
Copyright © 2011-2022 走看看