All Projects → tsung-wei-huang → Dtcraft

tsung-wei-huang / Dtcraft

Licence: mit
A High-performance Cluster Computing Engine

Projects that are alternatives of or similar to Dtcraft

Dkeras
Distributed Keras Engine, Make Keras faster with only one line of code.
Stars: ✭ 181 (+48.36%)
Mutual labels:  parallel-computing, distributed-systems
matrixone
Hyperconverged cloud-edge native database
Stars: ✭ 1,057 (+766.39%)
Mutual labels:  distributed-systems, streaming
Fast
A framework for GPU based high-performance medical image processing and visualization
Stars: ✭ 179 (+46.72%)
Mutual labels:  parallel-computing, streaming
Liftbridge
Lightweight, fault-tolerant message streams.
Stars: ✭ 2,175 (+1682.79%)
Mutual labels:  streaming, distributed-systems
Corfudb
A cluster consistency platform
Stars: ✭ 539 (+341.8%)
Mutual labels:  streaming, distributed-systems
Bigmachine
Bigmachine is a library for self-managing serverless computing in Go
Stars: ✭ 167 (+36.89%)
Mutual labels:  parallel-computing, distributed-systems
Draco
DRACO: Byzantine-resilient Distributed Training via Redundant Gradients
Stars: ✭ 21 (-82.79%)
Mutual labels:  distributed-systems, parallel-computing
Materialize
Materialize lets you ask questions of your live data, which it answers and then maintains for you as your data continue to change. The moment you need a refreshed answer, you can get it in milliseconds. Materialize is designed to help you interactively explore your streaming data, perform data warehousing analytics against live relational data, or just increase the freshness and reduce the load of your dashboard and monitoring tasks.
Stars: ✭ 3,341 (+2638.52%)
Mutual labels:  streaming, distributed-systems
Jocko
Kafka implemented in Golang with built-in coordination (No ZK dep, single binary install, Cloud Native)
Stars: ✭ 4,445 (+3543.44%)
Mutual labels:  streaming, distributed-systems
b-rabbit
A thread safe library that aims to provide a simple API for interfacing with RabbitMQ. Built on top of rabbitpy, the library make it very easy to use the RabbitMQ message broker with just few lines of code. It implements all messaging pattern used by message brokers
Stars: ✭ 15 (-87.7%)
Mutual labels:  distributed-systems, parallel-computing
Akka
Build highly concurrent, distributed, and resilient message-driven applications on the JVM
Stars: ✭ 11,938 (+9685.25%)
Mutual labels:  streaming, distributed-systems
Gev
🚀Gev is a lightweight, fast non-blocking TCP network library based on Reactor mode. Support custom protocols to quickly and easily build high-performance servers.
Stars: ✭ 1,082 (+786.89%)
Mutual labels:  reactor, network-programming
Awesome Parallel Computing
A curated list of awesome parallel computing resources
Stars: ✭ 212 (+73.77%)
Mutual labels:  parallel-computing, distributed-systems
traffic
Massively real-time traffic streaming application
Stars: ✭ 25 (-79.51%)
Mutual labels:  distributed-systems, streaming
Raftlib
The RaftLib C++ library, streaming/dataflow concurrency via C++ iostream-like operators
Stars: ✭ 717 (+487.7%)
Mutual labels:  dataflow-programming, streaming
Parapet
A purely functional library to build distributed and event-driven systems
Stars: ✭ 106 (-13.11%)
Mutual labels:  parallel-computing, distributed-systems
Playground
A new kind of virtual event platform 🐧
Stars: ✭ 120 (-1.64%)
Mutual labels:  distributed-systems
Teddy
Spark Streaming监控平台,支持任务部署与告警、自启动
Stars: ✭ 120 (-1.64%)
Mutual labels:  streaming
Swifty360player
iOS 360-degree video player streaming from an AVPlayer.
Stars: ✭ 118 (-3.28%)
Mutual labels:  streaming
Spring Webflux Reactive Rest Api Demo
Build Reactive Rest APIs with Spring WebFlux and Reactive Mongo
Stars: ✭ 117 (-4.1%)
Mutual labels:  reactor

What's DtCraft?

DtCraft is a general-purpose distributed programming system based on data-parallel streams. It offers a new powerful programming model called stream graph to build parallel and distributed workloads. Once an application is cast into this framework, the kernel transparently performs job distribution for you. You don't have to worry about system programming and can focus on high-level development!

Unified Framework Stream Graph

Whether you are application developers or domain-specific engineers, you can use DtCraft for:

  • Distributed computing
  • Event-driven programming
  • Network programming
  • Data stream processing

To get your first DtCraft program up and running, visit QuickStart.

Design Goals

The goal of DtCraft is to help you write simple, easy, and effective code at cluster scale. The example below demonstrates a simple application to run two programs on two machines sending each other a message.

#include <dtc/dtc.hpp>
  
using namespace std::literals;  // for the use of string literal
using namespace dtc::literals;  // for the use of memory literal

int main(int argc, char* argv[]) {

  dtc::Graph G;

  auto A = G.vertex();
  auto B = G.vertex();

  auto lambda = [] (dtc::Vertex& v, dtc::InputStream& is) {
    if(std::string s; is(s) != -1) {
      std::cout << "Received: " << s << '\n';
      return dtc::Event::REMOVE;
    }
    return dtc::Event::DEFAULT;
  };

  auto AB = G.stream(A, B).on(lambda);
  auto BA = G.stream(B, A).on(lambda); 

  A.on([&AB] (dtc::Vertex& v) { (*v.ostream(AB))("hello world from A"s); });  
  B.on([&BA] (dtc::Vertex& v) { (*v.ostream(BA))("hello world from B"s); });
  
  G.container().add(A).cpu(1).memory(1_GB);
  G.container().add(B).cpu(1).memory(1_GB);

  dtc::Executor(G).run();
}

There are myriads of cluster computing frameworks such as Hadoop MapReduce, Apache Spark, Dryad, and Ray. We believe each has its reason to exist. DtCraft targets at:

  • Programming model. DtCraft leverages modern C++17 to offer a new programming model for cluster computing. Our model is very general and can implement most distributed computing patterns.

  • Performance. DtCraft is designed completely from the ground up using advanced software techniques in order to deliver the best performance.

  • Productivity. DtCraft allows you to easily bring up a parallel and distributed workload in only a few lines of code. It takes only a few steps to set up a cluster to get things up and running.

System Requirements

To install and run DtCraft, you only need the following:

  • 64-bit Linux machine(s) with Kernel 3.8 or higher
  • GNU C++ Compiler G++ v7.2 with -std=c++1z
  • GNU Autotool (autoconf, automake, libtool)

Learn More

Get Involved

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].