【Kafka专栏】-Kafka从初始到搭建到应用

=========================================================

声明:由于不同平台阅读格式不一致(尤其源码部分),所以获取更多阅读体验!!

请关注本人博客园地址:http://www.cnblogs.com/LHWorldBlog/

个人网站地址:http://www.lhworldblog.com/

==========================================================


一、前述

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

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

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

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

二、概念理解

Topics and Logs

 

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

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

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

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

 

 

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

 

Producers -- 生产者

 

指定topic来发送消息到Kafka Broker

Consumers -- 消费者

根据topic消费相应的消息

三、集群安装

 

集群规划

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

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

 

安装Kafka:

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

 

 启动kakka集群

 

A、启动Zookeeper集群。

B、启动Kafka集群。

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

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

 

 测试

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L先生AI课堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值