kafka
文章平均质量分 65
Fairy要carry
欲戴其冠,必承其重
展开
-
Kafka如何防止消息丢失+如何防止消息重复消费
如果生产者发送消息后因为消息的抖动问题导致没有收到ack导致进行retry操作导致恢复后broker收到多条消息。其实就是消息的确认机制,我们从两个角度去思考:1.生产者这里(同步发送设置ack);首先得确保顺序消费,将ack设置为1/all,关闭retry防止重复消费,确保成功发送后再发。当消息返回到生产者,返回ack,我们设置ack即可(-1,1,all)all:需要同步给副本,同步完返回ack(设置同步的分区数>=2)消息是发送到一个分区中的,只能有一个消费组中的消费者来消费消息。原创 2022-10-19 15:04:59 · 1286 阅读 · 0 评论 -
Kafka集群中Controller,Rebalance,HW的区别
sticky:粘合策略,如果需要rebalance,会在之前已经分配的基础上做出调整,不会改变之前的分配情况,如果没有开启该策略就会重新全部分配,效率较低,建议开启。消费者最多只能消费到HW的位置,对于leader新写入的消息,consumer不能立即消费而是等待该消息被ISR集合进行同步,之后再更新HW,更新完就可以消费。1.负责管理整个集群的分区和副本,当leader挂了之后,它可以从ISR中找到下一个broker中的分区副本作为新leader(选举新的leader)原创 2022-10-19 13:48:17 · 460 阅读 · 0 评论 -
SpringBoot结合kafka
可以直接监听一个消费组,然后给消费组设置多个topic,并且设置里面的分区——>除此之外,可对目标主题里的分区设置offset。MANUAL_IMMEDIATE:消费者消费完消息后再提交offset。MANUAL:消费者消费一条提交一条,前者可能会丢消息。原创 2022-10-18 21:05:38 · 371 阅读 · 0 评论 -
kafka-offset手动提交和自动提交
消费者会根据设置的消费时间来决定消费多少消息。原创 2022-10-18 02:28:18 · 7329 阅读 · 0 评论 -
Java代码实现kafka的消息生产与消费
生产者发送消息到我们的topic分区上,需要等待我们kafka返回的ack,如果没有返回就会进入3s的阻塞,retry3次——>抛出异常(这里面我们可以将信息记录到文件日志中)生产者并不是直接把消息推送给kafka的——>利用了消息缓冲的机制,kafka本地线程默认会创建一个缓冲区 ,用来存放发送的数据(先放到缓冲区,当到达16k就进行发送)ack=0:生产者只需要把消息给到broker,而不需要到partition中kafka就会把ack返回给生产者,速度较快容易丢消息。生产者的同步发送消息。原创 2022-10-16 23:19:48 · 4621 阅读 · 0 评论 -
Kafka集群消息发送消费
因为要保证消息的顺序消费,当消息从provider那里发送过来的时候是有序的,所以我们消费者需要按顺序消费。消费组中的消费者数量无需比partition分区数量多,不然多出来的消费者消费不到消息。如果消费者挂了,就会触发rebalance机制,会让其他消费者来消费该分区。相关概念:如果两个消费者都在同一个组里面那就只有一个消费成功。——>partition的数量决定了消费组中消费者的数量。不同消费组的可以消费同一个分区的消息(原创 2022-10-16 14:50:17 · 737 阅读 · 0 评论 -
Kafka中broker,分区,副本的概念
当创建两个分区三个副本,两个分区放在不同的topic上,为什么要有副本?:保证我们的数据一致性,防止宕机的时候,能够保证数据不被丢失,比如上述:分区0在kafka2服务器上为leader,其余服务器为从机保存了它的副本,分区1与之类似当leader挂了后,会从Isr中选举,如果从机节点性能较差会被踢掉在kafka集群多个broker中,在kafka的读写操作都在leader上发生,leader负责将数据复制给follower;当主机宕机后,经过主从选举,会产生一个新的follower。原创 2022-10-16 11:41:47 · 1254 阅读 · 1 评论 -
搭建Kafka集群
1.复制server.properties文件server1.properties。2.然后修改server1.properties中。3.最后启动即可,zk在brokers下校验。原创 2022-10-16 10:06:49 · 93 阅读 · 0 评论 -
Kafka主题和分区概念
消费者每消费一条数据,都会向主题内部的_consumer_offset提交消费的偏移量——>(key:消费组id+topic+分区号,value:offset值)比如,当生产者生产消息的时候,可以根据分区比如a投递到分区1,b投递到分区2,成为了一个并行的操作,可以支持多个生产者投递消息,提高了吞吐量;不同的topic被订阅它的消费者消费。概念:分区索引,保存第一条数据是哪个索引,第n条数据是哪个索引,通过这个文件快速找到消息的位置。因为可以保证并行记录多个消费者的消费偏移量,提高了消费的吞吐量。原创 2022-10-16 01:43:34 · 433 阅读 · 0 评论 -
Kafka发送消费消息
3.发送消息把消息发送给broker中的某个topic我们可以直接在命令行中输入内容,将消息发送到Kafka中,每一行会被当做一个独立的消息;使用kafka的发送消息客户端——>发送到指定的kafka服务器地址和topic主题就是日志文件下:主题-标识id分区下的0000.log上面也讲了消息的发送者将消息发送到oooo.log中,并且按照偏移量排序,所以消费者去当中进行消费本质就是一个发布订阅,我们来看看日志文件看看是如何消费的。原创 2022-10-15 20:56:35 · 4784 阅读 · 0 评论