Kafka 系列(一)—— Kafka 简介

1、简介

ApacheKafka 是一个分布式的流处理平台。它具备如下特色:git

  • 支持消息的发布和订阅,相似于 RabbtMQ、ActiveMQ 等消息队列;
  • 支持数据实时处理;
  • 能保证消息的可靠性投递;
  • 支持消息的持久化存储,并经过多副本分布式的存储方案来保证消息的容错;
  • 高吞吐率,单 Broker 能够轻松处理数千个分区以及每秒百万级的消息量。

2、基本概念

2.1 Messages And Batches

Kafka 的基本数据单元被称为 message(消息),为减小网络开销,提升效率,多个消息会被放入同一批次 (Batch) 中后再写入。github

2.2 Topics And Partitions

Kafka 的消息经过 Topics(主题) 进行分类,一个主题能够被分为若干个 Partitions(分区),一个分区就是一个提交日志 (commit log)。消息以追加的方式写入分区,而后以先入先出的顺序读取。Kafka 经过分区来实现数据的冗余和伸缩性,分区能够分布在不一样的服务器上,这意味着一个 Topic 能够横跨多个服务器,以提供比单个服务器更强大的性能。api

因为一个 Topic 包含多个分区,所以没法在整个 Topic 范围内保证消息的顺序性,但能够保证消息在单个分区内的顺序性。服务器

2.3 Producers And Consumers

1. 生产者

生产者负责建立消息。通常状况下,生产者在把消息均衡地分布到在主题的全部分区上,而并不关心消息会被写到哪一个分区。若是咱们想要把消息写到指定的分区,能够经过自定义分区器来实现。网络

2. 消费者

消费者是消费者群组的一部分,消费者负责消费消息。消费者能够订阅一个或者多个主题,并按照消息生成的顺序来读取它们。消费者经过检查消息的偏移量 (offset) 来区分读取过的消息。偏移量是一个不断递增的数值,在建立消息时,Kafka 会把它添加到其中,在给定的分区里,每一个消息的偏移量都是惟一的。消费者把每一个分区最后读取的偏移量保存在 Zookeeper 或 Kafka 上,若是消费者关闭或者重启,它还能够从新获取该偏移量,以保证读取状态不会丢失。分布式

一个分区只能被同一个消费者群组里面的一个消费者读取,但能够被不一样消费者群组中所组成的多个消费者共同读取。多个消费者群组中消费者共同读取同一个主题时,彼此之间互不影响。性能

2.4 Brokers And Clusters

一个独立的 Kafka 服务器被称为 Broker。Broker 接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。Broker 为消费者提供服务,对读取分区的请求作出响应,返回已经提交到磁盘的消息。大数据

Broker 是集群 (Cluster) 的组成部分。每个集群都会选举出一个 Broker 做为集群控制器 (Controller),集群控制器负责管理工做,包括将分区分配给 Broker 和监控 Broker。日志

在集群中,一个分区 (Partition) 从属一个 Broker,该 Broker 被称为分区的首领 (Leader)。一个分区能够分配给多个 Brokers,这个时候会发生分区复制。这种复制机制为分区提供了消息冗余,若是有一个 Broker 失效,其余 Broker 能够接管领导权。队列

参考资料

Neha Narkhede, Gwen Shapira ,Todd Palino(著) , 薛命灯 (译) . Kafka 权威指南 . 人民邮电出版社 . 2017-12-26

更多大数据系列文章能够参见 GitHub 开源项目大数据入门指南

相关文章
相关标签/搜索