一、什么是KafKa?
官网介绍:
Kafka is used for building real-time data pipelines and streaming apps. It is horizontally scalable, fault-tolerant, wicked fast, and runs in production in thousands of companies
Kafka用于构建实时数据管道和流应用程序。 它具有水平可扩展性,容错性,快速性,并在数千家公司的生产中运行。
Kafka 是 LinkedIn 公司内部孵化的项目
- 分布式消息引擎系统
- 分布式流处理平台 (Kafka Streams 未来的发展方向)
二、Kafka特点
-
高吞吐量。在非常廉价的商用机器上也能做到单机支持每秒10W条以上消息的传输
-
分布式。Kafka明确支持在Kafka服务器上的消息分区,以及在消费机器集群上的分发消费,维护每个分区的排序语义
-
多客户端支持:Kafka系统支持与来自不同平台(如java、.NET、PHP、Ruby或Python等)的客户端相集成
-
持久化。将消息持久化到磁盘,因此可用于批量消费,例如ETL,以及实时应用程序。通过将数据持久化到硬盘以及replication防止数据丢失
-
可扩展性。kafka使用zookeeper来实现动态的集群扩展,不需要更改客户端(producer和consumer)的配置。broker会在zookeeper注册并保持相关的元数据(topic,partition信息等)更新。而客户端会在zookeeper上注册相关的watcher
三、Kafka版本演进
- 0.7 只提供基础的消息队列功能
- 0.7 到 0.8 ,正式引入了副本机制
- 0.8.2.0 版,引入新版本Producer API,即需要指定Broker地址的Producer
- 0.8.2.2.2,稳定版本,建议使用老版本Produce API,新版Bug较多
- 0.9.0.0,增加了基础的安全认证/权限功能,新版本的Producer API趋于稳定,不要使用新版的Consumer API
- 0.10.0.0,里程碑式的大版本,引入了Kafka Streams,作为消息引擎并没有功能更新
- 0.10.2.2,推荐使用大版本中该小版本,新版Consumer API稳定,可以使用
- 0.11.0.0,提供幂等性的Produce API和事务(Transaction)API,对消息格斯重构,目前最主流的版本之一
- 0.11.0.3,建议使用,消息引擎的功能趋于完善
- 1.0和2.0版本,主要对Kafka Streams进行改进