Kafka(一)——架构和基础操作

一、Kafka架构

1、消息队列(Message Queue)

1.1、点对点模式

一对一,消费者主动拉取数据,消息收到后消息清除

生产者将消息发送到Queue中,然后消费者从queue里拉取数据,一条消息被消费了之后,queue就删除了该消息。

虽然queue支持存在多个消费者,但是一条消息只有一个消费者能消费到

1.2、发布/订阅模式

一对多,消费者消费数据之后不会清除数据

生产者将消息发布到topic中,同时有多个消费者消费该消息,topic里面的消息会被所有消费者消费

Kafka基于发布/订阅模式

2、基础架构

  1. broker:一个Kafka服务器就是一个broker,一个broker可以容纳多个topic
  2. topic:一个消息队列,生产者将消息发布到topic里面,消费者从topic订阅
  3. producer:生产者。
  4. consumer:消费者
  5. consumer group(CG):消费者组,一个CG由多个Consumer组成,消费者组内的每个消费者负责消费不同分区的数据,一个分区只能由一个消费者消费。消费者组之间互不干扰,一个消费者就是一个订阅者
  6. partition:一个非常大的topic可以分不到多个broker上,一个topic可以分为多个partition
  7. replica:副本,为了保障数据可靠性,当某个节点发生故障时,该节点上的partition数据不丢失,且Kafka仍然能够继续工作,Kafka提供了副本机制,一个topic的每个partition都有若干个副本,一个leader和若干个follower
  8. leader:每个分区多个副本的"主",所有的操作都是对于leader
  9. follower:从副本,实时从leader中同步数据,保持和leader数据的同步,leader发生故障时,某个follower就会成为新的leader

二、Kafka操作

1、命令行基本操作

  1. 查看当前broker中所有topic

    kafka-topics.sh --zookeeper hadoop102:2181/kafka --list
    
  2. 创建topic

    kafka-topics.sh --zookeeper hadoop102:2181/kafka \
    --create --replication-factor 3 \
    --partitions 1 \
    --topic first
    
  3. 删除topic

    kafka-topics.sh --zookeeper hadoop102:2181/kafka \
    --delete --topic first
    
    注意:
    需要server.properties中设置delete.topic.enable=true否则只是标记删除。
    
  4. 发送消息

    kafka-console-producer.sh \
    --broker-list hadoop102:9092 --topic first
    >hello world
    
  5. 消费消息

    kafka-console-consumer.sh \
    --bootstrap-server hadoop102:9092 --from-beginning --topic first
    
    --from-beginnein:全部读取
    
  6. 查看某个topic的详情

    kafka-topics.sh --zookeeper hadoop102:2181/kafka \
    --describe --topic first
    
  7. 修改分区数

    kafka-topics.sh --zookeeper hadoop102:2181/kafka --alter --topic first --partitions 3
    

2、集群启动停止脚本

2.1、创建脚本:

#! /bin/bash

case $1 in
"start"){
        for i in hadoop102 hadoop103 hadoop104
        do
                echo "=============$i==========="
                ssh $i 'source /etc/profile && $KAFKA_HOME/bin/kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties'
        echo $?
        done
};;
"stop"){
         for i in hadoop102 hadoop103 hadoop104
        do
                echo "=============$i==========="
                ssh $i 'source /etc/profile && $KAFKA_HOME/bin/kafka-server-stop.sh'
        echo $?
        done
};;
esac

2.2、全局有效

sudo ln xxx.sh /usr/local/bin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值