Exo*_*mus 5 apache-kafka apache-storm apache-flink
最近我一直在研究使用风暴,flink等实时数据处理......我遇到的所有架构都使用kafka作为数据源和流处理器之间的一层,为什么这个层应该存在?
我认为使用Apache Kafka进行实时处理有三个主要原因:
在实时处理中,需要快速可靠地将数据从数据源传送到流处理器.如果你做得不好,它很容易成为你的实时处理系统的瓶颈.这是卡夫卡可以提供帮助的地方.
之前,传统的消息传递ApacheMQ和RabbitMQ并不是特别适合实时处理大量数据.出于这个原因,Linkedin工程师开发了自己的消息传递系统Apache Kafka,以便能够解决这个问题.
分布: Kafka是原生分布的,适合流处理的分发性质.Kafka将传入数据划分为按偏移排序的分区,这些分区在物理上分布在群集上.然后,这些分区可以以分布式方式馈送流处理器.
性能: Kafka的设计简单,为了性能而牺牲了先进功能.Kafka的优势明显优于传统的消息传递系统,本文也可以看到.主要原因如下:
Kafka生产者不等待经纪人的确认,并且发送数据的速度与经纪人可以处理的速度一样快
Kafka具有更高效的存储格式,元数据更少.
Kafka经纪人是无国籍的,它不需要关心消费者的状态.
Kafka利用UNIX sendfile API通过减少数据副本和系统调用的数量,有效地将数据从代理传递给消费者.
可靠性: Kafka充当数据源和流处理器之间的缓冲区,以处理大量数据.Kafka只是简单地存储所有传入的数据,消费者负责决定他们想要处理数据的速度和速度.这确保了可靠的负载平衡,使得流处理器不会被太多数据所淹没.
Kafka保留策略还允许在处理过程中轻松恢复故障(Kafka默认保留所有数据7天).每个消费者跟踪上次处理的消息的偏移量.因此,如果某些消费者失败,很容易在故障之前回滚到该点并再次开始处理而不丢失信息或需要从头开始重新处理所有流.
| 归档时间: |
|
| 查看次数: |
1541 次 |
| 最近记录: |