Софт

Apache Fury добавляет оптимизированные сериализаторы для Scala

Apache Fury добавляет оптимизированные сериализаторы для Scala

Apache Fury был обновлен для добавления нативных образов GraalVM и оптимизированных сериализаторов для коллекций Scala. Обновление также снижает стоимость сериализации коллекций Scala за счет использования кодирования.

Apache Fury - это инкубаторский проект компании Apache. Это мультиязычный фреймворк для сериализации, основанный на динамической компиляции JIT и нулевом копировании. Он реализует многоязычные SDK, включая Java, Python, Golang, JavaScript, Rust, C++. Обеспечивает автоматическую сериализацию мультиязычных объектов и 170-кратное ускорение по сравнению с сериализацией JDK.

Сериализация используется при разработке программного обеспечения для эффективного обмена данными между системами. Она позволяет приложению совместно использовать состояние объекта данных, состоящего из комбинации кода и данных, представленных в области хранения данных. При сериализации этот объект преобразуется в серию байтов, содержащих состояние объекта в легко передаваемой форме.

Apache Fury призван стать лучшей альтернативой существующим библиотекам и фреймворкам сериализации. Передача данных между процессами, языками, узлами или сохранение объектов, чтение-запись и копирование состояния - все это требует сериализации, а производительность сериализации может влиять на эффективность системы.

Команда Fury утверждает, что статические фреймворки сериализации, такие как Protobuf или FlatBuffers, не могут быть использованы для разработки межъязыковых приложений напрямую, поскольку они не поддерживают общие ссылки и полиморфизм, а также требуют предварительной генерации кода. В отличие от них, фреймворки динамической сериализации, такие как JDK serialization, Kryo, Fst, Hessian, Pickle, обеспечивают простоту использования и динамику, но не поддерживают кросс-язычность и страдают от значительных проблем с производительностью, что проблематично при высокой пропускной способности, низкой задержке и масштабной передаче данных.

Fury с открытым исходным кодом сочетает в себе высокооптимизированные примитивы сериализации, динамическую компиляцию JIT и технологии нулевого копирования. По словам разработчиков, эта библиотека способна эффективно работать со сложными структурами данных и большими объемами данных, а также обеспечивает минимальные накладные расходы в процессах сериализации и десериализации. Fury поддерживает множество языков программирования и может использоваться для сериализации сложных структур данных.

Улучшения в последнем выпуске заключаются в добавлении поддержки нативного образа GraalVM за счет добавления сериализации AOT (опережающей компиляции), что означает отсутствие необходимости в конфигурации JSON для отражения/сериализации. Нативный образ GraalVM может компилировать Java-код в нативный код с опережением для создания более быстрых, компактных и компактных приложений, но нативный образ не имеет JIT-компилятора для компиляции байткода в машинный код.

Дополнительная поддержка коллекций Scala расширяет предыдущую поддержку Scala, в которой хорошо поддерживались обычные классы и классы case. Однако Scala также включает свои собственные коллекции, которые отличаются от коллекций jdk. Дополнения добавляют их поддержку.

Fury 0.8 доступен уже сейчас.

Читайте также