1、基本信息
1)组成
生产者 broker 消费者 zk
2)kafka安装多少台= 2 * (生产者峰值生产速率 * 副本 / 100) + 1 = 3台
3)压测:生产者峰值生产速率 消费者峰值消费速率
4)副本:默认1个副本 =》 生产环境2-3 个 2个居多
副本多的好处,可靠性高; 坏处,效率低
5)kafka速率
100万日活 没人每天100条日志 每天多少条日志=100万 * 100条 = 1亿条
1亿条 / (3600 * 24)= 1150条/s 1m/s
什么时间段达到数据峰值 7-12点 30m/s 50m/s
6)数据保存多久
默认保存7天,=》 3天 6个小时
7)磁盘空间预留多大
1亿条 * 1k = 100g
100g * 2(副本) * 3天 /0.7 = 1t
8)是否做了监控
kafka manager(滴滴jdk11) kafka eagle 开源免费
我们公司自己开发的 仰视大佬
9)分区
分区能提高并发度
期望 吞吐量达到 t 100m/s
现实 tp 20m/s
tc 40m/s
分区数= t / min(tp, tc ) = 100/ 20 = 5个分区
10)分区分配策略
粘性分区
range
10个分区 3个消费者线程
0 1 2 3 容易产生 数据倾斜
4 5 6
7 8 9
rand...
所有数据全部按照hash方式打散,然后轮询执行
11)ISR
解决leader挂了谁当老大的问题
旧版本,延迟时间、延迟条数 新版本,延迟时间
12)多少个Topic
要满足下一级所有消费者
2、挂了
kafka channel 接收不到数据
30天日志备份
3、丢了
ack的配置
0 生产者发送过来数据 就不管了, 效率高, 可靠性差
1 生产者发送过来数据 Leader应答, 效率一般, 可靠性一般
-1 生产者发送过来数据 Leader+ follower共同应答, 效率差, 可靠性高
在生产环境怎么配置?
0 生产环境不会用;
1 :通常情况 处理普通日志
-1:通常情况,金融和钱相关的。
4、重复了
幂等性 + 事务 + ack =-1 一般会在 hive dwd spark redis flink
5、积压了
增加分区 原来1个分区=》 5个分区 消费者CPU(1个) 必须配套增加
可以增加消费者每批次拉取的数据量 1000 2000-3000
6、优化
单条信息最大处理量:1m -> 5m
内存: 1G -> 5G
副本数1个变多个
数据留存7天变3天
网络通讯延时参数调大,防止频繁复制副本
7、杂七杂八
1)Kafka高效读写数据
(1)自己是集群 ,可以设置分区
(2)顺序读写
(3)零拷贝技术
2)传输过来2m 的日志,会出现什么问题