grpcspringboot的简单介绍

http://www.itjxue.com  2023-01-14 21:50  来源:未知  点击次数: 

Spring Cloud集成grpc

spring cloud集成grpc(Eureka版本)

这个demo的本质是先搭建一套简单的微服务,然后在注册的服务中引入grpc。

说明:使用的Spring Cloud版本不新,是Eureka支持的版本。

目录结果如下图:

在 resources 目录下创建application.yml文件,配置内容如下:

创建SpringBoot的启动类,并使用 @EnableEurekaServer :

运行该类的main方法,在启动成功后,用浏览器防伪 localhost:8761 。

在 resources 目录下创建application.yml文件,用于配置服务注册,配置内容如下:

在 src/main/java/ ,创建grpc服务,并使用 @GrpcService 注册:

在 src/main/java/ 下创建SpringBoot启动的Application,并使用Eureka相关的注解:

运行该类的main方法,然后刷新localhost:8761的网页,检查是否有服务出现。

在 resources 目录下创建application.yml文件,配置服务注册,内容如下:

创建调用grpc的客户端,使用 @GrpcClient 声明服务的地址:

创建控制器,方便测试:

创建SpringBoot的启动类,并注册为服务:

启动该类的main方法,然后刷新浏览器检查 localhost:8761 上是否有新增服务。

Spring Cloud 整合Grpc-注册中心(Eureka/Consul)

? ? ? ?Spring Cloud分布式微服务应用,通常在微服务之间采用的Feign进行通信,实现简单快捷的调用,底层采用的HTTP形式;相对于gRPC或RPC协议调用来说,性能相对低下,因此我们可以采用开源技术框架gRPC来实现。

? ? ? ?微服务开发中,服务间的调用一般有两种方式:Feign或RestTemplate,但在实际使用过程中,尤其是Feign,存在各种限制及局限性,如:HTTP请求方式、返回类型等限制等。服务间调用是非常普遍频繁的,其性能也不是特别理想。

? ? ? ?为了解决上述问题,我们采用gRPC方式实现服务间调用,其显著特点就是性能之高(通信采用Netty),通过proto文件定义的接口也是非常清晰而又灵活。

? ? ? ?gRPC是谷歌开源的一个高性能的、通用的RPC框架。和其他RPC一样,客户端应用程序可以直接调用远程服务的方法,就好像调用本地方法一样。它隐藏了底层的实现细节,包括序列化(XML、JSON、二进制)、数据传输(TCP、HTTP、UDP)、反序列化等,开发人员只需要关自业务本身,而不需要关注RPC的技术细节。与其他RPC框架一样,gRPC也遵循定义服务(类似于定义接口的思想)。gRPC客户端通过定义方法名、方法参数和返回类型来声明一个可以被远程调用的接口方法。由服务端实现客户端定义的接口方法,并运行一个gRPC服务来处理gPRC 客户端调用,gRPC客户端和服务端共用一个接口方法。

新建common项目,存放proto文件,服务端和客户端都依赖此项目。

* pom依赖

* 新建helloworld.proto文件,放在:src/main/proto/helloworld.proto

* pom.xml依赖

* 新建GrpcServerService

}

* yml配置

* pom.xml依赖配置

* 新建GrpcClientService

* yml配置

Consul和Eureka区别在于替换pom依赖、yml注册地址修改、启动类修改。

源码: 提取码: 28qs

源码:spring-boot-rpc

提取码: 28qs

国信证券Zebra微服务架构简介

我们从0到1设计开发了国信微服务架构,他是一个完整的,从前到后的架构。我们希望逐步分享出来,后续也会将此架构开源。

1、配置依赖最小化;

2、开发速度最大化;

3、环境部署最简化;? ?

选用grpc,因为grpc有以下几个优势:

1、多语言支持;

2、社区活跃,生命力强,七月份发布1.5版本;

3、支持ios、Android,支持SSL和自定义鉴权(支持国密),可以简单实现客户端到后台的多路复用、rpc调用;

4、只有通信层依赖于grpc,所以容易替换;

5、grpc使用pb协议,此协议在互联网上广泛使用,生命力强;

6、支持流stream,在流的基础上实现了Server Push,方便做变更通知,不再需要客户端做费力的Long Pull;

方案基于进程内LB方案,结合分布式一致的组件etcd3,进行设计开发,具备以下功能:

1、服务自动注册;

2、服务自动发现;

3、负载均衡;

4、注册中心异常保护;

5、异常通报下发;

6、服务降级;

可视化服务管理平台,展示服务信息,包含功能如下:

1、server展示,包括ip地址、端口号、应用名称、接口名称;

2、api展示,显示proto文件内容;

3、api测试;

4、服务监控展示;

5、服务依赖动态图展示;

api网关基于vert.x实现,后期考虑采用原生netty进行升级:

1、由统一的入口来调用微服务的API;

2、API鉴权;

3、反向代理、数据剪裁、数据聚合;

4、流量控制;

5、监控报警;

6、TCP、HTTP等多协议支持;

基于springboot进行业务开发:

1、权限管理,服务接口授权;

2、服务端流量控制;

3、业务线程池管理;

4、调用端和服务端TCP连接数管理;

5、服务过载快速失败;

6、TCP心跳保活;

7、调用链分析埋点;

8、超时管理;

9、泛化调用;

参考Prometheus搭建监控中心,具有以下功能:

1、服务流量上报;

2、服务访问ip上报;

3、服务平均耗时情况上报;

4、异常上报;

5、日志收集服务;

6、调用链埋点;

对配置信息进行统一管理,可做到一次打包,各个环境都可使用,具有以下功能:

1、资源类配置与业务类配置分离;

2、作用域分离(分为四大作用域:GLOBAL、IDC、SET、NODE);

3、配置中心异常容错;

springboot grpc eureka demo实战项目

springboot demo实战项目

java 脑洞

java 面试宝典

开源工具

首先启动服务注册项目eureka

然后编译grpc的公共项目,里面包含所需的接口和对象

关于grpc的类是由lp-grpc-common解析proto文件生成出来的

只需调用lp-grpc-common的maven install就会生成

然后启动grpc的服务项目,是对接口实现逻辑的服务,并把该服务注册到eureka中

最后启动grpc的客户端项目,是对接口的调用项目,要注意的是要指明在eureka中注册的服务名

参考:

如果这篇文章对你有帮助请给个star

(责任编辑:IT教学网)

更多

推荐HTML/Xhtml文章