在 Spring Boot 项目的开发中,编写服务不止可以使用 Rest API 的形式,也可以使用基于 Grpc 的方式。
gRPC是由Google主导开发的RPC框架,默认使用HTTP/2协议并使用ProtoBuf进行序列化。与通常的 Rest API相比,主要的特点是:
- 性能更好。
- 支持双向通讯。
缺点主要是编程相对复杂很多。
本文以一个简单的示例来说明如何在 Spring Boot 项目中使用 grpc, 使用了 grpc-spring-boot-starter库(官网),
建立服务接口项目
在 grpc 中,使用 protobuf 作为描述语言来定义接口。 接口定义是语言无关的,但在具体语言调用是,需要编译为特定语言的实现。
建立一个简单的 maven 项目:
groupId: cn.com.hohistar.spbt
artifactId: account-grpc-intf
编辑 pom.xml 文件,加入 grpc 的支持,编辑后的 pom.xml 文件如下:
1 |
|
定义接口
在 src/main 中新建一个名为 proto 的目录,用来放置接口定义文件。然后在 proto 目录中新建名为 account_service.proto 的文件,内容如下:
1 | syntax = "proto3"; |
我们使用 protobuf 定义语言定义了服务接口
生成并打包
在项目命令行中执行:
1 | mvn install |
通过在 pom.xml 中定义的插件: protobuf-maven-plugin, maven会完成将 protobuf 定义的接口生成对应的 java 文件,并完成编译,打包的工作。
下一步
在下一步,我们将定义 gRPC 的服务端