Items\Projects | Yahoo! s4 | Twitter Storm |
协议 | Apache license 2.0 | Eclipse Public License 1.0 |
开发语言 | Java | Clojure,Java,Clojure编写了核心代码 |
结构 | 去中心化的对等结构 | 有中心节点nimbus,但非关键 |
通信 | 可插拔的通讯层,目前是基于UDP的实现 | 基于facebook开源的thrift框架 |
事件/Stream | <K,A>序列,用户可自定义事件类 | 提供Tuple类,用户不可自定义事件类, 但是可以命名field和注册序列化器 |
处理单元 | Processing Elements,内置PE处理 count,join和aggregate等常见任务 | Bolt,没有内置任务,提供IBasicBolt处理 自动ack |
第三方交互 | 提供API,Client Adapter/Driver,第三方客户端输入或者输出事件 | 定义Spout用于产生Stream,没有标准输出API |
持久化 | 提供Persist API规范,可根据频率或者次数做 持久化 | 无特定API,用户可自行选择处理 |
可靠处理 | 无,可能会丢失事件 | 提供对事件处理的可靠保证(可选) |
路由 | EventType + Keyed attribute + value匹配 内置count,join和aggregate标准任务 | Stream Groupings: Shuffle,Fields,All,Global,None,Direct 非常灵活的路由方式 |
多语言支持 | 暂时只支持Java | 多语言支持良好,本身支持Java,Clojure, 其他非JVM语言通过thrift和进程间通讯 |
Failover | 部分支持,数据无法failover | 部分支持,数据同样无法failover |
Load Balance | 不支持 | 不支持 |
并行处理 | 取决于节点数目,不可调节 | 可配置worker和task数目,storm会尽量将worker和task均匀分布 |
动态增删节点 | 不支持 | 支持 |
动态部署 | 不支持 | 支持 |
web管理 | 不支持 | 支持 |
代码成熟度 | 半成品 | 成熟 |
活跃度 | 低 | 活跃 |
编程 | 编程 + XML配置 | 纯编程 |
参考文档 | http://docs.s4.io/ | https://github.com/nathanmarz/storm/wiki/ http://xumingming.sinaapp.com/category/storm/ (非常好的中文翻译) |