Arcon
A runtime for writing real-time analytics applications in the Rust programming language.
Project Status
Arcon is in development and should be considered experimental until further notice.
Rust Version
Arcon builds against the latest stable release and the current MSRV is 1.53.0.
Roadmap
See the roadmap here
Highlights
- Arrow-native
- Hybrid Row(Protobuf) / Columnar (Arrow) System
- Dynamic & Scalable Middleware
- Flexible State Management
- Backend per Operator (e.g., RocksDB, Sled)
- Eager and Lazy state indexes
Vision
Example
use arcon::prelude::*;
fn main() {
let mut app = Application::default()
.iterator(0u64..100, |conf| {
conf.set_arcon_time(ArconTime::Event);
conf.set_timestamp_extractor(|x: &u64| *x);
})
.filter(|x| *x > 50)
.to_console()
.build();
app.start();
app.await_termination();
}
More examples can be found here.
Project Layout
arcon
: Arcon cratearcon_build
: Protobuf builderarcon_macros
: Arcon derive macros.arcon_tests
: Integration testsexamples
: Example applicationswebsite
: Project website
Acknowledgements
Arcon is influenced by many great projects whether it is implementation, code practices or project structure:
License
This project is licensed under the Apache-2.0 license.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in Arcon by you shall be licensed as Apache-2.0, without any additional terms or conditions.