有了 Protocol buffer 还是用 JSON

简介: Protocol buffer 这东西真的很轻便吗

Protocol buffer 这东西真的很轻便吗?

 

 

Protocol buffer 这东西一点都不轻便,定义文件后需要重新编译一次,编译出来的代码没有可读性,没有可调试的可能。

版本不兼容

Protocol buffer 的版本是不会向后兼容的,你必须要保证版本一致。

如果版本升级了,恭喜你,所有的文件都需要重新编译一次。如果你的项目在 Maven 的依赖定义的有点乱,比如说一个项目中有 2 个版本,那大概率会出问题。

这个问题不是编译问题,是运行时的问题,出了问题非常不好调试。

滥用

曾经一个公司可以说一个教科书基本的滥用典范。

为了调用另外一个服务的服务层方法,定义了 Protocol buffer,然后从另外一个服务的服务层调用。

这个项目有 10 多个微服务,本地调试有可能需要启动 3 到 4 个服务才能真正拿回来一个数据,在 DevOps 定义的时候端口定义不明确,经常让开发人员搞不清楚要那个端口。

启动的时候需要占用一个端口,我们在定义 Protocol buffer 的时候需要为 Protocol buffer 单独开一个端口,这要求令人发指,本地上经常的端口冲突。

为了重用方法,很多方法不加思索的就给了一个 Protocol buffer 定义,后来发现这个方法要修的话,参数一改,另外的地方就出错,数据调用异常,空对象。

Protocol buffer 这东西看起来很美好,用起来步步惊心。

效率

Protocol buffer 标称的就是效率高。

Protocol buffer 其实本身也是基于 JSON 的数据传输格式,而且在数据传输的消息上是有大小限制的。

默认可传输的大小不大,别指望返回以几万的 List ,大概率会报错。

Protocol buffer 的数据传输是通过压缩进行传输的,JSON 数据格式因为是文本,通常压缩比还是蛮高的,只是压缩也会消耗计算能力和资源,因此有时候压缩后的传输比较难分析真正 API JSON 调用中的数据。等于是开盲盒。

对于一些定义不明确的引用,方法老改的微服务,就那么几个服务在跑的项目,就别折腾了。

直接用 JSON 吧。

https://www.ossez.com/t/protocol-buffer-json/14214/1

目录
相关文章
|
JSON 数据格式 Ruby
使用 Protocol Buffers 代替 JSON 的五个原因
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。
1385 0
|
2月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
47 1
|
26天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
12天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
16天前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
9天前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
1月前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
在Java中处理JSON数据:Jackson与Gson库比较
|
1月前
|
JSON JavaScript API
(API接口系列)商品详情数据封装接口json数据格式分析
在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦!
|
1月前
|
JSON 前端开发 Java
【Spring】“请求“ 之传递 JSON 数据
【Spring】“请求“ 之传递 JSON 数据
87 2
|
2月前
|
存储 JSON Go
在Gin框架中优雅地处理HTTP请求体中的JSON数据
在Gin框架中优雅地处理HTTP请求体中的JSON数据