分布式架构下的序列化技术(protobuf、thrift、kryo、fst、fastjson、Jackson、gson、hessian)大全

一、序列化工作的意义:

      1、日常传输的报文,如果没有经过压缩,会影响传输效率,影响带宽,目前看protobuf的压缩后对象最小了。

      2、跨语言,例如jason(对外的接口返回)、WSDL。

二、常见的序列化技术:

  • google的Protobuf

        Protobuf是google开源的项目,全称 Google Protocol Buffers。 它是谷歌内部用的一种高效的、可扩展的对结构化数据进行编码的格式规范。谷歌自己内部很多程序之间的通信协议都用了ProtoBuf。详细

 

  • faceBook的Thrift

       Thrift源于faceBook,2007年facebook将Thrift做为一个开源项目交给了apache基金会;Thrift提供了可扩展序列化机制, 不但兼容性好而且压缩率高.

  • kryo

       依赖jar包:kryo-4.0.0.jar、minlog-1.2.jar、objenesis-2.6.jar、commons-codec-1.8.jar,在spark中有运用。

  • hessian

       默认支持跨语言,速度较慢

  • zookeeper之序列化Jute
  • 高性能序列化框架FST
   fst是完全兼容JDK序列化协议的系列化框架,序列化速度大概是JDK的4-10倍,大小是JDK大小的1/3左右.
  • avro

       依赖jar包:avro-tools-1.7.7.jar(用于编译生成类)、avro-1.7.7.jar ,在hadoop RPC中使用了这种序列化方式.

  • msgpack
  • 序列化成json
  1. 开源的Jackson
  2. Google的Gson
  3. 阿里巴巴的FastJson

你可能感兴趣的:(中间件)