kafka介绍,又作卡夫卡,kafuka

  • kafka介绍
  • kafka研发背景
  • kafka名字的由来
  • kafka的设计目标:
  • kafka历史
  • kafka的优点
  • kafka的缺点


kafka介绍

kafka是一个比较经典的消息发布和订阅系统,也是大数据种用作数据交换的核心组件之一,以并发量大,社区活跃备受广大组织的喜爱,国内也有人称之为卡夫卡,kafuka。kafka有几个不同的衍生版本,这里所说的kafka是指 apache kafka 。下面我来来介绍kafka的前世今生

kafka研发背景

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

kafka名字的由来

kafka的架构师jay kreps对于kafka的名称由来是这样讲的,由于jay kreps非常喜欢franz kafka,并且觉得kafka这个名字很酷,因此取了个和消息传递系统完全不相干的名称kafka,取名字是并没有特别的含义。

kafka的设计目标:

  1. 使用推送和拉取模式 实现生产者和消费者的解耦;
  2. 微消息系统中的消息提供数据持久化,以便支持多个消费者;
  3. 系统可以随着数据流的增长进行横向扩展
  4. 通过系统优化实现高吞吐量

kafka历史

  1. 2010年底,开源道github,初始版本为0.7.0;
  2. 2011年7月因为备受关注,被纳入apache孵化器项目;
  3. 2012年10月,kafka从apache孵化器项目毕业,成为apache顶级项目;
  4. 2014年,jay kreps,neha narkhede,jun rao离开linkedin,成立confluent,此后linkedin和confluent成为kafka的核心贡组织,致力于将kafka推广应用;

kafka的优点

  1. kafka支持多个生产者;
  2. kafka支持多个消费者;
  3. kafka支持broker的横向扩展;
  4. kafka副本集机制,实现数据冗余,保障数据尽量不丢失;
  5. 通过topic将不同的消息进行分类(几乎所有的MQ都有);
  6. 通过分批发送压缩的方式,减少网络数据传输开销,提升数据吞吐量;
  7. 支持多种模式的消息(schema);
  8. 可基于磁盘实现数据持久化;
  9. 高性能处理消息,在处理大量数据的情况下,能保证亚秒级的消息延迟;
  10. 一个消费者支持多个主题的消费;
  11. 对cpu和内存消耗较小;
  12. 对网络开销相对较小;
  13. 支持跨数据中心的消息复制;
  14. 支持镜像集群;

kafka的缺点

  1. 由于是批量发送,数据并非真正的实时;
  2. 对于mqtt协议不支持;
  3. 不支持物联网传感数据直接接入;
  4. 仅支持统一分区内消息有序,无法实现全局消息有序;
  5. 监控不完善,需要安装插件;
  6. 依赖zookeeper进行元数据管理;