• kafka集群及副本的概念


    kafka集群及副本的概念

    1.搭建kafka集群,3个broker

    • 创建三个server.properties文件
    # 0 1 2  修改下面这三个地方
    broker.id = x  # broker id
    listeners=PLAINTEXT://host:post  # kafka 端口主机配置
    log.dir=xxxxx  # kafka日志存放位置
    
    • 1
    • 2
    • 3
    • 4
    • 通过三个命令来启动三台broker
    ./kafka-server-start.sh -daemon ../config/server.properties
    ./kafka-server-start.sh -daemon ../config/server1.properties
    ./kafka-server-start.sh -daemon ../config/server2.properties
    
    • 1
    • 2
    • 3
    • jps命令查看即可看见开了三台kafka

    在这里插入图片描述

    2.副本的概念

    • 副本是对分区的备份。在集群中,不同的副本会被部署在不同的broker上。下⾯例⼦:创建1个主题,2个分区、3个副本。(有多少个集群创建多少个副本)
    # 在创建主题的时候除了指明了主题的分区数目之外,还指明了副本数
    ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 2 --topic my-replicated-topic
    
    • 1
    • 2
    • 创建后的效果

    搭建三个broker的kafka,然后给每一个broker创建两个分区,然后给每个分区创建三个副本,不同的副本分布在不同的broker上

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kSN0kTIO-1656256296761)(C:/Users/zhengbo/%E6%88%91%E7%9A%84%E5%AD%A6%E4%B9%A0/Typora%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/%E4%B8%AD%E9%97%B4%E4%BB%B6/Kafka/image-20220617234041666.png)]

    • 副本是为了主题中的分区创建多个副本,多个副本在kafka集群的多个broker中,会有一个副本作为leader,其他都是follower
    • 生产者生产消息给leader,消费者消费消息也是从leader进行消费
    • leader:kafka的读和写操作都发生在leader上,leader负责把数据同步给follower,当leader挂了,经过主从选举,从多个follower中选举产生一个新的leader
    • follower:接收leader同步的数据
    • isr:可以同步和已经同步的节点会被存放到isr集合当中,有一个细节就是说,如果isr中的节点性能较差,会被踢出isr集合,选leader会从isr当中去选

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3RF2D4OF-1656256296762)(C:/Users/zhengbo/%E6%88%91%E7%9A%84%E5%AD%A6%E4%B9%A0/Typora%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/%E4%B8%AD%E9%97%B4%E4%BB%B6/Kafka/image-20220617214820156.png)]

    3.borker,主题,分区,副本之间的联系

    • 集群当中有多个broker的时候,创建主题的时候可以明确指明主题有多个分区(把消息拆分到不同的分区当中),同时可以为每一个分区创建多个副本,不同的副本分配到不同的broker当中(最好的就是有多少个broker就创建多少个副本,这样的话例如上面的例子,我们有三个broker,同时我们创建三个副本,那么刚好给每一个broker分配一个副本)
    • 发配副本,在众多的副本当中,有一个leader,当leader挂了之后,在其他副本当中选出一个新的leader

    4.kafka集群的消费问题

    • kafka集群消息的发送
    ./kafka-console-producer.sh --broker-list
    localhost:9092,localhost:9093,localhost:9094 --topic my-replicated-topic
    
    • 1
    • 2
    • kafka集群消息的消费
    ./kafka-console-consumer.sh --bootstrap-server
    localhost:9092,localhost:9093,localhost:9094 --from-beginning --topic my-replicated-topic
    
    • 1
    • 2
    • 带上消费组进行消费
    ./kafka-console-consumer.sh --bootstrap-server
    localhost:9092,localhost:9093,localhost:9094 --from-beginning --consumer-property group.id=testGroup1 --topic my-replicated-topic
    
    • 1
    • 2

    • 一个partition最多只能被一个消费组的中的一个消费者进行消费(单播消费),可以保证消费的顺序,因为消息的发送是有顺序的,所以为了让消费也变得有顺序,所以就采用了单播消费机制,来保证消费的顺序性.
    • 消费组中消费者的数量不能比topic中partition中的数量多,否者多出来的消费者消费不到消息.
    • 如果消费者挂了,那么就会触发rebalance机制,会让其他消费者来消费该分区.
  • 相关阅读:
    专属程序员的浪漫七夕
    【EMC专题】电快速瞬变脉冲群抗扰度测试
    【如何学习CAN总线测试】——CAN数据链路层测试
    SpringBoot+Vue项目社区团购系统
    用anacnda创建虚拟环境用不用指定python版本
    练习26-30:多表关联查询,子查询
    静态资源映射
    Python操作lxml库(基础篇)
    Visio——对齐方法的规则
    计算机系统结构期末复习
  • 原文地址:https://blog.csdn.net/weixin_45809829/article/details/125475939