-
把远程进程通讯grpc引入到Spring boot maven项目中
- 网站名称:把远程进程通讯grpc引入到Spring boot maven项目中
- 网站分类:技术文章
- 收录时间:2025-08-16 14:15
- 网站地址:
“把远程进程通讯grpc引入到Spring boot maven项目中” 网站介绍
1、参考链接:
gRPC官网:https://grpc.io/
HTTP2:https://http2.github.io/
Protocol Buffers:https://protobuf.dev/
grpc中文文档:
http://doc.oschina.net/grpc
Java版文档:
https://grpc.io/docs/languages/java/quickstart/
Go版gRPC文档地址:
https://grpc.io/docs/languages/go/
2、简单介绍
gRPC 是一个高性能、开源、通用的RPC框架,由Google推出,基于HTTP2 协议标准设计开发,默认采用Protocol Buffers 数据序列化协议,支持多种开发语言。
推荐gRPC和istio配合使用,istio基于k8s提供服务治理等功能。
3、RPC通用流程和Grpc流程
4、grpc引入到spring boot项目的步骤
(1)编写ProtocolBuffers文件
ProtoBuf是gRPC默认支持的数据存储和通讯协议,或者称为数据序列化协议,和XML、JSON、HESSIAN类似。
实际上ProtoBuf文件也是服务定义文件(IDL),通常包含三个部分:
第一部分,协议版本、头部声明和选项
A、协议版本:
syntax = "proto3";
B、通用包名指定
package google.protobuf;
C、java包名指定
option java_package = "com.google.protobuf";
D、Java类名指定
option java_outer_classname = "DescriptorProtos";
E、优化
option optimize_for = SPEED;
option optimize_for = CODE_SIZE;
option optimize_for = LITE_RUNTIME;
F、编译产生的java文件是多个
option java_multiple_files = true;
第二部分,消息定义
其中,string和int32是字段类型,其他常用类型还有double、float、int64、bool、bytes,query和page_number是字段名称,1/2/3是字段标识,1~15的标识最快。Message是消息关键字,searchrequest是消息名称。
枚举型:
Map字段类型:
字段类型前面可以加optional和repeated关键词,optional表示可以设置也可以不设置,repeated表示可以重复若干次。
以上图5,map示例相当于:
第三部分,服务定义
其中,service是关键词,searchservice是服务名称,rpc是关键词,search是服务里面的方法名称,searchrequest是入参,searchresponse是出参。
(2)编译proto文件
编译方法有两种,一是下载编译工具,二是直接在maven项目中指定build工具包。
编译工具下载参见:
https://github.com/protocolbuffers/protobuf#protobuf-compiler-installation
安装方法参见其中的readme。
在maven项目中指定build工具包,如下图,在pom文件中加入build插件:
protobuf-maven-plugin的相关文档如下:
https://www.xolstice.org/protobuf-maven-plugin/compile-mojo.html
其中说明了如下主要参数:
- protocArtifact: protoc编译器工具的格式规范,
groupId:artifactId:version[:type[:classifier]]。如果指定了该参数,protoc将尝试按照指定的参数对文件proto文件进行编译。
- protocExecutable:配置protoc的编译执行程序的路径。
- protocPluginDirectory: protoc的执行文件目录。
- protoSourceRoot: 原始proto文件的路径,比如${project.basedir}/src/main/proto。
- outputDirectory: 编译后生成.java文件的路径,比如:${project.basedir}/src/main/java。
-
temporaryProtoFileDirectory: 临时使用目录。
- clearOutputDirectory: 设置是否在生成java文件之前清空outputDirectory的文件,默认值为true,设置为false时也会覆盖同名文件。
-
additionalProtoPathElement:附加的源proto文件定义路径,如果设备源路径没找到,会到该目录找。
- excludes:排除不需要编译的文件列表。
- includes:包含需要编译的proto文件列表,默认如下:
<includes>
<include>**/*.proto</include>
</includes>
(3)创建使用grpc的springboot项目步骤
使用Spring Starter Project或者Import Spring Getting Started Content创建三个项目:
Grpc-lib-test:提供proto文件,并由此自动生成服务类和消息类
Grpc-server-test:提供grpc服务器端
Grpc-client-test:提供grpc客户端
第一个项目:Grpc-lib-test
POM文件如下:
然后,编写一个示例proto文件放到src/main/proto目录下:
最后,使用如下指令来自动产生源代码:
这个指令就是mvn generate-sources,由于相当于执行mvn compile 和 mvn compile-custom。
在IDE中使用install构建安装(或者执行mvn clean install -D maven.test.skip=true),等待另外两个模块调用。
第二个项目:grpc-server-test
POM文件如下:
新增日志拦截器:
新增日志拦截器的配置类
新增服务类:
在IDE中使用install构建安装(或者执行mvn clean install -D maven.test.skip=true)。
使用java -jar
target/grpc-server-test-0.0.1-SNAPSHOT.jar运行,如下图。注意java版本是17(“无效的标记: --release”这个错误的解决办法是从jdk1.8改为17)。
第三个项目:grpc-client-test
POM文件:
新增日志拦截器:
新增日志拦截器的配置类:
新增grpc客户端服务类:
新增控制器类:
在IDE中使用install构建安装(或者执行mvn clean install -D maven.test.skip=true)。
使用java -jar
target/grpc-client-test-0.0.1-SNAPSHOT.jar运行。
最后,看看效果。我们使用浏览器来测试。在浏览器中输入地址localhost:8088后:
切换到gRPC客户端grpc-client-test启动界面:
切换到gRPC服务器端grpc-server-test启动界面:
更多相关网站
- idea整合dockerfile插件,打包镜像(docker环境可不安装)
- 10条军规:电商API从数据泄露到高可用的全链路防护
- 如何使用Java实现多张图片转换为视频
- SpringBoot打包部署解析:jar包的生成和结构
- 从0开始,让你的Spring Boot项目跑在Linux服务器
- SpringBoot动态加载外部Jar:解锁插件化架构的实战指南
- 还在用Swagger?试试这款零注解侵入的API文档生成工具
- SoC验证流程和方法(soc验证技术)
- 如何通过Serverless提高 Java 微服务治理效率?
- Android Studio之gradle的配置与介绍
- 如何搭建maven私有库——jar包管理(三)
- Java-Maven详解(java maven是干嘛的)
- 最全!最强大!Maven知识大全(maven总结)
- 规则引擎 Drools入门(规则引擎 go)
- AlmaLinux 10 上快速安装 Java(OpenJDK 21)全攻略!
- 自定义代码生成器(上)(自定义代码块的作用)
- 基于SpringBoot 的CMS系统,拿去开发企业官网真香(附源码)
- Maven 报出的 Checksum 校验失败警告,其根本原因及解决办法
- 最近发表
-
- Apache Log4j2远程代码执行漏洞彻底修复建议
- 最详细的 maven 教程,可以收藏(maven入门教程)
- Struts2.3.32升级到2.5.26详细步骤(无敌版)
- 手把手教你:5分钟搞定Zookeeper安装及应用,详细教程
- 阿里强制使用SLF4J日志框架的缘由
- 大数据计算工具:Hive安装与配置详细步骤
- 【紧急预警】关于 Apache Log4j 2 任意代码执行漏洞的高危风险通告
- Apache Log4j高危漏洞,燃爆大厂、燃烧Java开源框架
- SpringBoot项目开发实战销售管理系统——项目框架搭建!
- 带你深入Java Log框架,彻底搞懂Log4J、Log4J2、LogBack,SLF4J
- 标签列表
-
- mydisktest_v298 (35)
- sql 日期比较 (33)
- document.appendchild (35)
- 头像打包下载 (35)
- acmecadconverter_8.52绿色版 (25)
- 梦幻诛仙表情包 (36)
- java面试宝典2019pdf (26)
- disk++ (30)
- 加密与解密第四版pdf (29)
- iteye (26)
- centos7.4下载 (32)
- intouch2014r2sp1永久授权 (33)
- jdk1.8.0_191下载 (27)
- axure9注册码 (30)
- virtualdrivemaster (26)
- 数据结构c语言版严蔚敏pdf (25)
- 兔兔工程量计算软件下载 (27)
- 代码整洁之道 pdf (26)
- ccproxy破解版 (31)
- aida64模板 (28)
- engine=innodb (33)
- shiro jwt (28)
- 方格子excel破解版补丁 (25)
- segoe ui是什么字体 (27)
- head first java电子版 (32)