Kafka服務(wù)信息:
- 平臺(tái):Amazon MSK
- Kafka版本:3.6.0
- Brokers數(shù)量:3
常用配置需求:
- 數(shù)據(jù)保留3天喳篇,過期數(shù)據(jù)刪除栖榨;
- 副本數(shù)要大于2盯滚;
- partitions默認(rèn)是3,有特殊需求可以單獨(dú)在topic級別設(shè)置沃暗;
- minISR大于1
broken配置說明
參數(shù) | 描述 | 默認(rèn)值 | 備注 |
---|---|---|---|
log.cleanup.policy | 舊日志的保留策略瞎颗,可選:[compact, delete] | delete | delete: 刪除舊數(shù)據(jù), compact: 壓縮,每個(gè)topic 的每個(gè)分區(qū)中,保留每個(gè)key的最新值value件甥,壓縮后key順序不變 |
log.retention.hours | 日志保存的最大時(shí)間,單位:小時(shí) | 168 | 優(yōu)先級 log.retention.ms > log.retention.minutes>log.retention.hours |
log.retention.minutes | 日志保存的最大時(shí)間哼拔,單位:分鐘 | null | 優(yōu)先級 log.retention.ms > log.retention.minutes>log.retention.hours |
log.retention.ms | 日志保存的最大時(shí)間引有,單位:毫秒 | null | 優(yōu)先級 log.retention.ms > log.retention.minutes>log.retention.hours |
log.segment.bytes | 單個(gè)日志文件的大小 | 1073741824 | |
log.roll.hours | 日志文件輪換時(shí)間,單位:小時(shí) | 168 | 優(yōu)先級 log.roll.ms > log.roll.hours |
log.roll.ms | 日志文件輪換時(shí)間倦逐,單位:毫秒 | null | 優(yōu)先級 log.roll.ms > log.roll.hours |
min.insync.replicas | 消息持久化的最小副本數(shù) | 1 | 當(dāng)producer acks=all或-1時(shí), 表示producer message至少有多少個(gè)副本數(shù)據(jù)同步成功才算成功 |
使用情景描述
日志清理策略不生效
如果設(shè)置了log.retention.hours=72(3天)譬正,會(huì)發(fā)現(xiàn)數(shù)據(jù)量較大的topic會(huì)按照設(shè)置值定期清理,而某些較小的(幾十MB)中會(huì)有超過3天未被刪除的message檬姥,這可能與segment輪換有關(guān)曾我。
Kafka日志的清理策略依賴于兩個(gè)因素:log.segment.bytes和log.segment.ms。當(dāng)segment.bytes達(dá)到指定大写┟(如1GB)您单,或segment.ms到期(默認(rèn)7天)時(shí)斋荞,Kafka會(huì)輪換日志文件荞雏。如果topic的大小小于1GB且未達(dá)到7天,日志將不會(huì)輪換,retention.ms不會(huì)生效凤优。只有等到segment.ms到期悦陋,Kafka才會(huì)輪換新文件并清理舊文件。
保證大于3個(gè)broker的集群重啟時(shí)不會(huì)丟失數(shù)據(jù)
配置broker:min.insync.replicas >= 2的同時(shí)筑辨,需要保證producer配置acks=all或-1:
- broker配置表示:至少有多少個(gè)副本數(shù)據(jù)同步成功,才能確認(rèn)此小時(shí)是否持久化成功俺驶,否則producer段會(huì)拋出異常。
- producer需配置 ack = all 或者-1時(shí)棍辕,如果 In-Sync Replicas (ISR) 小于min.insync.replicas的值時(shí)暮现,則消息的寫入會(huì)拋異常(NotEnoughReplicas or NotEnoughReplicasAfterAppend)。
文章寫完后楚昭,發(fā)現(xiàn)別人寫的一篇文章寫的挺好挺詳細(xì)栖袋,可以參考鏈接
附:
時(shí)間換算表
天 | 小時(shí) | 毫秒 |
---|---|---|
1 天 | 24 小時(shí) | 86400000 毫秒 |
2 天 | 48 小時(shí) | 172800000 毫秒 |
3 天 | 72 小時(shí) | 259200000 毫秒 |
4 天 | 96 小時(shí) | 345600000 毫秒 |
5 天 | 120 小時(shí) | 432000000 毫秒 |
6 天 | 144 小時(shí) | 518400000 毫秒 |
7 天 | 168 小時(shí) | 604800000 毫秒 |
通用配置
auto.create.topics.enable=true
default.replication.factor=3
min.insync.replicas=2
num.io.threads=8
num.network.threads=5
num.partitions=3
num.replica.fetchers=2
log.retention.hours=72
replica.lag.time.max.ms=30000
socket.receive.buffer.bytes=102400
socket.request.max.bytes=104857600
socket.send.buffer.bytes=102400
unclean.leader.election.enable=true
zookeeper.session.timeout.ms=18000