首页 > 其他分享 >有了 Protocol buffer 还是用 JSON

有了 Protocol buffer 还是用 JSON

时间:2022-11-25 23:39:17浏览次数:72  
标签:服务 定义 buffer 端口 JSON Protocol

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

 

有了 Protocol buffer 还是用 JSON_json

 

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​

标签:服务,定义,buffer,端口,JSON,Protocol
From: https://blog.51cto.com/cwikius/5888020

相关文章

  • Linux Page cache和Buffer cache
    free命令常用参数free命令用来查看内存使用状况,常用参数如下:-hhuman-readable格式打印-w把cache&buffer分开打印-tshowtotalforRAM+swapfree结果指......
  • Golang中一个不错的处理 JSON 的库 go-dproxy
    国庆七天,你是吃多了,还是睡多了?放假七天转眼即逝,接下来的七天可能你又觉得会很漫才。言归正传。Golang虽然自己就带了JSON(encoding/json)处理的库,也有第三方的simplejs......
  • 深和jsonp【转】 jsonpk跨域问题详解
    取不到数据!上周客户新买了服务器,原本在旧的服务器上放着客户的Web主页信息和一个后台程序(asp.net),在客户的主页中有一个动态显示最新消息的处理,这个处理就是通过ajax异......
  • 【大一C语言项目】Cjson的认识与实现(一)
    【大一C语言项目】Cjson的认识与实现(一)一、初识json参考网站​​​菜鸟教程:JSON​​​​JSON介绍​​​​JSON在线解析​​JSON是什么JSON指的是JavaScript对象表示法(Jav......
  • 【大一C语言项目】Cjson的认识与实现(二)
    【大一C语言项目】Cjson的认识与实现(二)参考资料:​​​哔哩哔哩CJson开源库使用及注意事项​​​​CJson开源项目下载地址​​​​cJSON源码刨析​​一、使用Cjson库下载CJSO......
  • MYSQL BUFFER POOL 参数说明及调优
    SHOWENGINEINNODBSTATUS'----------------------BUFFERPOOLANDMEMORY----------------------Totallargememoryallocated137428992bufferpool总大小Di......
  • Dubbo源码-07-Protocol
    作用生产者将Invoker对象导出InjvmProtocol没有真正的干活逻辑仅仅是一些属性赋值DubboProtol启动服务RegistryProtol通过DubboProtocol启动服务注册远程配置......
  • VUE读取本地json文件并解析
    //读取本地json文件exportfunctionGetUserAction(query){letquesa=axios.get('/json/userAction.json').then(res=>{//获取public下的buildmenu.json......
  • SQL Server 解析Json(单层/多层)
    一,单层Json数据取出1.取出取出@JsonData字符串中的 __type,DocNo,OrderPriceTC,Organization_Code字段  DECLARE@JsonDataNVARCHAR(max)=''SET@JsonData='[{......
  • MySQL调优之innodb_buffer_pool_size大小设置
    MySQL调优之innodb_buffer_pool_size大小设置sunny052962017-12-2721:42:0443421收藏9展开 MySQL调优之innodb_buffer_pool_size大小设置 相关查看命令sql>......