⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 码问 「青苗」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

前后端传数据,大家一般都用 JSON 对吧?简单、可读性好、调试方便。但有个问题——数据量一大,JSON 就有点扛不住了。几十 MB 的 JSON 传来传去,接口响应慢得让人想砸键盘。

今天介绍一个解决方案:用 Protobuf 替代 JSON。实测下来,数据体积能压缩 60% 以上,传输性能提升明显。

Protobuf 是什么?

Protocol Buffers(简称 Protobuf)是 Google 搞的一种二进制序列化格式。跟 JSON 比,它的优势就是小和快——同样的数据,二进制编码比文本格式省空间太多了。而且它是跨语言的,Java、Python、Go、JavaScript 都能用。

怎么用?三步走

第一步:定义 .proto 文件

syntax = "proto3";

package example;

// 定义数据结构
message BigData {
repeated int64 large_numbers = 1; // 大量整数数据
}

第二步:用 protoc 编译器生成代码

比如生成 JavaScript 代码:

protoc --js_out=import_style=commonjs,binary:. bigdata.proto

第三步:在代码里序列化/反序列化

Node.js 示例:

const proto = require('./bigdata_pb');

// 创建数据对象
const bigData = new proto.example.BigData();
for (let i = 0; i < 1000000; i++) {
bigData.largeNumbers.push(i);
}

// 序列化成二进制
const binaryData = bigData.serializeBinary();

// 传输二进制数据...

// 接收端反序列化
const receivedData = proto.example.BigData.deserializeBinary(binaryData);

就这么简单。如果你的项目经常传大数据,Protobuf 绝对值得一试。

文章目录
  1. 1. Protobuf 是什么?
  2. 2. 怎么用?三步走