A real-time event-oriented data-hub

Overview

Redcar

Crates.io Build Status DockerImage Build Status license

A real-time event-oriented data-hub, inspired by the data hub. It is:

  • Universal: the front end uses gRPC to provide services.
  • Fast: benchmarked 15000s of writes/s per instance and 20000s of reads/s.
  • Reliable: high-performance memory storage engine and persistent back-end data warehouse.
  • Secure: optional SSL client cert authentication.

Contents

Overview

Event-driven computing system architecture has become the main governance solution and technology evolution direction of various cloud vendors and cloud-native technology systems. To this end we initiated the Redcar project, focusing on:

  • Event cast, including multiple modes such as unicast, multicast, multicast and broadcast.
  • Exchange, provide routing capabilities between producers and consumers through the event bus.
  • Persistence, the ability to record and monitor the entire life cycle of events.
  • Replay, provides the ability to repeat historical events based on the persistent storage of events.

The vision is to explore and improve cloud event standards together with cloud native. Our goal is to achieve an event-hub.

Install

The latest release and setup instructions are available at GitHub.

Building

You can build redcar from source:

$ git clone https://github.com/redcar-io/redcar/
$ cd redcar
$ ./make
$ ./make install

This will generate a binary called ./bin/redcar.

NOTE: you need rust 1.55+. Please check your installation with

$ rustc --version

Usage

First start a redcar machine:

$ ./bin/redcar -a 127.0.0.1:8519 -o stdout

Next, let's set a single key, and then retrieve it:

$ ./bin/redcar-ctl -e http://127.0.0.1:8519 "foo bar" put 
$ ./bin/redcar-ctl -e http://127.0.0.1:8519 "foo" range

Clients

These are the clients for Redcar:

  • Go (The most stable and widely used)
  • Rust

If you want to try the Go client, see Go Client.

Maintainers

@Redcar.

Contributing

Feel free to dive in! Open an issue or submit PRs.

Redcar follows the Contributor Covenant Code of Conduct.

You might also like...
A timer based on a multi-time wheel structure

wheel-timer2 A timer based on a multi-time wheel structure This library uses a multi-layered time wheel structure. When a task is added to the wheel,

Time related types (and conversions) for scientific and astronomical usage.

astrotime Time related types (and conversions) for scientific and astronomical usage. This library is lightweight and high performance. Features The f

🦀 Rust library for printing human readable, relative time differences

🦀 Rust library for printing human readable, relative time differences

A plugin for Devzat that can tell the time at various timezones.

Devzat Time Teller On Devzat, people come from all around the time. It is sometime hard to know what time it is for other peoples. This plugin let you

A proc macro for creating compile-time checked CSS class sets, in the style of classNames

semester Semester is a declarative CSS conditional class name joiner, in the style of React's classnames. It's intended for use in web frameworks (lik

A simple to use rust package to generate or parse Twitter snowflake IDs,generate time sortable 64 bits unique ids for distributed systems

A simple to use rust package to generate or parse Twitter snowflake IDs,generate time sortable 64 bits unique ids for distributed systems (inspired from twitter snowflake)

Rust library for one-time async initialization

async-lazy An async version of once_cell::sync::Lazy, std::sync::OnceLock or lazy_static. Uses tokio's sychronization primitives. This crate offers an

Experimental playground for wiktionary data

wikt Experimental playground for wiktionary data. This document might not update as often as the code does. Set up You'll want a minimum of 10 GB free

Doku is a framework for building documentation with code-as-data methodology in mind.
Doku is a framework for building documentation with code-as-data methodology in mind.

Doku is a framework for building documentation with code-as-data methodology in mind. Say goodbye to stale, hand-written documentation - with D

Owner
null
tracing - a framework for instrumenting Rust programs to collect structured, event-based diagnostic information

tracing-appender Writers for logging events and spans Documentation | Chat Overview tracing is a framework for instrumenting Rust programs to collect

Cris Liao 1 Mar 9, 2022
Strongly typed, extensible event mediator.

mediatrix Strongly typed, extensible event mediator. For more info and explanation, please see the docs. Usage Sync use mediatrix::synchronous::basic:

nyvs 2 Nov 14, 2022
Nexmark event generator in Rust.

Nexmark-rs The Nexmark benchmark data generator in Rust. Installation cargo install nexmark --features bin Usage Generate nexmark events. Print one pe

RisingWave Labs 11 Nov 27, 2022
Event listening, bubbling, and callbacks

Event listeners, bubbling, and callbacks for Bevy Oh my! License All code in this repository is dual-licensed under either: MIT License (LICENSE-MIT o

Aevyrie 4 May 8, 2023
Check Have I Been Pwned and see if it's time for you to change passwords.

checkpwn Check Have I Been Pwned and see if it's time for you to change passwords. Getting started Install: cargo install checkpwn Update: cargo inst

Johannes 93 Dec 13, 2022
Estimate the amount of time spent working on a Git repository

jikyuu (時給) A tool to estimate the amount of time spent working on a Git repository. It is a direct port of git-hours, written in Node.js, because the

null 18 Nov 16, 2022
Lightweight compile-time UUID parser.

compiled-uuid Anywhere you're building Uuids from a string literal, you should use uuid. Motivation If you want to use a fixed Uuid throughout your pr

Quinn 10 Dec 8, 2022
Measure the execution time of an application

Execution Timer Drag an executable file on the binary or enter the path as an argument to measure the execution time of the program. Building cargo bu

Flux Industries 2 Nov 16, 2021
Simple and efficient time representation in Rust.

timens-rs Simple and efficient timestamp representation. The main objective being interoperability with OCaml Core_kernel.Time_ns. A significant part

Laurent Mazare 7 Oct 17, 2022
This article is about the unsound api which I found in owning_ref. Owning_ref is a library that has 11 million all-time downloads and 60 reverse dependencies.

Unsoundness in owning_ref This article is about the unsound api which I found in owning_ref. Owning_ref is a library that has 11 million all-time down

Noam Ta Shma 20 Aug 3, 2022