gpt4 book ai didi

apache-kafka - 为什么在实时处理中使用apache kafka

转载 作者:行者123 更新时间:2023-12-04 18:02:20 25 4
gpt4 key购买 nike

最近我一直在研究使用storm、flink等进行实时数据处理......
我遇到的所有架构都使用 kafka 作为数据源和流处理器之间的层,为什么要存在这一层?

最佳答案

我认为使用 Apache Kafka 进行实时处理主要有以下三个原因:

  • 经销
  • 业绩
  • 可靠性

  • 在实时处理中,需要将数据从数据源快速可靠地传送到流处理器。如果你做得不好,它很容易成为你的实时处理系统的瓶颈。这就是 Kafka 可以提供帮助的地方。

    之前,传统的消息传递 ApacheMQ 和 RabbitMQ 并不是特别适合实时处理大量数据。出于这个原因,Linkedin 工程师开发了他们自己的消息系统 Apache Kafka 来解决这个问题。

    分发: Kafka 是原生分布式的,适合流处理的分布式特性。 Kafka 将传入的数据划分为按偏移量排序的分区,这些分区在集群上物理分布。然后这些分区可以以分布式方式提供给流处理器。

    性能:
    Kafka 被设计成简单的,为了性能而牺牲高级功能。 Kafka 在很大程度上优于传统消息传递系统,这也可以在此 paper 中看到.主要原因如下:
  • The Kafka producer does not wait for acknowledgments from the broker and send data as fast as broker can handle

  • Kafka has a more efficient storage format with less meta-data.

  • The Kafka broker is stateless, it does not need to take care about the state of consumers.

  • Kafka exploits the UNIX sendfile API to efficiently deliver data from a broker to a consumer by reducing the number of data copies and system calls.


  • 可靠性: Kafka 作为数据源和流处理器之间的缓冲区来处理大量数据。 Kafka 只是简单地存储所有传入的数据,消费者负责决定他们想要处理数据的数量和速度。这确保了可靠的负载平衡,流处理器不会被太多数据淹没。

    Kafka 保留策略还允许在处理过程中轻松从故障中恢复(默认情况下,Kafka 保留所有数据 7 天)。每个消费者跟踪最后处理的消息的偏移量。出于这个原因,如果某些消费者失败,很容易回滚到失败前的点并重新开始处理,而不会丢失信息或需要从头开始重新处理所有流。

    关于apache-kafka - 为什么在实时处理中使用apache kafka,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43402184/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com