深入了解kafka(一)

1.什么是kafka

1.kafka是一个高效的消息发布订阅消息中间件,具有高吞吐量,内置分区,冗余,容错等等的特点
2.他使用的是Scala语言编写完成的。

2.kafka有什么应用场景

1.用户行为跟踪
2.日志收集系统:ELKK

3.kafka的架构:

1.一个kafka包含会包含若干个producer(消息的生产者),若干个broker(支持kafka进行水平扩展),若干个consumer(消费者),groupId(分组的ID)
在这里插入图片描述
简要的文字说明:producer在发布消息的时候,会将消息push到broker上面,然后consumer订阅消息的时候,不是broker将消息推送到订阅端,而是consumer主动的去broker拉取数据(pull)

4.启动停止kafka

首先你需要修改配置文件:server.properties
./kafka-server-start.sh …/config/server.properties &(后台启动kafka)

5.kafka的基本操作

创建topic

./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test (指定zookeeper,副本数,分区数)
Replication-factor 表示该topic需要在不同的broker中保存几份,这里设置成1,表示在两个broker中保存两份

查看topic

./kafka-topics.sh --list --zookeeper localhost:2181
在这里插入图片描述

查看某一个topic的具体信息:

./kafka-topics.sh --describe --zookeeper localhost:2181 --topic test
在这里插入图片描述

发送消息

./kafka-console-producer.sh --broker-list localhost:9092 --topic test
在这里插入图片描述

消费消息

./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
在这里插入图片描述

搭建kafka集群

关键修修改配置文件:
1.修改server.properties. broker.id=0 (每个broker.id都是唯一的,不允许重复)
2.修改server.properties 修改成本机IP advertised.listeners=PLAINTEXT://192.168.11.153:9092
当Kafka broker启动时,它会在ZK上注册自己的IP和端口号,客户端就通过这个IP和端口号来连接
3.修改zookeeper配置地址

发送端的配置参数

acks:生产者发送消息到broker上以后的确认值。

0:生产者不需要等待broker确认,这个设置他的延时是最小的,但是确实最危险的。
1:生产者需要等待kafka集群的leader确认消息,这个选择时延较小同时确保了leader节点确认接收成功。
-1(all):需要ISR中所有的Replica给予接收确认,速度最慢,安全性最高,但是由于ISR可能会缩小到仅包含一个Replica,所以设置参数为all并不能一定避免数据丢失。
acks一般配置为-1比较适合,应为这样能最好的确保数据不会丢失。

batch.size

生产者发送多个消息到broker上的同一个分区时,为了减少网络请求带来的性能开销,通过批量的方式来提交消息,可以通过这个参数来控制批量提交的字节数大小,默认大小是16384byte,也就是16kb,意味着当一批消息大小达到指定的batch.size的时候会统一发送

max.request.size

设置请求的数据的最大字节数,为了防止发生较大的数据包影响到吞吐量,默认值为1M

消费端配置参数

group.id

consumer group是kafka提供的可扩展且具有容错性的消费者机制。一个group里面可以有多个consumer,这个topic里面的消息被同一个group的consumer消费,每个分区只能被同一个group里面的同一个consumer消费。

enable.auto.commit

消费者消费消息以后自动提交,只有当消息提交以后,该消息才不会被再次接收到,还可以配合auto.commit.interval.ms控制自动提交的频率。 当然,我们也可以通过consumer.commitSync()的方式实现手动提交 。

auto.offset.reset

auto.offset.reset 这个参数是针对新的groupid中的消费者而言的,当有新groupid的消费者来消费指定的topic时,对于该参数的配置,会有不同的语义auto.offset.reset=latest情况下,新的消费者将会从其他消费者最后消费的offset处开始消费Topic下的消息 auto.offset.reset= earliest情况下,新的消费者会从该topic最早的消息开始消费 auto.offset.reset=none情况下,新的消费者加入以后,由于之前不存在offset,则会直接抛出异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值