优点
高吞吐量:即使在非常廉价的机器上,Kafka也能做到每秒处理几十万条消息,而它的延迟最低只有几毫秒
低延迟:延迟可以控制在ms以内
持久性:Kafka可以将消息直接持久化在普通磁盘上,且磁盘读写性能优异
扩展性:Kafka集群支持热扩展,Kaka集群启动运行后,用户可以直接向集群中添加
容错性:Kafka会将数据备份到多台服务器节点中,即使当某个服务器节点失效时,Zookeeper将通知生产者和消费者从而使用其他的节点,也不会影响整个系统的功能
支持多种客户端语言:Kafka支持Java、.NET、PHP、Python等多种语言
缺点
重复消息:Kafka保证每条消息至少送达一次,虽然几率很小,但一条消息可能被送达多次。
消息乱序:Kafka某一个固定的Partition内部的消息是保证有序的,如果一个Topic有多个Partition,partition之间的消息送达不保证有序
复杂性:Kafka需要Zookeeper的支持,Topic一般需要人工创建,部署和维护比一般MQ成本更高。<br>
topic 从几十到几百个时候,吞吐量会大幅度下降,在同等机器下,Kafka 尽量保证 topic 数量不要过多,如果要支撑大规模的 topic,需要增加更多的机器资源。