一句话:Skyway 直接连接不同 JVM 进程的托管堆,无需序列化/反序列化即可跨机传输对象。
在 Java、Scala 等托管语言构建的大规模分布式系统中,跨机数据传输需要将大量对象序列化为字节序列再反序列化。这一过程既性能低效(反射开销大),又费人力(手写序列化函数易错)。本文提出 Skyway,一种基于 JVM 的技术,可直接连接本地或远程 JVM 进程的托管堆,使源堆中的对象无需改变格式即可直接写入远程堆。Skyway 完全消除了序列化/反序列化函数的调用,从而节省 CPU 时间,并免去开发者手写序列化函数的需求,为任何基于 JVM 的系统带来性能收益。
Managed languages such as Java and Scala are prevalently used in development of large-scale distributed systems. Under the managed runtime, when performing data transfer across machines, a task frequently conducted in a Big Data system, the system needs to serialize a sea of objects into a byte sequence before sending them over the network. The remote node receiving the bytes then deserializes them back into objects. This process is both performance-inefficient and labor-intensive: (1) object serialization/deserialization makes heavy use of reflection, an expensive runtime operation and/or (2) serialization/deserialization functions need to be hand-written and are error-prone. This paper presents Skyway, a JVM-based technique that can directly connect managed heaps of different (local or remote) JVM processes. Under Skyway, objects in the source heap can be directly written into a remote heap without changing their formats. Skyway provides performance benefits to any JVM-based system by completely eliminating the need (1) of invoking serialization/deserialization functions, thus saving CPU time, and (2) of requiring developers to hand-write serialization functions.
DOI 原文 ·
@inproceedings{paperbot4252,
title = {Skyway},
author = {Khanh Nguyen and Lu Fang and Christian Navasca and Guoqing Xu and Brian Demsky and Shan Lu},
booktitle = {ASPLOS},
year = {2018},
doi = {10.1145/3173162.3173200}
}