kafka 简介

作者: 博弈史密斯 | 来源:发表于2018-05-21 16:31 被阅读0次

    什么是Kafka?

    KafKa是一款由 Apache 软件基金会开源,使用 Scala 编写的一个 高吞吐 分布式
    发布 - 订阅 消息系统 和一个强大的队列,可以处理大量的数据,并使您能够将消息从一个端点传递到另一个端点。

    Kafka适合 离线 和 在线 消息消费。 Kafka消息保留在磁盘上,并在群集内复制以防止数据丢失Kafka构建在ZooKeeper同步服务之上。 它与Apache Spark Streaming 非常好地集成,用于实时流式数据分析。

    概念介绍

    • Broker
      Kafka集群包含一个或多个服务器,这种服务器被称为 broker

    • Producer
      负责发布消息到 Kafka broker,在发送消息之前,会对消息进行分类,即Topic。

    • Topic
      每条发布到 Kafka 集群的消息都有一个主题,这个主题被称为Topic。通过对消息指定主题可以将消息分类(物理上不同 Topic 的消息分开存储,逻辑上一个 Topic 的消息虽然保存于一个或多个broker 上 但用户只需指定消息的 Topic 即可生产或消费数据而不必关心数据存于何处)

    • Partition
      Partition是物理上的概念,每个Topic包含一个或多个Partition

    • Consumer
      消息消费者,向Kafka broker读取消息的客户端。通过对消息指定主题可以将消息分类,消费者可以只关注自己需要的Topic中的消息

    • Consumer Group
      每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)

    消息传输流程

    上图展示了两个 producer 发送了分类为 topic1 的消息,另外一个 producer 发送了 topic2 的消息。
    从上图中就可以看出同一个 Topic 下的消费者和生产者的数量并不是对应的。

    kafka 服务器消息存储策略

    谈到kafka的存储,就不得不提到分区,即partitions,创建一个topic时,同时可以指定分区数目,分区数越多,其吞吐量也越大,但是需要的资源也越多,同时也会导致更高的不可用性,kafka在接收到生产者发送的消息之后,会根据均衡策略将消息存储到不同的分区中。

    在每个分区中,消息以顺序存储,最晚接收的的消息会最后被消费。

    生产者在向kafka集群发送消息的时候,可以通过指定分区来发送到指定的分区中。
    也可以通过指定均衡策略来将消息发送到不同的分区中。
    如果不指定,就会采用默认的随机均衡策略,将消息随机的存储到不同的分区中。

    与 consumer 的交互


    在消费者消费消息时,kafka使用 offset 来记录当前消费的位置。

    在kafka的设计中,可以有多个不同的group来同时消费同一个topic下的消息,如图,我们有两个不同的group同时消费,他们的的消费的记录位置offset各不项目,不互相干扰。

    对于一个group而言,消费者的数量不应该多余分区的数量,因为在一个group中,每个分区至多只能绑定到一个消费者上,即一个消费者可以消费多个分区,一个分区只能给一个消费者消费

    因此,若一个group中的消费者数量大于分区数量的话,多余的消费者将不会收到任何消息。

    相关文章

      网友评论

        本文标题:kafka 简介

        本文链接:https://www.haomeiwen.com/subject/imtqjftx.html