• 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机制,会让其他消费者来消费该分区.
  • 相关阅读:
    C语言程序设计(入门)
    看一遍学会Vue结合axios使用mockjs
    gitlab创建一个项目的流程
    【学习笔记】CF1651F Tower Defense
    报错:“ModuleNotFoundError: No module named ‘flask._compat‘”的解决
    Docker容器实现MySQL主从复制
    java CharArrayReader类、CharArrayWriter类
    javaScript 错误处理与调试
    外贸建站选择用简站wordrpess模板的优势
    建筑结构抗震分析之施加地震波的方法与理论机理
  • 原文地址:https://blog.csdn.net/weixin_45809829/article/details/125475939