kafka
2.4.6.3.1 概论
一个典型的Kafka体系结构包括若干Producer、若干Broker、若干Consumer,以及一个ZooKeeper集群,如下图所示。其中ZooKeeper是Kafka用来负责集群元数据的管理、控制器的选举等操作的。Producer将消息发送到Broker,Broker负责将收到的消息存储到磁盘中,而Consumer负责从Broker订阅并消费信息。
2.4.6.3.2 kafka的一些核心概念
2.4.6.3.2.1 Producer
生产者,也就是发送消息的一方。生产者负责创建消息,然后将其投递到Kafka中。
2.4.6.3.2.2 Consumer
消费者,也就是接收消息的一方。消费者连接到Kafka上并接受消息,进而进行相应的业务逻辑处理
2.4.6.3.2.3 Broker
服务代理节点,中间的kafka cluster,存储消息,。对于Kafka而言,Broker可以简单的看做一个独立的Kafka服务节点或Kafka服务实例。大多数情况下也可以将Broker看做一台Kafka服务器,前提是这台服务器上只部署一个Kafka实例。
2.4.6.3.2.4 Topic
Kafka中的消息以主题(Topic)为单位进行归类,生产者负责将消息发送到特定的主题(发送到Kafka集群中的每一条消息都要指定一个主题),而消费者负责订阅主题进行消费。主题是逻辑上的概念,他可以设置细分为多个分区(partition)。
2.4.6.3.2.5 Partition
Partition 是物理上的概念, 每个Topics划分为一个或者多个Partition,并且Partition中的每条消息都被标记了一个sequential id,也就是offset。offset是消息在分区中的唯一标识,Kafka通过它保证分区内的顺序性,不过offset是不跨分区的,也就是说,Kafka保证的是分区有序而不是主题有序。
2.4.6.3.3 Kafka配置
(1) 需要注意的配置如下,其余配置都设置为默认值。
#broker的编号,如果集群中有多个broker,则每个broker的编号需要设置为不同的 #broker的值需要大于或等于0 broker.id=90 #broker对外提供的服务入口地址,默认端口为9092 listeners=PLAINTEXT://master:9092 #Kafka所需的Zookeeper集群地址 zookeeper.connect=localhost:2181 |
(2) 需要用到的命令
需要在Kafka的安装目录下运行。
#创建主题 bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic topic-name #查看主题 bin/kafka-topics.sh --list --zookeeper localhost:2181 #查看主题详情 bin/kafka-topics.sh --describe --zookeeper localhost:2181 --topic topic-name #删除主题(测试未通过) bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic topic-name #创建消费者 bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic topic-name --from-beginning |
(3) 遇到问题
如果只开了一个borker,需要将此属性设置为1。