大数据架构选择消息队列,我选kafka。面试官问为什么?
发布网友
发布时间:2022-08-24 19:12
我来回答
共1个回答
热心网友
时间:2024-11-24 02:55
毫无疑问 Kafka!
最多前面加个Flume。
任何选型的原因,都源自你的需求是什么。 Fast,Scalable,Durable是我的需求,Kafka完美满足。稍微讲些细节,好多想必大家也都知道。
Kafka将数据写到磁盘,实际上都会写到OS的page cache里, 而读的时候又用sendfile非常高效的将数据传输到NIC。
Kafka的扩展性也非常好,只要增加broker即可。Kafka的逻辑也非常清晰,可以将不同业务逻辑的数据写进不同到topic,而topic又可以切分成若干个partition来并行处理,并且Kafka0.9后,zk只需要被broker所使用,consumer并不再需要使用zk来记录offset,大大降低zk的压力,同时也从侧面降低了scale的压力。
Kafka也有比较友好的删除策略。可以直接按照max age或者max size自动删除,也可以按照key进行compact,基本上都能满足需求。另一方面,Kafka的社区非常活跃,并且现在几乎所有流行的(流式)计算框架都支持Kafka,如Spark Streaming,Storm,Flink 等。对了,有个叫camus的工具定期可以将Kafka里的数据搬到HDFS上。