Kafka底层原理剖析(近万字建议收藏)
Kafka 简介 Apache Kafka 是一个分布式发布-订阅消息系统。是大数据领域消息队列中唯一的王者。最初由 linkedin 公司使用 scala 语言开发,在2010年贡献给了Apache基金会并成为顶级开源项目。至今已有十余年,仍然是大数据领域不可或缺的并且是越来越重要的一个组件。 Kafka 适合离线和在线消息,消息保留在磁盘上,并在集群内复制以防止数据丢失。kafka构建在zookeeper同步服务之上。它与 Flink 和 Spark 有非常好的集成,应用于实时流式数据分析。 Kafka特点: 可靠性:具有副本及容错机制。 可扩展性:kafka无需停机即可扩展节点及节点上线。 持久性:数据存储到磁盘上,持久性保存。 性能:kafka具有高吞吐量。达到TB级的数据,也有非常稳定的性能。 速度快:顺序写入和零拷贝技术使得kafka延迟控制在毫秒级。 Kafka 底层原理 先看下 Kafka 系统的架构 Kafka 架构 kafka支持消息持久化,消费端是主动拉取数据,消费状态和订阅关系由客户端负责维护, 消息消费完后,不会立即删除,会保留历史消息 。因此支持多订阅时,消息只会存储一份就可以。 broker :kafka集群中包含一个或者多个服务实例(节点),这种服务实例被称为broker(一个broker就是一个节点/一个服务器); topic