随着分布式系统的流行,Kafka已经成为了众多企业级系统的选择。
Kafka是一个分布式的消息发布、订阅系统,是有领英公司首先开发的,后来也是成功的加入了Apache基金会,同时也是一个分布式、分区的、多副本、多订阅者,基于ZooKeeper协调的分布式日志系统。
在企业级系统的使用,一般用来充当消息系统(MQ),它能够支撑海量数据的数据传递,在离线和消息实时的消息处理系统中,都被广泛使用,主要应用场景就是日志收集系统和消息系统。
Kafka有什么优势?
可靠度高:Kafka会将消息数据持久化到本地磁盘,并且提供了副本形式的数据备份,以防止数据异常丢失。
扩展性强:Kafka提供了集群热扩展的功能,无须关掉服务即可;很大程度上提高了Kafka的扩展性。
性能优异:可以支撑高并发、高吞吐量、低延迟;在Kafka中,每秒都可以处理巨量的消息数据。
异步通信机制:Kafka内部提供了异步处理机制,允许用户将一个消息放入队列中,但可以允许立即被消费者消费。
市面上的其他消息队列
目前市面上使用比较广泛的就是,RabbitMQ、RocketMQ、ActiveMQ、Kafka这几种了,当然Redis在一定程度上也可以比当做消息队列来使用。
RabbitMQ:首先,RabbitMQ开源,使用Erlang进行编写;其次,其管理界面比较友好,也是目前很多企业级系统开发的优选,就是Erlang语言学起来难度较高,看源码将会是一件比较痛苦的事情。
RocketMQ:目前阿里系中很大规模都是在使用RocketMQ,性能上很有优势,支持多种消费模式;并且产品的更新迭代比较快。
ActiveMQ:ActiveMQ是Apache旗下的项目,是一款比较成熟的产品了,常年来也已经在很多企业级系统中扎根,文档方面比较全面。