zoukankan      html  css  js  c++  java
  • kafka学习(三)kafka基础理论

    一、消费模式的选择

      kafka常见的消费模式有两种:

    • 单播模式:一条消息只能被某一个消费者消费的模式。
    • 多播模式:一条消息能被多个消费者组中的消费者消费的模式。

      PS:记录消费偏移量是以为单位进行的,增删消费者不影响。【会在下面进行说明】

    单播模式

      定义:一条消息只能被某一个消费者消费的模式,类似队列的模式。

      实现方式:让所有消费者在同一个消费组里即可

    多播模式

      定义:一条消息能被多个消费者消费的模式,类似发布订阅模式。

      实现方式:让消费者属于不同的消费组即可

    二、查看消费组的消费偏移量

      消费偏移量:指的是哪些消息已经被消费了,做一个记录。

    ##1、创建一个消费者组,监听'zhTest'这一Topic
    kafka-console-consumer.bat --bootstrap-server localhost:9092 --consumer-property group.id=zhTestGroup1 --topic zhTest

    ##2、查看消费者组列表
    kafka-consumer-groups.bat --bootstrap-server localhost:9092 --list

    ##3、查看消费者组'zhTestGroup1'的消费偏移量
    kafka-consumer-groups.bat --bootstrap-server localhost:9092 --describe --group zhTestGroup1

      参数解析如下:

    • current-offset:当前消费组的已消费偏移量
    • log-end-offset:主题对应分区消息的结束偏移量
    • lag:当前消费组未消费的消息数

    三、Topic【主题】和Log【消息数据日志】

      可以理解Topic是一个类别的名称,同类消息发送到同一个Topic下面。对于每一个Topic,下面可以有多个分区(Partition)日志文件:

    Partition【分区】

      定义:一个有序的消息序列

      作用:分片储存数据。不同的partition可以位于不同的机器上,方便数据横向扩展,提高吞吐量和并行度

      PS:分区对于组内消费者是单播的,对于不同组可以实现多播

      PS:当发消息时不指定分区,kafka选分区的原理:对Key进行hash运算得到的散列值再对分区进行取模运算

    Offset【偏移量】

      定义:每个partition中消息的唯一编号。

      作用:用来唯一标示某个分区中的消息。

      PS:一个partition中的message的offset都是唯一的,但是不同的partition中的message的offset可能是相同的

      PS:kafka一般不会删除消息,不管这些消息有没有被消费。只会根据配置的日志保留时间(log.retention.hours)来决定消息多久被删除,默认保留7天的日志消息。

      PS:kafka的性能与保留的消息数据量大小没有关系,因此保存大量的数据消息日志信息不会有什么影响。

      PS:每个consumer是基于自己在commit log【如数据目录下的00000000000000000000.log文件】中的消费进度(offset)来进行工作的。在kafka中,消费offset由consumer自己来维护。【这意味kafka中的consumer对集群的影响是非常小的,添加一个或者减少一个consumer,对于集群或者其他consumer 来说,都是没有影响的,因为每个consumer维护各自的消费offset。】

    四、查看Topic信息

      当我们要了解kafka中Topic的分区、副本、或者是broker存活情况时,就需要用到如下命令去查看了:

    ##查看zookeeper【localhost:2181】下的,topic为'zhTest'的信息
    ##PS:因为topic的元数据是保存在ZK上的,所以查看信息就去ZK上面去查 kafka
    -topics.bat --describe --zookeeper localhost:2181 --topic zhTest

      以下是输出内容的解释,第一行是所有分区的概要信息之后的每一行表示每一个partition的信息

    • Leader:节点负责给定partition的所有读写请求。【PS:图中的0表示的是leader节点为broker.id为0的机器
    • Replicas:表示某个partition在哪几个broker上存在备份。不管这个节点是不是"leader",甚至这个节点挂了,也会列出。
    • Isr:是replicas的一个子集,它只列出当前还存活着的,并且已同步备份了该partition的节点
  • 相关阅读:
    MYSQL最大连接数设置
    判断闰年
    Hanoi塔问题(递归)
    字符串替换(find函数和replace函数)
    全排列问题(next_permutation函数)
    南阳理工 oj 题目739 笨蛋难题四
    (c++实现)南阳理工 题目325 zb的生日
    (c++实现)南洋理工 oj 267 郁闷的C小加(二)
    (c++实现)南阳理工acm 题目117 求逆序数
    (c++实现) 南洋理工acm 题目2 括号配对问题
  • 原文地址:https://www.cnblogs.com/riches/p/15478106.html
Copyright © 2011-2022 走看看