一、简介:
Protocol Buffers(简称Protobuf) ,是Google出品的序列化框架,与开发语言无关,和平台无关,具有良好的可扩展性。Protobuf和所有的序列化框架一样,都可以用于数据存储、通讯协议。国内很多大公司用到这个框架,如百度,腾迅,携程等等。
1.Portobuf的序列化的结果体积要比XML、JSON小很多,XML和JSON的描述信息太多了,导致消息要大;此外Portobuf还使用了Varint 编码,减少数据对空间的占用。
2.Portobuf序列化和反序列化速度比XML、JSON快很多,是直接把对象和字节数组做转换,而XML和JSON还需要构建成XML或者JSON对象结构。
二、基本使用:
2.1加载插件“protobuf support”,并重启idea。
2.2使用gRPC官方推荐的使用姿势进行配置。
2.2.1配置pom.xml
1 | <properties> |
2.2.2编写proto文件
在protobuf中,结构化数据被称为 Message。
1 | syntax = "proto3"; |
2.2.3编译生成Java类
2.2.4序列化调用
1 | public static void main(String[] args) throws InvalidProtocolBufferException { |
三、数据流量
3.1 编写c/s通迅
3.1.1 server端接收数据。
1 | public class ProtobufServer implements Runnable { |
3.1.2 client 发送数据
1 | public class protobufClient { |
3.1.3 运行程序并抓取流量
服务端运行结果:
客户端运行结果:
tcpdump抓包
1 | sudo tcpdump -i lo0 port 55555 -w /tmp/test.cap |
可得16进制数据为
1 | 080212076c696e677775311a11313336313233343540676d696c2e636f6d220b3133363132333431323335 |
这篇只是了解,具体的等之后的内容。