实时数据流的实战书,推荐你看《Practical Real-Time Data Processing and Analytics》这本资源。里面讲得蛮清楚,从 Apache Storm 的 Spouts
、Bolts
到 Spark Streaming 的小批模式,再到 Flink 的 事件时间、状态管理这些点,都挺有价值的。
Storm 的消息流设计比较轻量,适合那种对延迟要求高的应用,比如风控系统。你要是用 Kafka 接数据,想快速出个报警结果,用 Storm 合适。
Spark Streaming就偏稳重一些。它走的是“微批”路线,适合跟 Spark 的整个生态打配合,比如你要用 Spark SQL
做实时查询,或者上 MLlib 跑点模型预测,那 Spark Streaming 绝对不亏。
Flink可以说是实时里的“卷王”。支持 exactly-once 语义,吞吐高,延迟低,适合数据量大还想要精度的业务场景。它对 事件时间 和 窗口计算 的支持也蛮强。
如果你项目中要跟 Kafka、HDFS、S3、Cassandra 这类系统打交道,Flink 的 connector
也比较成熟。
这本书整体不空谈概念,案例和实践也不少。虽然看不到书里所有代码,但思路和设计逻辑值得参考。
你要是刚开始接触实时流,这本书能帮你搭建知识框架;要是已经在项目里搞这些了,书里的技术比较也能给你决策参考。