Kakfa
mischen520
JAVA高级架构师
展开
-
Kafka生产环境性能优化
1)Broker参数配置(server.properties)1、日志保留策略配置# 保留三天,也可以更短 (log.cleaner.delete.retention.ms)log.retention.hours=722、Replica相关配置default.replication.factor:1 默认副本1个3、网络通信延时replica.socket.timeout.ms:30000 #当集群之间网络不稳定时,调大该参数replica.lag.time.max.ms=原创 2021-06-25 08:22:13 · 253 阅读 · 0 评论 -
Kafka消息数据积压,Kafka消费能力不足怎么处理?
1)如果是Kafka消费能力不足,则可以考虑增加Topic的分区数,并且同时提升消费组的消费者数量,消费者数= 分区数。(两者缺一不可)2)如果是下游的数据处理不及时:提高每批次拉取的数量。批次拉取数据过少(拉取数据/处理时间< 生产速度),使处理的数据小于生产的数据,也会造成数据积压。...原创 2021-06-25 08:19:30 · 1203 阅读 · 0 评论 -
如何保证Kafka不被重复消费?
幂等性 +ack-1 + 事务Ack = 0,相当于异步发送,消息发送完毕即offset增加,继续生产。Ack = 1,leader收到leader replica 对一个消息的接受ack才增加offset,然后继续生产。Ack = -1,leader收到所有replica 对一个消息的接受ack才增加offset,然后继续生产。Kafka数据重复,可以再下一级:SparkStreaming、redis或者Hive中dwd层去重,去重的手段:分组、按照id开窗只取第一个值;...原创 2021-06-25 08:16:42 · 285 阅读 · 0 评论 -
Kafka分区分配策略
在Kafka内部存在两种默认的分区分配策略:Range和RoundRobin。Range是默认策略。Range是对每个Topic而言的(即一个Topic一个Topic分),首先对同一个Topic里面的分区按照序号进行排序,并对消费者按照字母顺序进行排序。然后用Partitions分区的个数除以消费者线程的总数来决定每个消费者线程消费几个分区。如果除不尽,那么前面几个消费者线程将会多消费一个分区。例如:我们有10个分区,两个消费者(C1,C2),3个消费者线程,10 / 3 = 3而且除不尽。..原创 2021-06-25 08:10:00 · 467 阅读 · 0 评论 -
Kafka的ISR副本同步队列
ISR(In-Sync Replicas),副本同步队列。ISR中包括Leader和Follower。如果Leader进程挂掉,会在ISR队列中选择一个服务作为新的Leader。有replica.lag.max.messages(延迟条数)和replica.lag.time.max.ms(延迟时间)两个参数决定一台服务是否可以加入ISR副本队列,在0.10版本移除了replica.lag.max.messages参数,防止服务频繁的进去队列。任意一个维度超过阈值都会把Follower剔除出ISR,存入O原创 2021-06-25 08:06:39 · 1264 阅读 · 0 评论 -
Kafka的监控有哪些?
公司自己开发的监控器;开源的监控器:KafkaManager、KafkaMonitor、KafkaEagle原创 2021-06-25 08:04:15 · 170 阅读 · 0 评论 -
Kafka日志保存时间?
默认保存7天;生产环境建议3天原创 2021-06-25 08:02:23 · 973 阅读 · 0 评论 -
如何确定Kakfa的分区数?
1)创建一个只有1个分区的topic2)测试这个topic的producer吞吐量和consumer吞吐量。3)假设他们的值分别是Tp和Tc,单位可以是MB/s。4)然后假设总的目标吞吐量是Tt,那么分区数=Tt/min(Tp,Tc)例如:producer吞吐量 =20m/s;consumer吞吐量 =50m/s,期望吞吐量100m/s;分区数 =100 / 20 = 5分区生产环境上,分区数一般设置为:3-10个...原创 2021-06-25 07:59:39 · 126 阅读 · 0 评论