背景
最近架构师搞了个新架构,牛逼的不行~
吹完牛逼,我赶紧去看了看架构师写的代码,好家伙,gRPC 是个什么东东?然后我 Google,百度,花了两三天的时间,终于把它给理清楚了。
Protocol buffers
Protocol buffers 是谷歌与语言无关、平台无关、一套可扩展的机制,用于序列化结构化数据。相对于 XML,它更小、更快、更简单。 只需定义数据的结构化方式,然后就可以使用特殊生成的源代码,使用各种语言轻松地向各种数据流读写结构化数据。
没错,官网是这样介绍的,依然的晦涩难懂。给一个 proto 语言的链接,如下,打不开很正常。
Protocol buffers 的官方教程:Language Guide
1.下载安装 Protocol buffers
首先安装 protocol 编译器,protocol 编译器用来编译 .proto 文件,下面是 Protocol buffers Compiler 在 Github 上的地址。
Protocol buffers Compiler (Protocol buffers 编译器下载):Protocol Buffers v3.15.6
目前 protocol compiler 最新的版本是 v3.15.6,我在 windows 上开发,所以下载已经编译好的 windows版本。
下载解压之后,目录是这样的。
接着我们配置一下bin目录的环境变量,就可以直接在命令行里使用 protoc 来编译 .proto 文件了。配置成功后,敲入 protoc 你会看到这样的界面,说明配置成功了。
2.编译 proto 文件
在 proto 目录下,使用如下的命令行,编译 addressbook.proto 文件生成对应的 java 类。
protoc --java_out=../java ./addressbook.proto
// addressbook.proto
syntax = "proto3";
package cn.blogss.tutorial;
import "google/protobuf/timestamp.proto";
option java_package = "cn.blogss.tutorial";
option java_outer_classname = "AddressBookProto";
message Person {
string name = 1;
int32 id = 2;
string email = 3;
enum PhoneType {
MOBILE = 0;
HOME = 1;
WORK = 2;
}
message PhoneNumber {
string number = 1;
PhoneType type = 2;
}
repeated PhoneNumber phones = 4;
google.protobuf.Timestamp last_updated = 5;
}
message AddressBook {
repeated Person people = 1;
}
我的demo演示项目结构如下,AddressBookProto 是由 addressbook.proto 编译而来的。
发现类有红线是因为我们还需要在pom.xml中添加protocol buffer基础库的依赖
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java-util</artifactId>
<version>3.15.6</version>
</dependency>
以上整个步骤简单概括就是:
- 按照
proto3语法编写.proto文件 - 使用 proto 编译器编译
.proto文件生成相应的编程语言文件 - 之后就可以用生成的文件来愉快的进行数据的读写了
上面介绍了 Protocol Buffer 的下载与编译生成 Java 类过程,这是进行 proto 开发的第一步,至于 .proto 的语法和高级使用这里我不再介绍,上面给出的网站有丰富的教程和指导。
3.在 IDEA 中安装 Protocol Buffers Editor 插件
我们可以在 IDEA 中安装这个插件,方面编写 .proto 程序,这个插件主要功能是方便我们进行 proto 文件的编写,功能强大。
- 支持proto2和proto3语法级别
- 语法高亮显示
- 语义分析
- 引用和导航
- 编辑器增强(补全、大括号匹配等)
- ......
不知道如何安装插件?在 IDEA 的导航栏上,找到
File->Settings...->Plugins->Marketplace
搜索框中输入 Protocol Buffer Editor 搜索到了然后安装就行了。当然,新版的 IDEA 检测到你在编写 .proto 文件,也会很智能的提示你安装这个插件。
总结
本文没有任何关于 proto 语法的介绍,目的是为了让大家快速搭建起 proto 的开发环境。在接下来的系列,我会详细的讲解 proto 语法和各种新手需要注意的地方。项目代码已同步到 码云 Gitee:gRPC,需要的自取。
如果你对我感兴趣,请移步到 blogss.cn ,或关注公众号:程序员小北,进一步了解。
- 如果本文帮助到了你,欢迎点赞和关注,这是我持续创作的动力 ❤️
- 由于作者水平有限,文中如果有错误,欢迎在评论区指正 ✔️
- 本文首发于掘金,未经许可禁止转载 ©️