kafka优缺点

kafka的优点是:1. 超高吞吐量,超高可用性和可靠性,分布式易扩展;2. 支持多个生产者与消费者。缺点是:1. opic支持少,MQ功能简单,消息可能会重复消费影响数据精确度;2. 由于是批量发送,所以数据达不到真正的实时;3. 只能支持统一分区内消息有序,无法实现全局消息有序。

我们在下文具体介绍kafka。

一、kafka研发背景

kafka的诞生,是为了解决linkedin的数据管道问题,期初linkedin采用了ActiveMQ来进行数据交换,大约是在2010年前后,那时的ActiveMQ还远远无法满足linkedin对数据传递系统的要求,经常由于各种缺陷而导致消息阻塞或者服务无法正常访问,为了能够解决这个问题,linkedin决定研发自己的消息传递系统,当时linkedin的首席架构师jay kreps便开始组织团队进行消息传递系统的研发。

二、kafka的设计目标

①使用推送和拉取模式实现生产者和消费者的解耦;

②微消息系统中的消息提供数据持久化,以便支持多个消费者

③系统可以随着数据流的增长进行横向扩展;

④通过系统优化实现高吞吐量。

三、kafka的优点

①支持多个生产者和消费者

②支持broker的横向拓展

③副本集机制,实现数据冗余,保证数据不丢失

④通过topic将数据进行分类

⑤通过分批发送压缩数据的方式,减少数据传输开销,提高吞高量

⑥支持多种模式的消息

⑦基于磁盘实现数据的持久化

四、kafka的缺点

①由于是批量发送,所以数据达不到真正的实时

②对于mqtt协议不支持

③不支持物联网传感数据直接接入

④只能支持统一分区内消息有序,无法实现全局消息有序

⑤监控不完善,需要安装插件

⑥需要配合zookeeper进行元数据管理

五、kafka主要特性

①快速持久化,可以在O(1)的系统开销下进行消息持久化;

②高吞吐,在一台普通的服务器上既可以达到10W/s的吞吐速率;

③完全的分布式系统,Broker、Producer、Consumer都原生自动支持分布式,自动实现负载均衡;

④支持同步和异步复制两种HA;

⑤支持数据批量发送和拉取;

⑥zero-copy:减少IO操作步骤;

⑦数据迁移、扩容对用户透明;

⑧无需停机即可扩展机器;