流行框架:
Apache Storm:Twitter开源,他们有上千台机器跑Storm;
client端:
spout(数据源):puma对接mysql的binlog,swallow对接应用消息,blackhole对接流量、打点日志;
bolt(数据处理逻辑),有向无环图
Storm架构(通过zk交互):
nimbus(单点):任务分配、topology状态监控;
supervisor:管理多个worker节点,worker上跑spout和bolt;
worker之间通信用netty,pigeon底层也是用netty;
JStorm:Storm上的一个分支,阿里对底层做了修改;
nimbus HA;
backpressure:下游指定QPS;
spout多线程:
Apache Spark(spark streaming):
数据源:kalfa、flume、hdfs/s3、kinesis、twitter
数据:micro batch(因为rdd的原因),storm中是一条一条跑的,spark在实时性上可能不如storm,准实时,延迟秒级别以上。
数据处理单位:Discretized stream(DStream);
因为micro batch,可以确保数据“处理且只处理一次”,容错性更好;
可以通过spark SQL处理数据;
Twitter Heron:
预计今年年中开源,与Storm接口一致;
task做更小粒度拆分,更易做隔离、profiling、监控
nimbus:只负责任务分配,不负责topology状态监控;
没有worker概念(worker是多线程的),一个task就是一个thread;
stream manager: 相对storm更容易做back pressure
Apache Flink:
像spark一样,提供了很多科学计算的框架,
data set批处理 、data stream流式
netflix个性化和推荐系统架构
storm:DP有60个业务在run;
目前应用场景:
实时流量、实时交易额:
搜索、推荐:
广告
CTR(点击率)、广告反作弊、计费
业务安全:
反爬虫、反作弊:检测出来是爬虫提供一些虚假数据