对比 JSON 和 Hessian2 的序列化格式

关于服务通信,我了解到Spring Cloud LoadBalancer 和 Dubbo 的数据传输方式有所不同。它们分别使用不同的协议和技术栈来实现服务之间的通信。

他们两者对比可知:

特性 Spring Cloud LoadBalancer Dubbo
主要协议 HTTP/REST Dubbo 协议(默认),支持 HTTP、Thrift、gRPC 等
序列化格式 JSON、XML Hessian2(默认),支持 Protobuf、JSON 等
传输层协议 TCP/IP(通过 HTTP/HTTPS) TCP/IP
连接管理 短连接(每次请求一个新的连接) 长连接(支持连接复用,适合高并发场景)
性能 中等,受限于 HTTP 协议的开销 高性能,低开销的 RPC 调用,适合高并发和大数据量场景
使用场景 微服务架构,轻量级 REST 调用,适合 HTTP/REST 通信 高性能、高并发服务调用,复杂服务治理需求

其中序列化格式一个是Json,一个是Hessian2,我对此查询资料做了分析对比

对比总结:

特性 JSON Hessian2
可读性 高,可读性强,便于调试 低,二进制格式,不便于调试
语言无关性 高,几乎所有语言都支持 中等,支持多语言但依赖库支持
性能 低,序列化和反序列化速度较慢 高,序列化和反序列化速度非常快
数据体积 大,包含字段名等额外信息 小,二进制格式,数据体积小
类型安全 低,类型不严格,可能导致解析错误 高,包含类型信息,保证数据一致性
应用场景 Web 开发,API 接口,广泛应用 高性能 RPC 调用,高并发场景
调试和日志记录 容易调试,日志记录友好 调试困难,不便于日志记录
安全性 中等,依赖于 JSON 解析库的实现 高,严格的类型信息,有更好的数据完整性

安全性分析

JSON
  • 优点
    • 广泛支持的安全库:大多数语言都提供了成熟的 JSON 解析库,并且这些库通常已经过安全性验证。
    • 数据验证:可以结合 JSON Schema 进行数据验证,确保数据格式和内容符合预期。
  • 缺点
    • 容易被注入攻击:由于其开放性,JSON 解析容易受到 JSON 注入攻击,如果没有适当的验证和清理,可能会导致安全漏洞。
    • 类型不严格:由于 JSON 数据类型较为松散,容易在传输过程中被篡改,导致安全问题。
Hessian2
  • 优点
    • 类型严格:Hessian2 包含类型信息,能够严格保证数据的一致性和完整性,有助于防止数据篡改。
    • 难以篡改:二进制格式的数据不易被恶意篡改,比文本格式更安全。
  • 缺点
    • 依赖库的安全性:由于 Hessian2 的实现较为复杂,安全性高度依赖于序列化/反序列化库的实现。如果库本身存在漏洞,可能会导致安全问题。
    • 调试困难:二进制格式的数据不便于调试和审计,出现安全问题时不容易排查。

最终建议

选择 JSON 或 Hessian2 主要取决于具体应用场景

  • 如果可读性和跨语言支持是关键:如 Web 开发、API 接口等场景,建议使用 JSON。虽然性能和数据体积上不如 Hessian2,但 JSON 的广泛支持和易用性使其成为默认选择。
  • 如果性能和数据传输效率是关键:如高并发、高性能的 RPC 调用场景,建议使用 Hessian2。虽然复杂度和可读性较差,但其高效的序列化和反序列化性能,以及严格的类型安全,能够满足对性能和数据一致性要求较高的应用。

因此最终结合实际场景决定用Dubbo;

相关推荐
_oP_i2 小时前
HTTP 请求Media typetext/plain application/json text/json区别
网络协议·http·json
fkdw6 小时前
C# Newtonsoft.Json 反序列化派生类数据丢失问题
c#·json
Kiros_Jiang12 小时前
开源低代码平台-Microi吾码 打印引擎使用
javascript·开源·json·.net·pip
nbsaas-boot1 天前
探索 JSON 数据在关系型数据库中的应用:MySQL 与 SQL Server 的对比
数据库·mysql·json
疯一样的码农1 天前
Jackson 的@JsonRawValue
json
Web打印2 天前
web打印插件 HttpPrinter 使用半年评测
javascript·json·firefox·jquery·html5
手心里的白日梦2 天前
网络计算器的实现:TCP、守护进程、Json、序列化与反序列化
网络·tcp/ip·json
chenchihwen2 天前
数据分析时的json to excel 转换的好用小工具
数据分析·json·excel
子燕若水2 天前
简要解释JSON Schema
前端·html·json
Json_181790144802 天前
淘系商品评论json数据示例参考,API接口系列
大数据·json·api