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的设计目标:
- 使用推送和拉取模式 实现生产者和消费者的解耦;
- 微消息系统中的消息提供数据持久化,以便支持多个消费者;
- 系统可以随着数据流的增长进行横向扩展;
- 通过系统优化实现高吞吐量;
kafka历史
- 2010年底,开源道github,初始版本为0.7.0;
- 2011年7月因为备受关注,被纳入apache孵化器项目;
- 2012年10月,kafka从apache孵化器项目毕业,成为apache顶级项目;
- 2014年,jay kreps,neha narkhede,jun rao离开linkedin,成立confluent,此后linkedin和confluent成为kafka的核心贡组织,致力于将kafka推广应用;
kafka的优点
- kafka支持多个生产者;
- kafka支持多个消费者;
- kafka支持broker的横向扩展;
- kafka副本集机制,实现数据冗余,保障数据尽量不丢失;
- 通过topic将不同的消息进行分类(几乎所有的MQ都有);
- 通过分批发送压缩的方式,减少网络数据传输开销,提升数据吞吐量;
- 支持多种模式的消息(schema);
- 可基于磁盘实现数据持久化;
- 高性能处理消息,在处理大量数据的情况下,能保证亚秒级的消息延迟;
- 一个消费者支持多个主题的消费;
- 对cpu和内存消耗较小;
- 对网络开销相对较小;
- 支持跨数据中心的消息复制;
- 支持镜像集群;
kafka的缺点
- 由于是批量发送,数据并非真正的实时;
- 对于mqtt协议不支持;
- 不支持物联网传感数据直接接入;
- 仅支持统一分区内消息有序,无法实现全局消息有序;
- 监控不完善,需要安装插件;
- 依赖zookeeper进行元数据管理;