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操作步骤;
⑦数据迁移、扩容对用户透明;
⑧无需停机即可扩展机器;