美文网首页
Kafka笔记

Kafka笔记

作者: Y了个J | 来源:发表于2022-02-18 00:12 被阅读0次

    docker安装kafka

    docker pull wurstmeister/zookeeper
    docker pull wurstmeister/kafka
    
    #单机方式
    docker run -d --name zookeeper \
    -p 2181:2181 \
    --restart=always \
    -t wurstmeister/zookeeper
    
    #单机方式
    docker run -d --name kafka \
    -p 9092:9092 \
    -e KAFKA_BROKER_ID=0 \
    -e KAFKA_ZOOKEEPER_CONNECT=127.0.0.1:2181/kafka \
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://127.0.0.1:9092 \
    -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
    -t wurstmeister/kafka
    
    #进入容器
    docker exec -it kafka /bin/bash
    cd opt/bin
    
    

    consumer发生变化进行reblance。
    删除策略,分别是基于消息的消费时间以及partition文件的大小。
    我们可以通过配置文件$KAFKA_HOME/config/server.properties,让Kafka删除一周前的数据,也可在Partition文件超过1GB时删除旧数据。

    # The minimum age of a log file to be eligible for deletion
    log.retention.hours=168
    # The maximum size of a log segment file. When this size is reached a new log segment will be created.
    log.segment.bytes=1073741824
    # The interval at which log segments are checked to see if they can be deleted according to the retention policies
    log.retention.check.interval.ms=300000
    # If log.cleaner.enable=true is set the cleaner will be enabled and individual logs can then be marked for log compaction.
    log.cleaner.enable=false
    

    partition会被分布在各个Server节点上,同时它们中间又有一个leader,它会处理所有的读写请求,其他followers会复制leader上的数据信息,一旦当leader因为某些故障而无法提供服务后,就会有一个follower被推举出来成为新的leader来处理这些请求。

    稀疏索引
    索引文件.index,日志文件.log

    分区又被划分成了多个 LogSegment,这是为了防止 Log 日志过大,Kafka 又引入了日志分段(LogSegment)的概念,将 Log 切分为多个 LogSegement,相当于一个巨型文件被平均分割为一些相对较小的文件,这样也便于消息的查找、维护和清理。这样在做历史数据清理的时候,直接删除旧的 LogSegement 文件就可以了。

    kafka的producer是线程安全的
    kafka的consumer不是线程安全的

    ISR

    零拷贝

    1

    https://blog.csdn.net/yangshengwei230612/article/details/106504146/

    相关文章

      网友评论

          本文标题:Kafka笔记

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