初识Kafka

一、Kafka简介

Kafka是一个分布式的消息队列系统(Message Queue)。

官网:https://kafka.apache.org/

 

kafka集群有多个Broker服务器组成,每个类型的消息被定义为topic。

同一topic内部的消息按照一定的key和算法被分区(partition)存储在不同的Broker上。

消息生产者producer和消费者consumer可以在多个Broker上生产/消费topic

 

概念理解:

Ø Topics and Logs:

Topic即为每条发布到Kafka集群的消息都有一个类别topic在Kafka中可以由多个消费者订阅、消费。

每个topic包含一个或多个partition(分区),partition数量可以在创建topic时指定,每个分区日志中记录了该分区的数据以及索引信息。如下图:

 

Kafka只保证一个分区内的消息有序,不能保证一个主题的不同分区之间的消息有序。如果你想要保证所有的消息都绝对有序可以只为一个主题分配一个分区。

分区会给每个消息记录分配一个顺序ID号(偏移量) 能够唯一地标识该分区中的每个记录。Kafka集群保留所有发布的记录,不管这个记录有没有被消费过,Kafka提供相应策略通过配置从而对旧数据处理。

 

实际上,每个消费者唯一保存的元数据信息就是消费者当前消费日志的位移位置。位移位置是由消费者控制,即、消费者可以通过修改偏移量读取任何位置的数据。

 

Ø Distribution -- 分布式

Ø Producers -- 生产者

指定topic来发送消息到Kafka Broker

 

Ø Consumers -- 消费者

根据topic消费相应的消息

 

 


二、Kafka集群部署

集群规划

Zookeeper集群共三台服务器,分别为:node1node2node3。

Kafka集群共三台服务器,分别为:node1node2node3。

 

1、Zookeeper集群准备

kafka是一个分布式消息队列,需要依赖ZooKeeper,请先安装好zk集群。

Zookeeper集群安装步骤略。

 

2、安装Kafka

下载压缩包(官网地址:http://kafka.apache.org/downloads.html

 

解压:

tar zxvf kafka_2.10-0.9.0.1.tgz -C /opt/

mv kafka_2.10-0.9.0.1/ kafka

 

修改配置文件:config/server.properties

 

 

 

核心配置参数说明:

broker.id: broker集群中唯一标识id,0、1、2、3依次增长(broker即Kafka集群中的一台服务器)

注:

当前Kafka集群共三台节点,分别为:node1node2node3。对应的broker.id分别为0、1、2。

zookeeper.connect: zk集群地址列表

 

将当前node1服务器上的Kafka目录同步到其他node2node3服务器上:

scp -r /opt/kafka/ node2:/opt

scp -r /opt/kafka/ node3:/opt

 

修改node2node3Kafka配置文件中的broker.id(分别在node23服务器上执行以下命令修改broker.id)

sed -i -e 's/broker.id=.*/broker.id=1/' /opt/kafka/config/server.properties

sed -i -e 's/broker.id=.*/broker.id=2/' /opt/kafka/config/server.properties

 

 

3、启动Kafka集群

A、启动Zookeeper集群。

B、启动Kafka集群。

分别在三台服务器上执行以下命令启动:

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

 

4、测试

创建话题

(kafka-topics.sh --help查看帮助手册)

创建topic:

bin/kafka-topics.sh --zookeeper node1:2181,node2:2181,node3:2181 --create --replication-factor 2 --partitions 3 --topic test

(参数说明:

--replication-factor:指定每个分区的复制因子个数,默认1个

--partitions:指定当前创建的kafka分区数量,默认为1个

--topic:指定新建topic的名称)

 

查看topic列表:

bin/kafka-topics.sh --zookeeper node1:2181,node2:2181,node3:2181 --list

 

查看“test”topic描述:

bin/kafka-topics.sh --zookeeper node1:2181,node2:2181,node3:2181 --describe --topic test

 

 

创建生产者:

bin/kafka-console-producer.sh --broker-list node1:9092,node2:9092,node3:9092 --topic test

 

创建消费者:

bin/kafka-console-consumer.sh --zookeeper node1:2181,node2:2181,node3:2181 --from-beginning --topic test

 

 

注:

查看帮助手册:

bin/kafka-console-consumer.sh help

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值