• kafka集群搭建


    一、kafka优点

    • 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。
    • 可扩展性:kafka集群支持热扩展
    • 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
    • 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
    • 高并发:支持数千个客户端同时读写

    二、kafka的名词解释

    • Broker:Kafka节点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。
    • Topic:一类消息,消息存放的目录即主题,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能够同时负责多个topic的分发。
    • massage: Kafka中最基本的传递对象。
    • Partition:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列。
    • Segment:partition物理上由多个segment组成,每个Segment存着message信息。
    • Producer : 生产者,生产message发送到topic。
    • Consumer : 消费者,订阅topic并消费message, consumer作为一个线程来消费。
    • Consumer Group:消费者组,一个Consumer Group包含多个consumer。
    • Offset:偏移量,理解为消息partition中的索引即可

    三、kafka存储策略

    • kafka以topic来进行消息管理,每个topic包含多个partition,每个partition对应一个逻辑log,有多个segment组成。
    • 每个segment中存储多条消息(见下图),消息id由其逻辑位置决定,即从消息id可直接定位到消息的存储位置,避免id到位置的额外映射。
    • 每个part在内存中对应一个index,记录每个segment中的第一条消息偏移。
    • 发布者发到某个topic的消息会被均匀的分布到多个partition上(或根据用户指定的路由规则进行分布),broker收到发布消息往对应partition的最后一个segment上添加该消息,当某个segment上的消息条数达到配置值或消息发布时间超过阈值时,segment上的消息会被flush到磁盘,只有flush到磁盘上的消息订阅者才能订阅到,segment达到一定的大小后将不会再往该segment写数据,broker会创建新的segment。

    四、kafka集群搭建

    1. zookeeper集群搭建
    2. kafak下载
    3. 解压、复制
    tar -zvxf kafka_2.11-2.3.0.tgz
    mv kafka_2.11-2.3.0/ kafka1/
    cp -r kafka1/   kafka2/
    cp -r kafka1/   kafka3/
    

    4.kakfa配置参数详解

    参数 说明
    delete.topic.enable=true 是否允许删除topic,默认false不能手动删除
    broker.id=0 当前机器在集群中的唯一标识,和zookeeper的myid性质一样
    listeners = PLAINTEXT://192.168.100.151:9092 当前kafka服务侦听的地址和端口,端口默认是9092
    num.network.threads=3 这个是borker进行网络处理的线程数
    num.io.threads=8 这个是borker进行I/O处理的线程数
    socket.send.buffer.bytes=102400 发送缓冲区buffer大小,数据不是一下子就发送的,先会存储到缓冲区到达一定的大小后在发送,能提高性能
    socket.receive.buffer.bytes=102400 kafka接收缓冲区大小,当数据到达一定大小后在序列化到磁盘
    socket.request.max.bytes=104857600 这个参数是向kafka请求消息或者向kafka发送消息的请请求的最大数,这个值不能超过java的堆栈大小
    log.dirs= 消息日志存放的路径
    num.partitions=1 默认的分区数,一个topic默认1个分区数
    num.recovery.threads.per.data.dir=1 每个数据目录用来日志恢复的线程数目
    log.retention.hours=168 默认消息的最大持久化时间,168小时,7天
    log.segment.bytes=1073741824 这个参数是:因为kafka的消息是以追加的形式落地到文件,当超过这个值的时候,kafka会新起一个文件
    log.retention.check.interval.ms=300000 每隔300000毫秒去检查上面配置的log失效时间
    log.cleaner.enable=false 是否启用log压缩,一般不用启用,启用的话可以提高性能
    zookeeper.connect=node1:2181,node2:2181,node3:2181 设置zookeeper的连接端口
    broker.id=0 当前机器在集群中的唯一标识,和zookeeper的myid性质一样
    zookeeper.connection.timeout.ms=6000 设置zookeeper的连接超时时间

    5.修改kafka的配置文件

    节点1
    broker.id=0
    listeners=PLAINTEXT://192.168.100.151:9092
    log.dirs=/yangk/kafka/kafka1/logs
    zookeeper.connect=192.168.100.151:2181,192.168.100.151:2182,192.168.100.151:2183
    
    节点2
    broker.id=1
    listeners=PLAINTEXT://192.168.100.151:9093
    log.dirs=/yangk/kafka/kafka2/logs
    zookeeper.connect=192.168.100.151:2181,192.168.100.151:2182,192.168.100.151:2183
    
    节点3
    broker.id=2
    listeners=PLAINTEXT://192.168.100.151:9094
    log.dirs=/yangk/kafka/kafka3/logs
    zookeeper.connect=192.168.100.151:2181,192.168.100.151:2182,192.168.100.151:2183
    

    6.启动kafka
    先启动zookeeper集群。然后到每个kafka的目录下启动kafka

    ./bin/kafka-server-start.sh -daemon config/server.properties 
    

  • 相关阅读:
    Objective-C语法之NSDictionary和NSMutableDictionary
    Objective-C语法之指针型参数
    Objective-C语法之nonatomic和atomic之间的区别
    Objective-C语法之NSSortDescriptor
    Objective-C语法之NSPredicate的使用
    SimPholders2 模拟器 App 文件路径查看工具
    清除 Xcode 项目缓存
    Xcode 6 免证书真机调试
    [转]iOS证书(.p12)和描述文件(.mobileprovision)申请
    WWDC 2015大会到来了
  • 原文地址:https://www.cnblogs.com/yangk1996/p/12663569.html
Copyright © 2020-2023  润新知