zoukankan      html  css  js  c++  java
  • Kafka常用命令和核心概念

    1.命令

    启动:

    zookeeper:
    bin/zkServer.sh start
    kafka:
    bin/kafka-server-start.sh -daemon config/server.properties
    

    查看topic:

    bin/kafka-topics.sh --bootstrap-server localhost:9092 --list
    

    查看消费者组:

    bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list
    

    创建topic:

    bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --replication-factor 1 --partitions 1 --topic xxx
    

    启动生产者:

    bin/kafka-console-producer.sh --broker-list localhost:9092 --topic xxx
    

    启动消费者:

    bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic xxx --from-beginning
    

    2.核心概念

    1.Broker

    集群中的一个实例,多个broker中有一个是leader,其他都是follower

    2.Consumer Group

    同一个group的consumer可以并行消费同一个topic的消息,但是不会重复消费(相当于多个线程去消费,提高了消费速度)

    如果同一个topic需要被多次消费,可以设多个consumer group来实现,分别消费互不影响

    3.Topic

    特定主题,区别不同消息的类型,消息以主题为单位进行归类

    4.Partition

    Kafka采用分区方式让消费者并行消费,提高吞吐能力,每个分区有多个副本保证高可用

    一个分区只能被同组的一个consumer消费,但是一个consumer可以消费多个分区

    消费效率最高的情况是分区数和consumer数量相同,每个consumer消费一个分区

    当consumer数量大于分区数的时候,就会有consumer闲置

    5.Replication

    副本存在leader和follower之分,活跃的称为leader,其他的是follower

    每个分区都有多个副本,只有一个是leader,其他是follower

    消息进来先存入leader,然后从leader复制到follower,只有复制全部完成,consumer才可以消费此条消息,消费也是从leader读取

    由于leader做了大量工作,如果不同分区的leader replication在集群的broker上分布不均匀,就会造成负载不均衡

    Kafka通过轮询算法保证leader均匀分布

    副本均匀分布在broker上,同一个分区的副本不会在同一个broker上

    同一个分区的副本数不能多于broker数量,没有意义

    6.分区平衡

    AR:assigned replication 已分配副本,每个分区都有自己的AR列表,里面存储这个分区最初分配的所有副本,AR列表不会变化,除非增加分区

    PR:优先副本,AR列表中的第一个副本就是优先副本,而且永远是优先副本,最初的时候优先副本和leader副本是同一个

    ISR:in sync replication 同步副本,每个分区有自己的ISR列表,会根据同步情况动态变化

    最初ISR和AR列表一致,如果某个节点挂掉,或者某个节点的follower副本落后leader副本太多,就会被从ISR列表移除,此时ISR和AR就不再一致

    同步滞后过多的副本组成OSR Out-of-Sync Replicas

    分区平衡操作其实就是让leader副本和优先副本保持一致的操作

    7.分区读写

    每个分区都是有序不可变的

    Kafka只能保证分区的消费顺序,不能保证topic消费顺序

    consumer可以重置offset到之前的位置,可以以任何顺序消费,不一定线性后移

    8.Producer

    消息生产者,向broker发送消息

    9.Consumer

    消费者,从broker拉取消息

  • 相关阅读:
    React Native从入门到放弃之坑总结
    React Native从入门到放弃之环境搭建
    flex弹性布局语法介绍及使用
    JavaScript ES6中export及export default的区别
    解决webstorm本地IP访问页面出错的问题
    UEFI+GPT与BIOS+MBR各自有什么优缺点?
    解决U盘拷贝时提示文件过大问题(不能拷贝超过4个g的文件)
    U盘安装原版Win7或Win8教程
    安装win8/win10提示无法在驱动器0分区上安装windows解决方法
    idea 编译报错 未结束的字符串字面值,非法的类型开始
  • 原文地址:https://www.cnblogs.com/jordan95225/p/13825329.html
Copyright © 2011-2022 走看看