Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Research] Research on open source serialization libraries #277

Open
songxiaosheng opened this issue Jan 12, 2024 · 0 comments
Open

[Research] Research on open source serialization libraries #277

songxiaosheng opened this issue Jan 12, 2024 · 0 comments

Comments

@songxiaosheng
Copy link
Member

songxiaosheng commented Jan 12, 2024

Dubbo是一种远程通信框架,它需要在不同的服务之间传输数据。序列化库可以将Java对象转换为字节流,以便在网络上传输。当Dubbo进行远程调用时,参数和返回值需要在客户端和服务端之间进行传输,而序列化库可以帮助将这些数据进行序列化和反序列化,从而实现跨进程、跨网络的数据传输和通信。Dubbo支持多种序列化方式,如Hessian、Java自带的序列化、JSON等,开发者可以根据实际需求选择合适的序列化方式来进行远程通信。

Dubbo对序列化库进行选型是为了根据实际需求和场景选择最适合的序列化方式。不同的序列化库有不同的特点和适用场景,选型的考虑通常包括以下方面:

性能:不同的序列化库在性能上可能有差异,对于高性能要求的场景,可能需要选择性能较高的序列化库。

跨语言支持:如果需要与其他非Java语言进行交互,就需要考虑序列化库是否支持跨语言。

数据体积:不同的序列化库产生的序列化数据体积可能不同,有些情况下需要考虑数据体积对网络传输和存储的影响。

兼容性:选择的序列化库需要与Dubbo框架本身以及其他相关组件兼容,确保能够无缝集成使用。

安全性:某些序列化库可能存在安全漏洞,因此安全性也是选型考虑的因素之一。

扩展性:考虑序列化库是否易于扩展和定制,以满足特定需求。

综合考虑以上因素,Dubbo会对序列化库进行选型,以便根据具体的业务需求和技术场景选择最合适的序列化方式,从而提高远程调用的性能、可靠性和扩展性。

序列化库名称 是否活跃 支持的JDK17版本 主要特点 许可证类型 最新版本 社区活跃度 性能评价 应用场景 支持的编程语言
Fastjson 高性能的JSON序列化和反序列化库,支持自定义序列化策略 Apache License 2.0 1.2.78 Web服务、分布式系统
Fastjson2 快速的JSON处理工具,支持Java对象到JSON的转换 MIT License 2.0.2 数据交换、日志记录
Hessian 二进制序列化库,支持跨语言,但已经停止维护 Apache License 2.0 4.0.38 分布式系统、RPC
Gson 简单易用的JSON处理工具,支持自定义序列化和反序列化 Apache License 2.0 2.8.7 Android开发、Web服务
Jackson 强大的JSON处理库,支持多种数据格式和自定义序列化 Apache License 2.0 2.12.5 数据转换、RESTful服务
Protocol Buffers (protobuf) Google开发的高效二进制序列化库,跨语言支持 BSD 3-Clause 3.17.3 分布式存储、通信协议
Kryo 高性能的Java序列化库,适用于缓存和数据存储 New BSD License 5.1.1 缓存、消息队列
Avro Apache开发的高性能数据序列化库,支持动态数据模型 Apache License 2.0 1.10.2 数据存储、数据交换
Thrift Facebook开发的跨语言序列化框架,支持多种数据类型 Apache License 2.0 0.14.3 分布式系统、RPC
XStream XML序列化库,提供简单的对象到XML的转换 BSD License 1.4.17 数据持久化、配置文件
Msgpack 高效的二进制序列化库,支持多种语言 Apache License 2.0 0.8.20 分布式通信、日志传输
Boon 轻量级的JSON处理工具,提供快速的数据绑定和解析 Apache License 2.0 0.34 RESTful服务、数据交换
SnakeYAML YAML处理库,支持Java对象到YAML的转换 Apache License 2.0 1.29 配置文件、数据存储
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant