Google ProtoBuf介绍

一、背景

前段时间了解到有公司用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

3、调用类实现序列化,反序列化

猜你喜欢

转载自blog.csdn.net/2301_76787421/article/details/133544393