2017-04-13 68 views

回答

4

我觉得有,为什么使用Apache卡夫卡的实时处理主要有三个原因:

  • 分布
  • 性能
  • 可靠性

在实时处理,有是从数据源到流处理器快速可靠地提供数据的要求。如果你做得不好,它很容易成为你的实时处理系统的瓶颈。这是卡夫卡可以提供帮助的地方。

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

分布:卡夫卡本地分布,适合流处理的分布性质。 Kafka将传入数据划分为物理分布在集群上的按偏移排序的分区。然后这些分区可以以分布式方式提供流处理器。

性能: 卡夫卡的设计是简单的,牺牲的高级功能为性能着想。卡夫卡在传统信息系统方面的表现优于传统信息系统,在这个paper中也可以看到。主要原因如下所述:

  • 卡夫卡生产者不从代理 等待确认,并以最快的速度发送数据,经纪人可以处理

  • 卡夫卡具有更高效的存储格式和较少的元数据。

  • 卡夫卡经纪人是无状态的,它并不需要采取有关消费者的国家照顾。

  • 卡夫卡利用了UNIX的sendfile API有效地从 通过减少数据副本和 系统调用的次数传送数据的经纪人给消费者。

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

Kafka保留策略还允许在处理过程中轻松从故障中恢复(默认情况下,Kafka保留所有数据7天)。每个消费者跟踪上次处理消息的偏移量。因为这个原因,如果某个用户失败了,很容易在故障发生之前回滚到正确的位置,并且再次开始处理而不会丢失信息或者需要从头开始重新处理所有流。

+2

我只想强调一点,即卡夫卡经纪人允许您将生产者和消费者系统分开。 (这是上面“可靠性”的一部分,但我想强调一下,因为它没有明确提及)。 - 此外,我想指出,Kafka不仅仅是一个pub/sub或消息系统。它是一个流媒体平台,包含消息代理,客户端,其他系统的连接器以及流处理功能 - 因此,如果您已经拥有Kafka,您现在甚至可能需要Stream处理框架。 –

相关问题