kafka简单实战一

1.kafka概述

1.1 定义

kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时领域

1.2消息队列

同步处理
在这里插入图片描述

异步处理(解耦,削峰)
在这里插入图片描述
使用消息队列的好处
1) 解耦
允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。
2) 可恢复性
系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所
以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。
3) 缓冲
有助于控制和优化数据流经过系统的速度, 解决生产消息和消费消息的处理速度不一致
的情况。(一般生产大于消费速度)
4) 灵活性 & 峰值处理能力
在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见。
如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列
能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。
5) 异步通信
很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户
把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要
的时候再去处理它们。

1.2.2消息队列的两种模式

(1)点对点模式
一对一,消费者主动拉取数据,消息收到后消息清除。
消息生产者生产消息发送到Queue中, 然后消息消费者从Queue中取出并且消费消息。
消息被消费以后, queue 中不再有存储,所以消息消费者不可能消费到已经被消费的消息。
Queue 支持存在多个消费者,但是对一个消息而言,只会有一个消费者可以消费。
在这里插入图片描述

(2)发布订阅模式(两种:消费者主动拉取数据(需要维护长轮询),队列主动推送数据(可能造成消费者能力不足直接崩或者消费者资源浪费))
一对多,消费者消费数据之后不会清除消息
消息生产者(发布)将消息发布到 topic 中,同时有多个消息消费者(订阅)消费该消
息。和点对点方式不同,发布到 topic 的消息会被所有订阅者消费
在这里插入图片描述

分区是为了提高kafka负载能力,提高读写并行读(都找leader)
副本(冗余) 为了容灾,备份(需要保证数据一致性)
消费者组
生产者分组问题

生产者连接broker-list
kafka集群连接zookeeper
消费者连接zookeeper和bootstrap-server

同个分区只能被同一个消费组的某个消费者消费
消费者分组提高消费能力,100个消息一个组有2个消费者,每个消费50条,所以消费者数量一定小于等于消息,最好并发是消费者数量与kafka集群数量相等
zk帮助存储消息和消费者消费的位置信息offset(0.9之前)
默认存7天108小时

1) Producer : 消息生产者,就是向 kafka broker 发消息的客户端;
2) Consumer : 消息消费者,向 kafka broker 取消息的客户端;
3) Consumer Group (CG): 消费者组,由多个 consumer 组成。 消费者组内每个消费者负
责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。 所
有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者。
4) Broker : 一台 kafka 服务器就是一个 broker。一个集群由多个 broker 组成。一个 broker
可以容纳多个 topic。
5) Topic : 可以理解为一个队列, 生产者和消费者面向的都是一个 topic;
6) Partition: 为了实现扩展性,一个非常大的 topic 可以分布到多个 broker(即服务器)上,
一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列;
7) Replica: 副本,为保证集群中的某个节点发生故障时, 该节点上的 partition 数据不丢失且 kafka 仍然能够继续工作, kafka 提供了副本机制,一个 topic 的每个分区都有若干个副本,
一个 leader 和若干个 follower。
8) leader: 每个分区多个副本的“主”,生产者发送数据的对象,以及消费者消费数据的对
象都是 leader。
9) follower: 每个分区多个副本中的“从”,实时从 leader 中同步数据,保持和 leader 数据
的同步。 leader 发生故障时,某个 follower 会成为新的 follower。

2.kafka快速入门

2.1kafka安装,启动和关闭

kafka0.10.2 scala2.1.1

启动zookeeper

cd /usr/local/zookeeper
bin/zkServer.sh start

关闭zookeeper
bin/zkServer.sh stop
在这里插入图片描述
配置kafka伪分布式,详情参照https://cloud.tencent.com/developer/article/1336597
简单说就是复制更名properties文件,更改ID,端口号,文件位置
启动kafka

bin/kafka-server-start.sh -daemon config/server.properties
--daemon 非阻塞启动

–关闭

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

在这里插入图片描述
在这里插入图片描述

2.2kafka命令行操作

zookeeper 默认端口 2181
kafka默认端口9092

列出主题

bin/kafka-topics.sh --zookeeper
hadoop:2181 --list

创建主题

bin/kafka-topics.sh --zookeeper
hadoop:2181 --create --replication-factor 3 --partitions 1 --
topic first

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

删除主题

bin/kafka-topics.sh --zookeeper
hadoop:2181 --delete --topic first

在这里插入图片描述
描述详情

bin/kafka-topics.sh --describe --topic first --zookeeper hadoop:2181

在这里插入图片描述
注意:分区可以多个,但是副本数量不能超过节点数
在这里插入图片描述

发送消息和消费消息

bin/kafka-console-producer.sh --broker-list hadoop:9092 --topic second
bin/kafka-console-consumer.sh  --zookeeper hadoop:2181 --topic second

在这里插入图片描述
在这里插入图片描述
使用bootstrap-server

bin/kafka-console-consumer.sh  --topic second --bootstrap-server hadoop:9093 

在这里插入图片描述

在这里插入图片描述

修改分区数

bin/kafka-topics.sh --zookeeper
hadoop:2181 --alter --topic first --partitions 6

日志分离

bin/zkCli.sh

在这里插入图片描述
在这里插入图片描述

删除logs,修改server.properties的log.dir=kafka.broker/data

bin/kafka-topics.sh --zookeeper hadoop:2181 --topic first --partitions 2 --replication-factor 2 --create

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
日志
在这里插入图片描述
参照尚硅谷教程:https://www.bilibili.com/video/BV1a4411B7V9?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值