What is/are the main difference(s) between Flink and Storm?

前端 未结 4 1712
野性不改
野性不改 2020-12-07 07:03

Flink has been compared to Spark, which, as I see it, is the wrong comparison because it compares a windowed event processing system against micro-batching; Similarly, it do

4条回答
  •  粉色の甜心
    2020-12-07 07:34

    Based on my experience of Storm and Flink. I feel these tools can solve the same problem with different approaches. Every feature of Flink mentioned by @Stephan Ewen can be matched by Storm with internal API (i.e., spolts and bolts) and Trident API now. Somebody claims that Trident is mini-batch style while I think most of the complex apps with state-related or aggregation could only depend on batch-processing with window style. So I just list some main differences here without saying which is better.

    • Development style. computing-oriented (e.g., chainable operator) in Flink vs. data-stream-oriented (e.g., addSpolt()/addBolt()) in Storm.
    • High-level API. Functions (e.g, Map, Window, Join in Streaming level) in Flink vs. Native Window and Trident in Storm.
    • Guaranteed message processing (GMP. i.e., at-exactly-once). Checkpoint with Two-Phase Commit Connector (e.g., KafkaConsumer) in Flink vs. Tuple-tree with the external state machine or Trident in Storm.
    • Fault tolerance. Marker-checkpoint in Flink vs. record-level-ACK in Storm.
    • Internal architecture. Simple abstraction and relative parallelism (e.g., slot for each thread considered with CPU cores) in Flink vs. Multi-layer abstractions (e.g., slot for each JVM as worker in supervisor and each supervisor can have many workers) in Storm.

提交回复
热议问题