kafka

1. AKF

x轴:解决高可用单点问题
y轴:解决业务划分问题
z轴:解决分片分治问题

在这里插入图片描述

在这里插入图片描述

2. kafka集群搭建

2.1 下载安装包

官网地址:kafka
在这里插入图片描述

2.2 上传到自己的安装目录

#解压
 tar -xzf kafka_2.13-3.2.1.tgz
 #改下名字,我嫌名字太长
 mv kafka_2.13-3.2.1 /usr/local/kafka
 #新建/var/kafka_data  用于存放kafka数据
 mkdir -p /var/kafka_data

2.3修改server.properties配置文件

必要的四个配置,根据实际环境操作

#保持唯一
broker.id=0
listeners=PLAINTEXT://node01:9092
log.dirs=/var/kafka-data
zookeeper.connect=node02:2181,node03:2181,node04:2181/kafka

2.4 配置环境变量

vim /etc/profile
#配置
export KAFKA=/usr/local/kafka
export PATH=$PATH:$KAFKA/bin
#刷新环境变量
source /etc/profile

2.5 scp 将kafka 分发到其他节点

#当前所在目录  /usr/local/kafka
scp -r /usr/local/kakfa  node02:`pwd`

2.6修改server.properties

broker.id=1
listeners=PLAINTEXT://node02:9092
log.dirs=/var/kafka-data
zookeeper.connect=node02:2181,node03:2181,node04:2181/kafka

2.7 启动kafka

###当前所在目录  /usr/local/kafka/config
kafka-server-start.sh server.properties

3.kafka 的基本使用

3.1 查看相关命令的参数

#敲相关命令 然后回车

在这里插入图片描述

3.2创建topic

bootstrap-server 表示的是连接到哪个地址,partitions 表示的是创建几个分区,replication-factor表示的是创建几个副本

kafka-topics.sh --create --topic test --bootstrap-server 192.168.37.129:9092,192.168.37.130:9092,192.168.37.131:9092 --partitions 2 --replication-factor 2  

3.3 查看topic相关信息

kafka-topics.sh --describe --topic test --bootstrap-server 192.168.37.129:9092,192.168.37.130:9092,192.168.37.131:9092

3.4简单的生产者消费者

consumer

kafka-console-consumer.sh --bootstrap-server 192.168.37.129:9092,192.168.37.130:9092 --topic test --group msb

producter

kafka-console-producer.sh --bootstrap-server 192.168.37.131:9092 --topic test

生产者生产消息,消费者这边接收

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

3.5 删除topic

kafka-topic.sh --bootstrap-server 192.168.37.131:9092 --delete --topic test

3.6 修改分区数

kafka-topics.sh --bootstrap-server 192.168.37.131:9092--alter --topic test --partitions 3

4. 文件储存

Kafka文件存储也是通过本地落盘的方式存储的,主要是通过相应的log与index等文件保存具体的消息文件。

生产者不断的向log文件追加消息文件,为了防止log文件过大导致定位效率低下,Kafka的log文件以1G为一个分界点,当.log文件大小超过1G的时候,此时会创建一个新的.log文件,同时为了快速定位大文件中消息位置,Kafka采取了分片和索引的机制来加速定位。

在kafka的存储log的地方,即文件的地方,会存在消费的偏移量以及具体的分区信息,分区信息的话主要包括.index和.log文件组成,

5. 相关名词解释

5.1 Kafka 中的 ISR(InSyncRepli)、 OSR(OutSyncRepli)、 AR(AllRepli)代表什么?

ISR:速率和leader相差低于10s的follower的集合
OSR:速率和leader相差大于10s的follwer
AR:所有分区的follower\

5.2 Kafka 中的 HW、 LEO 等分别代表什么?

HW:High Water高水位,根据同一分区中最低的LEO决定(Log End Offset)
LEO:每个分区最大的Offset

在这里插入图片描述

6. ack机制

Kafka为用户提供了三种可靠性级别,用户根据可靠性和延迟的要求进行权衡选择不同的配置。
ack参数配置

0: producer不等待broker的ack,这一操作提供了最低的延迟,broker接收到还没有写入磁盘就已经返回,当broker故障时有可能丢失数据

1: producer等待broker的ack,partition的leader落盘成功后返回ack,如果在follower同步成功之前leader故障,那么将丢失数据。(只是leader落盘)
在这里插入图片描述

-1(all): producer等待broker的ack,partition的leader和ISR的follower全部落盘成功才返回ack,但是如果在follower同步完成后,broker发送ack之前,如果leader发生故障,会造成数据重复。(这里的数据重复是因为没有收到,所以继续重发导致的数据重复)

在这里插入图片描述

当ack=-1的时候,就会存在一致性问题,
一致性分为:
强一致性:所有节点必须全部存活,一致性破坏可用性
最终一致性,过半通过,最常用的一致性解决方案

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值