Hazelcast jet

Low-latency stream processing at the 99.99th percentile

Journal Article (2021)
Author(s)

Can Gencer (Hazelcast Inc)

Marko Topolnik (Hazelcast Inc)

Viliam Ďurina (Hazelcast Inc)

Emin Demirci (Hazelcast Inc)

Ensar B. Kahveci (Hazelcast Inc)

Ali Gürbüz (Hazelcast Inc)

Ondřej Lukáš (Hazelcast Inc)

Marios Fragkoulis (TU Delft - Electrical Engineering, Mathematics and Computer Science)

Asterios Katsifodimos (TU Delft - Electrical Engineering, Mathematics and Computer Science)

undefined More Authors (External organisation)

Research Group
Web Information Systems
DOI related publication
https://doi.org/10.14778/3476311.3476387 Final published version
More Info
expand_more
Publication Year
2021
Language
English
Research Group
Web Information Systems
Issue number
12
Volume number
14
Pages (from-to)
3110-3121
Event
47th International Conference on Very Large Data Bases, VLDB 2021 (2021-08-16 - 2021-08-20), Virtual, Online
Downloads counter
408
Collections
Institutional Repository
Reuse Rights

Other than for strictly personal use, it is not permitted to download, forward or distribute the text or part of it, without the consent of the author(s) and/or copyright holder(s), unless the work is under an open content license such as Creative Commons.

Abstract

Jet is an open-source, high-performance, distributed stream processor built at Hazelcast during the last five years. Jet was engineered with millisecond latency on the 99.99th percentile as its primary design goal. Originally Jet’s purpose was to be an execution engine that performs complex business logic on top of streams generated by Hazelcast’s In-memory Data Grid (IMDG): a set of in-memory, partitioned and replicated data structures. With time, Jet evolved into a full-fledged, scale-out stream processor that can handle out-of-order streams and provide exactly-once processing guarantees. Jet’s end-to-end latency lies in the order of milliseconds, and its throughput in the order of millions of events per CPU-core. This paper presents the main design decisions we made in order to maximize the performance per CPU-core, alongside lessons learned, and an empirical performance evaluation.