All Projects → riker-rs → Riker

riker-rs / Riker

Licence: mit
Easily build efficient, highly concurrent and resilient applications. An Actor Framework for Rust.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Riker

Coerce Rs
Coerce - an asynchronous (async/await) Actor runtime and cluster framework for Rust
Stars: ✭ 231 (-68.99%)
Mutual labels:  async, actor-model, actors
Orleankka
Functional API for Microsoft Orleans http://orleanscontrib.github.io/Orleankka/
Stars: ✭ 429 (-42.42%)
Mutual labels:  event-sourcing, actors, cqrs
Akkatecture
a cqrs and event sourcing framework for dotnet core using akka.net
Stars: ✭ 414 (-44.43%)
Mutual labels:  event-sourcing, actors, cqrs
endless
Scala library to describe sharded and event sourced entities using tagless-final algebras
Stars: ✭ 70 (-90.6%)
Mutual labels:  actors, cqrs, event-sourcing
Actor Framework
An Open Source Implementation of the Actor Model in C++
Stars: ✭ 2,637 (+253.96%)
Mutual labels:  async, actor-model, actors
reacted
Actor based reactive java framework for microservices in local and distributed environment
Stars: ✭ 17 (-97.72%)
Mutual labels:  actors, actor-model, event-sourcing
Event Source Cqrs Sample
Sample ES/CQRS application
Stars: ✭ 380 (-48.99%)
Mutual labels:  event-sourcing, cqrs
Netcoremicroservicessample
Sample using micro services in .NET Core 3.1 Focusing on clean code
Stars: ✭ 403 (-45.91%)
Mutual labels:  event-sourcing, cqrs
Pitstop
This repo contains a sample application based on a Garage Management System for Pitstop - a fictitious garage. The primary goal of this sample is to demonstrate several software-architecture concepts like: Microservices, CQRS, Event Sourcing, Domain Driven Design (DDD), Eventual Consistency.
Stars: ✭ 708 (-4.97%)
Mutual labels:  event-sourcing, cqrs
Eventstore
The stream database optimised for event sourcing
Stars: ✭ 4,395 (+489.93%)
Mutual labels:  event-sourcing, cqrs
Resolve
Full stack CQRS, DDD, Event Sourcing framework for Node.js
Stars: ✭ 460 (-38.26%)
Mutual labels:  event-sourcing, cqrs
Awesome Elixir Cqrs
A curated list of awesome Elixir and Command Query Responsibility Segregation (CQRS) resources.
Stars: ✭ 467 (-37.32%)
Mutual labels:  event-sourcing, cqrs
Sqlstreamstore
Stream Store library targeting RDBMS based implementations for .NET
Stars: ✭ 374 (-49.8%)
Mutual labels:  event-sourcing, cqrs
Go Api Boilerplate
Go Server/API boilerplate using best practices DDD CQRS ES gRPC
Stars: ✭ 373 (-49.93%)
Mutual labels:  event-sourcing, cqrs
Protoactor Go
Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin
Stars: ✭ 3,934 (+428.05%)
Mutual labels:  actor-model, actors
Ddd Leaven Akka V2
Sample e-commerce system #Microservices #Akka #Reactive-DDD #CQRS
Stars: ✭ 362 (-51.41%)
Mutual labels:  event-sourcing, cqrs
Christddd
🙌 ASP.NET Core 3.1 应用, 包含 DDD、CQRS、EDA 和ES事件回溯
Stars: ✭ 510 (-31.54%)
Mutual labels:  event-sourcing, cqrs
Event Store
PHP 7.4 EventStore Implementation
Stars: ✭ 505 (-32.21%)
Mutual labels:  event-sourcing, cqrs
Equinoxproject
Full ASP.NET Core 5 application with DDD, CQRS and Event Sourcing concepts
Stars: ✭ 5,120 (+587.25%)
Mutual labels:  event-sourcing, cqrs
Ray
项目停止更新,新项目:https://github.com/RayTale/Vertex
Stars: ✭ 635 (-14.77%)
Mutual labels:  event-sourcing, cqrs

Riker

Build status MIT licensed crates.io Released API docs pre-commit code style: prettier

Overview

Riker is a framework for building modern, concurrent and resilient systems using the Rust language. Riker aims to make working with state and behavior in concurrent systems as easy and scalable as possible. The Actor Model has been chosen to realize this because of the familiar and inherent simplicity it provides while also providing strong guarantees that are easy to reason about. The Actor Model also provides a firm foundation for resilient systems through the use of the actor hierarchy and actor supervision.

Riker provides:

  • An Actor based execution runtime
  • Actor supervision to isolate and recover from failures
  • A modular system
  • Concurrency built on futures::execution::ThreadPool
  • Publish/Subscribe messaging via actor channels
  • Message scheduling
  • Out-of-the-box, configurable, non-blocking logging
  • Command Query Responsibility Segregation (CQRS)
  • Easily run futures

Website | API Docs

Example

Cargo.toml:

[dependencies]
riker = "0.4.1"

main.rs:

use std::time::Duration;
use riker::actors::*;

#[derive(Default)]
struct MyActor;

// implement the Actor trait
impl Actor for MyActor {
    type Msg = String;

    fn recv(&mut self,
                _ctx: &Context<String>,
                msg: String,
                _sender: Sender) {

        println!("Received: {}", msg);
    }
}

// start the system and create an actor
fn main() {
    let sys = ActorSystem::new().unwrap();

    let my_actor = sys.actor_of::<MyActor>("my-actor").unwrap();

    my_actor.tell("Hello my actor!".to_string(), None);

    std::thread::sleep(Duration::from_millis(500));
}

Associated Projects

Official crates that provide additional functionality:

Roadmap & Currently in Development

The next major theme on the project roadmap is clustering and location transparency:

  • Remote actors
  • Support for TCP and UDP
  • Clustering (using vector clocks)
  • Distributed data (CRDTs)

Why Riker

Riker is a full-featured actor model implementation that scales to hundreds or thousands of microservices and that equally can run exceptionally well on resource limited hardware to drive drones, IoT and robotics. The Rust language makes this possible.

Rust empowers developers with control over memory management, requiring no garbage collection and runtime overhead, while also providing modern semantics and expressive syntax such as the trait system. The result is a language that can solve problems equally for Web and IoT.

Riker adds to this by providing a familiar actor model API which in turn makes concurrent, resilient systems programming easy.

Rust Version

Riker is currently built using the latest Rust Nightly.

Contributing

Riker is looking for contributors - join the project! You don't need to be an expert in actors, concurrent systems, or even Rust. Great ideas come from everyone.

There are multiple ways to contribute:

  • Ask questions. Adding to the conversation is a great way to contribute. Find us on Gitter.
  • Documentation. Our aim is to make concurrent, resilient systems programming available to everyone and that starts with great Documentation.
  • Additions to Riker code base. Whether small or big, your Pull Request could make a difference.
  • Patterns, data storage and other supporting crates. We are happy to link to and provide full credit to external projects that provide support for databases in Riker's event storage model or implementations of common actor patterns.

pre-commit

Before you commit your code pre-commit integrates as a git hook to automatically check your code. Please don't skip git hooks (even if you do the travis TravisCI build will still fail).

There are two different approaches you can use to run pre-commit

direct approach

pre-commit run -a

with yarn or npm

yarn
yarn lint
npm run install
npn run lint
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].