项目地址: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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

最新文章

  1. footer绝对定位但是不在页面最下边解决方案
  2. Nginx 下无法读取session 导致 thinkphp验证码错误
  3. STC89c52RC 的EEPROM和AVR的EEPROM
  4. PAT-乙级-1022. D进制的A+B (20)
  5. oracle 表的管理(数据类型,表创建删除,数据CRUD 操作)
  6. Dubbo、Zookeeper、SpringMVC的整合使用
  7. PCB成型製程介紹
  8. linux命令:env
  9. js输入框对金额的匹配
  10. HDU2544-最短路(最短路模版题目)
  11. UNIX网络编程——TCP带外数据小结
  12. win 解压安装mysql步骤
  13. wf 2017A
  14. tiny6410 启动参数
  15. Android绘制优化(二)布局优化
  16. Educational Codeforces Round 54 [Rated for Div. 2] (CF1076)
  17. 用Python实现数据结构之优先级队列
  18. python 读写json文件(dump, load),以及对json格式的数据处理(dumps, loads)
  19. Mysql的随机抽取
  20. ExtJs4.2中Tab选项卡的右击关闭其它和关闭当前功能不准确的解决方法

热门文章

  1. 深入浅出《设计模式》之外观模式(C++)
  2. Redis命令geoXXX
  3. maven 学习---NetBeans IDE集成Maven
  4. 2.监控软件zabbix-客户端安装
  5. tushare库:免费的python财经数据接口
  6. MySql学习笔记三
  7. 安装教程-Xshell 5 远程连接工具的安装
  8. Docker--部署mongodb+.netcore+nginx
  9. 201871010135 张玉晶《面向对象程序设计(java)》第十四周学习总结
  10. Git 创建点开头的文件和目录