前一篇文章我們介紹瞭 Java 中的兩個常見的序列化方式,JDK 序列化和 Hessian2 序列化,本文我們接著來講述一個後起之秀——Kryo 序列化,它號稱 Java 中最快的序列化框架。那麼話不多說,就讓我們來看看這個後起之秀到底有什麼能耐吧。

Kryo 序列化

Kryo 是一個快速序列化/反序列化工具,依賴於字節碼生成機制(底層使用瞭 ASM 庫),因此在序列化速度上有一定的優勢,但正因如此,其使用也隻能限制在基於 JVM 的語言上。

和 Hessian 類似,Kryo 序列化出的結果,是其自定義的、獨有的一種格式。由於其序列化出的結果是二進制的,也即 byte[],因此像 Redis 這樣可以存儲二進制數據的存儲引擎是可以直接將 Kryo 序列化出來的數據存進去。當然你也可以選擇轉換成 String 的形式存儲在其他存儲引擎中(性能有損耗)。

由於其優秀的性能,目前 Kryo 已經成為多個知名 Java 框架的底層序列化協議,包括但不限於

  • Apache Fluo (Kryo is default serialization for Fluo Recipes)
  • Apache Hive (query plan serialization)
  • Apache Spark (shuffled/cached data serialization)
  • Storm (distributed realtime computation system, in turn used by many others)
  • Apache Dubbo (high performance, open source RPC framework)
  • ……

官網地址在:https://github.com/EsotericSoftware/kryo

基礎用法

介紹瞭這麼多,接下來我們就來看看 Kryo 的基礎用法吧。其實對於序列化框架來說,API 基本都差不多,畢竟入參和出參通常都是確定的(需要序列化的對象/序列化的結果)。在使用 Kryo 之前,我們需要引入相應的依賴

<dependency>
<groupId>com.esotericsoftware</groupId>
<artifactId>kryo</artifactId>
<version>5.2.0</version>
</dependency>