Доклад

Вызовите Rust — у нас тут медленно!

На русском языке

В рамках одного из проектов я занимался реализацией высокопроизводительного процессинга данных, где требовалось интенсивное чтение и запись больших объемов данных в формате Apache Parquet.

После анализа существующего Java-стека и проведения бенчмарков стало ясно, что для задач data plane гораздо эффективнее использовать современный нативный движок, в то время как control plane логично оставить на Java. В итоге был выбран DataFusion — движок запросов на Rust, используемый, например, в InfluxDB и других популярных базах данных.

Реализация аналогичного по производительности решения на Java заняла бы более года и потребовала форка нескольких проектов. Мы сделали наше решение на базе DataFusion, используя Project Panama (FFI).

В докладе поделюсь практическим опытом построения подобного решения:

  • С какими трудностями придется столкнуться при интеграции Rust и Java.
  • Как устроен Project Panama (FFI и FFM) и какие его части особенно важны.
  • Как собрать кроссплатформенную Rust-библиотеку и встроить ее в Java-проект.
  • Как спроектировать удобный и безопасный API.
  • Как работать с указателями, колбэками, управлением памятью и логированием между языками.

Будет полезно разработчикам, которые хотят повысить производительность своих Java-приложений за счет интеграции с нативным кодом или использовать сторонние библиотеки, написанные под другие языки программирования и среды.

Доклады