推荐序一

随着互联网应用场景的逐步深化,轻客户端、重服务端成为各类复杂应用的必然之选。面对复杂的服务端应用,微服务成了越来越多技术公司的后端架构选择。各相关服务之间高效可靠的数据交互是后端技术人员必须考虑的因素。近年来,AI技术、大数据技术在越来越多领域的广泛应用,进一步提升了各项服务间数据交互的需求。序列化与反序列化技术作为数据交互的核心协议技术,从起初的网络传输、数据存储,向服务间实时交互、大数据支撑、跨语言方向持续演化。从早年的JDK内置序列化省心方案,适用于数据轻量级REST服务的JSON,跨语言IDL大行其道的Thrift、Protocol Buffer,到与大数据Hive、Pig等脚本系统高度适配的Avro,每个主流技术方案的诞生和演变都有着相应的背景,自然伴随着不同的侧重点和优劣势。作为一个技术选型者,只有对主流序列化方案的技术原理与实现机制有全面而深入的了解,做到“知其所以然”,才能找到一个真正合适自己的应用场景的方案。

正因为序列化设计是开发者面临的一个日常问题,互联网上有不少与序列化相关的技术文章,但较难找到全面且系统覆盖该项技术的中文资料,有深度的博文往往侧重于一些单点技术讨论。要全面了解几个体系,也只剩下直接啃源码一条道了。本书作者将其在序列化领域的持续学习、积累及多年业界实战经验汇入本书,为读者提供了一条快速了解全貌进而深入探究该技术领域的路径。当然,对于要进一步了解核心技术实现的读者,源码还是得看的,本书起到了一个提纲挈领的作用,为读者划出重点、指明方向,大幅提升了看源码的效率,缩短了学习周期。

本书由浅入深,从基础的常用编码方法入手,阐述了大量编码类基本概念及知识,进而讲述主流的五大序列化技术方案,每项技术配以对源码实现机制的大量深入剖析,方便有兴趣深入了解的读者索引到源码进一步学习。每个技术章节结尾以深入浅出的方式给一个应用示例来收尾。当读者理解了一种主流技术方案的原理和实现机制后,在后续的学习过程中就会发现:主流方案的内部设计逻辑是共通的,也能够更清晰地看到方案间的差异点及如何取舍。本书最后一章从存储效率、编解码效率两个维度探讨了各个主流方案的差异。非常值得称道的是,在对比过程中,作者提供了11种测试数据集,给读者示范了如何严谨地进行技术选型。

上海乐言信息科技有限公司总经理

吴海华