美文网首页
集成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

    项目地址:grpc-spring-boot-starter[https://github.com/wenmingw...

  • 微服务下跨语言 RPC 实现

    Java 与 Java 之间互调 目前主流的 Java 开发框架 Spring Boot,为了更方便集成 gRPC...

  • @Configuration与Cglib的故事

    业余时间将kafka与spring-boot框架集成造轮子的过程中遇到@Configuration注解的问题,与大...

  • Spring-boot集成freemarker入门|实践

    Spring-boot集成freemarker入门|实践 介绍 官方介绍 https://freemarker.a...

  • B42-02-27

    上面这个是,构建项目的时候,如果spring-boot和非spring-boot混编,都集成一个maven父POM...

  • iOS - GRPC集成

    前言 从一开始研究grpc很长一段时间,当时没时间去记录相应的资料,最近简书有位哥们问我相关的问题,所以顺便整合一...

  • iOS集成gRPC

    gRPC简介 gRPC是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Ja...

  • iOS集成GRPC

    以前研究GRPC的时候花费了很长时间,才研究成功了,现在已经用了一年多了,本来发过几篇iOS集成GRPC发文章,不...

  • gRPC安装与编译

    1.安装gRPC grpc与protobuf版本对照表:https://github.com/grpc/grpc/...

  • fast-boot项目基础

    fast-boot 基于多个业务项目,抽象出基础组件 基于spring-boot,极快的集成 提高开发效率,集成效...

网友评论

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

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