Distributed processing
Tool | 好处 | 坏处 | 类型 | 支持序列化 | 支持根据负载动态调度任务 | 支持c | 支持dependency的调度 | 有成熟的library | |||||
Actor model | 天生支持分布式,本身已经包含基本的serialization功能 | 比较底层 需要自己编写调度代码 没有广泛支持c的library | 传统基于msg的系统 | v | x | v | x | x | |||||
Apache Storm | 本身支持分布式,dependency的调度 | 基于java,不支持c | Streaming 系统 | v | v | x | v | v | |||||
Grpc | 支持c | 需要自己编写调度代码 效率不高(基于http) | RPC | v | x | v | x | v | |||||
Stapl (Standard Adaptive Parallel Library) | STAPL(标准模板自适应并行库)是用于在C ++中开发并行程序的框架。它设计用于共享和分布式内存并行计算机
TaskGraph
|
|
|
| V? |
|
|
| |||||
Stolos, https://github.com/sailthru/stolos/blob/master/README.md Chronos, luigi, Azkaban | a task dependency scheduler that helps build distributed pipelines | 像是接近批处理框架,实时性可能会慢? |
|
| V? |
|
|
| |||||
Zeromq | 支持c | 只是消息队列,需要自己编写序列化,和调度 |
|
| V? |
|
|
| |||||
Celery http://www.celeryproject.org/ | 芹菜:分布式任务队列 Celery是基于分布式消息传递的异步任务队列/作业队列。它专注于实时操作,但也支持调度。 | 基于python |
|
| V? | x | ? | v | |||||
Thrift |
|
|
|
|
|
|
|
| |||||
hadoop |
| 批处理系统,慢 Map reduce不是非常适用 Java | MapReduce-like 系统 | v | v | v | x | V | |||||
MPI (mpich2 和 openmpi) |
|
| 传统基于msg的系统 |
|
|
|
|
| |||||
GraphLab (dato) https://turi.com/ |
| 好像用于机器学习方面的 | 图计算系统 |
|
|
|
|
| |||||
Giraph / Hama |
|
| 图计算系统 |
|
|
|
|
| |||||
Spark Streaming |
| 不是纯粹的流处理,实时性可能会有影响 | Streaming 系统 |
|
|
|
|
| |||||
Flink |
|
| Streaming 系统 |
|
|
|
|
| |||||
|
|
|
|
|
|
|
|
| |||||
Bonic https://boinc.berkeley.edu/trac/wiki/ProjectMain |
|
|
|
|
|
|
|
| |||||
Tpl dataflow |
|
|
|
|
|
|
|
| |||||
Julia language https://julialang.org/ | 语言层面支持分布式 | 没有图调度 |
| v | v | vx | x | V | |||||
|
| 是一个标准 |
|
|
|
|
|
| |||||
|
| 是一个标准 |
|
|
|
|
|
| |||||
|
|
|
|
|
|
|
|
| |||||
|
|
|
|
|
|
|
|
|
Keywords
Distributed processing
Distributed computing
Distributed task scheduler
并行计算
高性能计算
Task Dependence Graph
技术
Paxos
Consistent Hash
分布式存储系统还有一系列的理论、算法、技术作为支撑:例如 Paxos, CAP, ConsistentHash, Timing (时钟), 2PC, 3PC
分布式计算系统也做了一个分类,如下:
1. 传统基于msg的系统
2. MapReduce-like 系统
3. 图计算系统
4. 基于状态(state)的系统
5. Streaming 系统