当前位置:首页 > 科技  > 软件

JSON, Protobuf, Thrift和MessagePack的优缺点对比

来源: 责编: 时间:2024-04-22 17:16:23 267观看
导读最近咱们公司内部搞了个技术交流,讨论起了序列化协议怎么选。我觉得这话题挺有意思的,就顺手整理了一下现在主流的序列化协议的优缺点。这样一来,以后查起来也方便。JSON先说说 JSON,这货读起来挺舒服,用起来也简单。扩展

最近咱们公司内部搞了个技术交流,讨论起了序列化协议怎么选。我觉得这话题挺有意思的,就顺手整理了一下现在主流的序列化协议的优缺点。这样一来,以后查起来也方便。YB828资讯网——每日最新资讯28at.com

YB828资讯网——每日最新资讯28at.com

JSON

先说说 JSON,这货读起来挺舒服,用起来也简单。扩展性和兼容性都不错,能在不同语言之间传来传去结构化数据。YB828资讯网——每日最新资讯28at.com

但 JSON 也有缺点,比如体积大,影响性能,尤其是高并发的时候。还有就是缺乏命名空间,有时候信息会乱成一团。YB828资讯网——每日最新资讯28at.com

总结起来,JSON 是个简单通用的应用协议,用得挺广,开发效率挺高,但性能一般,维护成本也偏高。YB828资讯网——每日最新资讯28at.com

Protobuf

接下来是 Protobuf,这货是个高性能、易扩展的序列化框架。YB828资讯网——每日最新资讯28at.com

优点很明显,跨语言,向后兼容,新增字段不影响已有的协议。代码自动生成,用起来简单。二进制消息,效率高,性能好。而且安全性也不错,只写字段号,编码成二进制,破解难度大。YB828资讯网——每日最新资讯28at.com

缺点嘛,二进制消息可读性差,字段冗余,类文件会越来越大,维护成本高。而且 Protobuf 只管序列化和反序列化,RPC 功能得另请高明。YB828资讯网——每日最新资讯28at.com

RPC 是啥?就是远程过程调用,一个机器(客户端)调用另一个机器(服务器)上的函数或方法,然后拿到结果。RPC 会隐藏底层通信细节,不用你直接处理 Socket 或 Http 通信,用起来就像调用本地函数一样。YB828资讯网——每日最新资讯28at.com

总结 Protobuf,上手简单,高效,兼容性强,但维护成本也高。YB828资讯网——每日最新资讯28at.com

Thrift

Thrift 是 Facebook 2007年开发的跨语言 RPC 框架,支持多语言编译,提供多种服务器工作模式。YB828资讯网——每日最新资讯28at.com

优点是序列化和 RPC 一站式解决,比 Protobuf 方便。跨语言,IDL 接口定义语言,自动生成多语言文件。省流量,体积小。包含完整的客户端/服务端堆栈,RPC 实现起来快。服务端有多种工作模式,比如线程池、非阻塞模型。YB828资讯网——每日最新资讯28at.com

缺点是不支持双通道,RPC 方法非线程安全,服务器容易被挂死,需要串行化。默认不具备动态特性,开发环境和编译有点麻烦。YB828资讯网——每日最新资讯28at.com

总结 Thrift,跨语言,实现简单,但初次使用有点麻烦,得注意使用问题和场景限制。YB828资讯网——每日最新资讯28at.com

MessagePack

MessagePack 是一种高效的二进制序列化格式。YB828资讯网——每日最新资讯28at.com

优点是跨语言,多语言支持。序列化反序列化效率高,文件体积小,比 JSON 小一倍,还兼容 JSON 数据格式。YB828资讯网——每日最新资讯28at.com

缺点是缺乏复杂模型支持,对复杂数据类型(List、Map)支持不够。序列化没问题,但反序列化回来就麻烦了,尤其是对 Java 开发人员来说。维护成本也高,因为 MessagePack 通过值的顺序来定位属性,不同语言中都得维护一样的模型和属性顺序。还不支持模型嵌套。YB828资讯网——每日最新资讯28at.com

总结 MessagePack,性能高,但扩展性差,维护成本高。YB828资讯网——每日最新资讯28at.com

哦,对了,在整理的时候我还有点疑问。有人说 MessagePack 的序列化和反序列化效率是 Protobuf 的 4 倍,我个人表示怀疑。后续的文章可能会对这两个协议做个细致的对比。YB828资讯网——每日最新资讯28at.com

好了,今天的分享就到这儿,希望对你有帮助。有啥问题咱们再讨论!YB828资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-84586-0.htmlJSON, Protobuf, Thrift和MessagePack的优缺点对比

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 我LocalStorage犯了两个小错误,差点导致项目大崩溃!

下一篇: 五款开源、美观、强大的WPF UI组件库

标签:
  • 热门焦点
  • JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • 多线程开发带来的问题与解决方法

    使用多线程主要会带来以下几个问题:(一)线程安全问题  线程安全问题指的是在某一线程从开始访问到结束访问某一数据期间,该数据被其他的线程所修改,那么对于当前线程而言,该线程
  • JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 2天涨粉255万,又一赛道在抖音爆火

    来源:运营研究社作者 | 张知白编辑 | 杨佩汶设计 | 晏谈梦洁这个暑期,旅游赛道彻底火了:有的「地方」火了——贵州村超旅游收入 1 个月超过 12 亿;有的「博主」火了&m
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的“征求意见版”:1、取消P序列
  • 携众多高端产品亮相ChinaJoy,小米带来一场科技与人文的视听盛宴

    7月28日,全球数字娱乐领域最具知名度与影响力的年度盛会中国国际数码互动娱乐展览会(简称ChinaJoy)在上海新国际博览中心盛大开幕。作为全球领先的科
  • 郭明錤称华为和江淮汽车合作开发问界MPV,定价100万左右、计划明年量产

    8 月 1 日消息,郭明錤今天在 Medium 平台发布博文,称华为正在和江淮汽车合作,开发售价在 100 万元的问界 MPV,预计在 2024 年第 2 季度量产,销量目标为
  • iQOO 11S或7月上市:搭载“鸡血版”骁龙8Gen2 史上最强5G Soc

    去年底,iQOO推出了“电竞旗舰”iQOO 11系列,作为一款性能强机,iQOO 11不仅全球首发2K 144Hz E6全感屏,搭载了第二代骁龙8平台及144Hz电竞屏,同时在快充
Top