一、背景
前段时间了解到有公司用gRPC、Pulsar、Nacos、SkyWalking、OpenTelemetry、Prometheus、Envoy、Grafana、Sonar、PowerJob、Apollo 这些技术,也是Java路线的,很惭愧,这些我几乎都不了解,从13年以来玩Android、玩Python、玩Linux、玩产品,对Java新技术关注远远不够,现在必须跟进了。。。
gRPC是用ProtoBuf来做序列化/反序列化,所以今天先了解一下ProtoBuf序列化怎么做。
二、ProtoBuf介绍
ProtoBuf是一种语言无关、【高效】、可扩展的对象序列化方法。
序列化方法有很多种,ProtoBuf是当前为止性能最高效的序列化方法。
Proto分为Proto2和Proto3两个版本,下面的例子使用Proto3版本。
具体的语法不做详细解说,可以参看官方文档
https://developers.google.cn/protocol-buffers/docs/proto3?hl=zh_cn
三、ProtoBuf使用
1、创建.proto文件,定义数据结构
IDEA中安装ProtoBuf Support插件,支持编写.proto文件时语法提示。
项目中添加protobuf-java依赖
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.18.0-rc-2</version>
</dependency>
配置protobuf-maven-plugin插件,这个插件用于将.proto文件生成对应类代码。注:这个插件安装没有成功,后来是通过命令行执行编译。
在/src/main下创建 proto Source目录,创建User.proto文件如下。
2、编译.proto文件,生成类
mac下安装protobuf,下载protobuf3.18
./configure --prefix=/usr/local/protobuf
sudo -i
make && make install
配置环境
执行编译命令生成UserEntity类
protoc --java_out=. User.proto