最近我一直在寻找使用storm,flink等进行实时数据处理...... 我遇到的所有体系结构都使用kafka作为数据源和流处理器之间的一个层,为什么这个图层应该存在?为什么在实时处理中使用apache kafka
2
A
回答
4
我觉得有,为什么使用Apache卡夫卡的实时处理主要有三个原因:
- 分布
- 性能
- 可靠性
在实时处理,有是从数据源到流处理器快速可靠地提供数据的要求。如果你做得不好,它很容易成为你的实时处理系统的瓶颈。这是卡夫卡可以提供帮助的地方。
之前,传统的消息传递ApacheMQ和RabbitMQ并不是特别适合实时处理大量数据。出于这个原因,Linkedin工程师开发了自己的邮件系统Apache Kafka来应对这个问题。
分布:卡夫卡本地分布,适合流处理的分布性质。 Kafka将传入数据划分为物理分布在集群上的按偏移排序的分区。然后这些分区可以以分布式方式提供流处理器。
性能: 卡夫卡的设计是简单的,牺牲的高级功能为性能着想。卡夫卡在传统信息系统方面的表现优于传统信息系统,在这个paper中也可以看到。主要原因如下所述:
-
卡夫卡生产者不从代理 等待确认,并以最快的速度发送数据,经纪人可以处理
-
卡夫卡具有更高效的存储格式和较少的元数据。
-
卡夫卡经纪人是无状态的,它并不需要采取有关消费者的国家照顾。
-
卡夫卡利用了UNIX的sendfile API有效地从 通过减少数据副本和 系统调用的次数传送数据的经纪人给消费者。
可靠性:卡夫卡作为数据源和数据流处理器来处理数据的一个大的负荷之间的缓冲区。卡夫卡只是简单地存储所有传入的数据,而消费者则负责决定他们想要处理数据的速度和速度。这确保了可靠的负载平衡,即流处理器不会被太多数据所淹没。
Kafka保留策略还允许在处理过程中轻松从故障中恢复(默认情况下,Kafka保留所有数据7天)。每个消费者跟踪上次处理消息的偏移量。因为这个原因,如果某个用户失败了,很容易在故障发生之前回滚到正确的位置,并且再次开始处理而不会丢失信息或者需要从头开始重新处理所有流。
相关问题
- 1. 使用Apache Spark批处理Apache Kafka的偏移管理
- 2. 你使用Apache Kafka做什么?
- 3. 为什么在flink中使用kafka
- 4. 在kafka中处理代理
- 5. Apache Kafka主题分区消息处理
- 6. 为什么我们需要在Apache Kafka中指定Serializer?
- 7. Kafka使用apache spark进行流式处理
- 8. 为什么Apache不能同时处理多个请求?
- 9. 为什么在Apache中使用Passenger?
- 10. 在Apache ServiceMix中运行Kafka使用者
- 11. 在动态环境中使用Apache Kafka
- 12. 如何在Kafka关闭时处理IOException?
- 13. 使用Microsoft.Practices.EnterpriseLibrary.Data时要处理什么?
- 14. 为什么使用IntPtr进行处理?
- 15. MQTT代理和Apache Kafka有什么区别
- 16. 使用Apache Kafka作为关键/值存储的副作用是什么?
- 17. 使用Apache Kafka获取网站日志并使用Spark Streaming处理它
- 18. 如何在Kafka中同时实现分布式处理和高可用性?
- 19. 使用Apache Drill查询kafka
- 20. 列出Apache Kafka中所有可用代理的命令是什么?
- 21. 使用Direct 3D时,应该在代码中处理什么以及应该在HLSL中处理什么?
- 22. 为什么使用实体管理器?
- 23. 我在Quartz.net中什么时候处理?
- 24. 在图像处理中,什么是实时?
- 25. 为什么处理在java中实现try catch块会变慢?
- 26. 使用PHP和Apache处理gzip有什么区别?
- 27. 为什么在使用点实例时使用按需实例
- 28. 在Excel中处理日期时使用什么公式
- 29. 为什么xpath在使用lxml处理XHTML文档时不工作(在python中)?
- 30. 为什么返回在onclick事件处理程序中使用?
我只想强调一点,即卡夫卡经纪人允许您将生产者和消费者系统分开。 (这是上面“可靠性”的一部分,但我想强调一下,因为它没有明确提及)。 - 此外,我想指出,Kafka不仅仅是一个pub/sub或消息系统。它是一个流媒体平台,包含消息代理,客户端,其他系统的连接器以及流处理功能 - 因此,如果您已经拥有Kafka,您现在甚至可能需要Stream处理框架。 –