kafka是一个分布式的基于发布/订阅模式的消息队列,只要应用于大数据实时处理领域
消息队列的两种模式:
点对点模式(一对一 消费者主动拉取数据,消息收到后消息清除)
发布/订阅的模式(一对多 消费者消费数据后不会清除数据)
kafka基础架构(去中心化)
producer:消息生产者,就是向kafka broker发消息的客户端
consumer:消息消费者,向kafka broker区消息的客户端
consumer Group:消费者组,由多个consumer组成 消费组内的消费者负责消费不同分区内的数据,一个分区只能由一个组内消费者消费,消费者组之间互不干扰,所以有的消费者都属于同一个消费者组,消费者组是逻辑上的一个订阅者
broker:一台kafka服务器就是一个broker,一个集群由多个broker组成,一个broker可以包含多个topic
topic:可以理解为一个队列 生产者和消费者面向的都是一个topic
partition:为实现扩展性,一个非常大的topic可以分不到不同的broker上去,一个topic可以分为多个partition,每一个partition是一个有序队列
replica:副本 为了保证集群中某个结点发生故障时,该节点上的partition数据不丢失,而且kafka能够继续工作,kafka提供了副本机制,一个topic的每个分区都有若干副本,一个leader一个follower
leader:生产者发送数据的对象,以及消费者消费数据的对象都是leader
follower:实时从leader中同步数据,保持和leader数据的同步,leader发生故障时 某个follower会成为新的leader
在配置kafka参数时需要修改的是:
broker的全局唯一编号,不能重复 broker.id=0 #删除topic的功能 delete.topic.enable=true #配置kafka运行日志的存放路径 log.dirs=/usr/local/soft/kafka-xx/log $连接zk的地址 zookeeper.connect=master:2181,node1:2181,node2:2181
将组件分发到node1和node2上 注意要修改broker编号
kafka启动命令:
kafka-server-start.sh -daemon /usr/local/soft/kafka_2.11/config/server.properties
查看当前kafka中所有的topic 命令:
kafka-topics.sh --zookeeper master:2181,node1:2181,node2:2181 --list
创建topic的命令:
kafka-topics.sh --zookeeper master:2181,node1:2181,node2:2181 --replication-factor 1 --partitions 1 --topic first --create
注意:
--topic 定义topic的名称
--replication-factor 定义副本的个数
--partitions 定义分区数
删除topic的命令:
kafka-topics.sh --zookeeper master:2181,node1:2181,node2:2181 --topic first --delete
创建生产者生产消息的命令:
kafka-console-producer.sh --broker-list master:9092,node1:9092,node2:9092 --topic 名称
创建消费者的命令:
kafka-console-consumer.sh --broker-list --zookeeper master:9092,node1:9092,node2:9092 --topic 名称
查看某个某刻topic的详情:
kafka-topics.sh --zookeeper master:2180 --describe --topic 名称
修改分区数:
kafka-topics.sh --zookeeper master:2181 --alter --topic 名称 --partition 2
kafka工作流程及文件存储机制
kafka中消息是以topic进行分类的,生产者生产消息,消费者消费消息,都是面向topic
topic是逻辑上的逻辑,而partition是物理上的概念,每个partition对应一个log文件,该log文件中存储的就是producer生产的数据 Producer 生产的数据会被不断追加到该log 文件末端,且每条数据都有自己的 offset。消费者组中的每个消费者,都会实时记录自己消费到了哪个 offset,以便出错恢复时,从上次的位置继续消费
kafka文件的存储机制:
一个topic分为两个partition,一个partition分为多个segment,一个segment对应两个文件
由于生产者生产的消息会不断追加到 log 文件末尾,为防止 log 文件过大导致数据定位效率低下,Kafka 采取了 分片和 索引机制,将每个 partition 分为多个 segment。每个 segment对应两个文件——“.index”文件和“.log”文件。这些文件位于一个文件夹下,该文件夹的命
名规则为:topic 名称+分区序号。例如,first 这个 topic 有三个分区,则其对应的文件夹为 first-0,first-1,first-2。
“.index”文件存储大量的索引信息,“.log”文件存储大量的数据,索引文件中的元数据指向对应数据文件中 message 的物理偏移地址
标签:topic,--,partition,broker,kafka,学习,2181,数据 From: https://www.cnblogs.com/lkd0910/p/16934670.html