Yahoo! s4和Twitter storm的粗略比较

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/ (非常好的中文翻译)