- 博客(10)
- 收藏
- 关注
原创 Kafka 在什么情况下会出现消息丢失?
丢失原因:数据从producer端push过来后,broker端需要将数据持久化存储到磁盘中,消息存储是异步存储的,按照一定的消息数量和间隔时间进行存储,如果在存储的时候broker挂了,此时选举了一个落后Leader 很多的Follower成为新的Leader,那么落后的消息就会丢失。2)拉去消息后,先提交offset再处理消息(如果处理消息的时候挂了,由于offset已经提交,consumer重启后会从之前提交的offset下一个位置开始消费,之前未处理的消息不会再次被处理,所以这部分消息已经丢失)
2023-08-02 20:04:05
580
原创 怎么尽可能保证 Kafka 的可靠性?
参数设定,默认30s。例如2超时,(leader:0, isr:0,1)。这样就不用等长期联系不上或者已经故障的节点。如果Follower长时间未向Leader发送通信请求或同步数据,则该Follower将被踢出ISR。,意为和 Leader保持同步的Follower+Leader集合(leader:0,isr:0,1,2)。Leader维护了一个动态的in-sync replica set(
2023-08-02 19:41:19
88
原创 Kafka中如何做到数据唯一,即数据去重?
举例: 订单支付--> 用户付款--调用支付宝接口-->回写订单数据--> 发起一个异步线程,用于修改订单数据。使用原因:幂等性只能保障服务器不挂掉的情况下,发送数据是唯一的,假如发送者服务器挂掉了,那么重启之后还是会发送重复的数据,所以需要使用。就是指Producer不论向Broker发送多少次重复数据,Broker端都只会持久化一条,保证了不重复。如果kafka集群挂了,重启了,此时以前的数据还会发送一回,数据又重复了。对于一些非常重要的信息,比如和钱相关的数据,要求数据既不能重复也不丢失。
2023-08-02 19:37:08
1034
原创 生产者如何提高吞吐量?
4、 RecordAccumulator:缓冲区大小,修改为64m。2、linger.ms:等待时间,修改为5-100ms。3、compression.type:压缩snappy。1、batch.size:批次大小,默认16k。
2023-08-02 19:28:06
73
原创 zk在kafka集群中有何作用?
kafka集群中所有的broker信息、topic和partition的状态信息都会存储在zk节点上,当新的broker节点加入到集群或者topic和partition信息发生变化时,kafka会将这些信息存储到zk中。kafka中的消费者组信息、消费者offset信息都会存储在zk中,当消费者加入或者退出一个消费者组时,zk都会负责重新分配partition给消费者,并且跟进新的offset信息。kafka需要注册到一个zk集群中,已实现集群元数据管理和控制。二、zk在kafka集群中的作用。
2023-08-02 19:25:45
420
原创 简述kafka集群中的Leader选举机制
kafka集群中有一个broker的controller会被选举为controller Leader,负责管理集群broker的上下线,所有topic的分区副本分配和Leader选举等工作。选举规则:在isr中存活为前提,按照AR中排在前面的优先。例如:ar[1,0,2],isr[1,0,2],Leader就会按照1,0,2的顺序轮询。10.选举新的Leader(在isr中存活为前提,按照ar中排在最前面的优先)3.由选举出来的controller监听broker节点变化。11.更新Leader和isr。
2023-08-02 19:00:39
309
原创 kafka是如何处理数据乱序问题的?
生产者发送的数据,单分区内可以做到有序,多分区无法保证,除非把多个分区的数据拉取到消费端,进行排序,但是这样做效率很低,不如直接设置一个分区。=1(不需要考虑是否开启幂等性)
2023-08-02 18:49:32
609
原创 kafka中节点如何服役和退役?
3)创建副本存储计划(所有副本存储在broker0、broker1、broker2、broker3中)编写json: vi increase-replication-factor.json。3)创建副本存储计划(所有副本存储在broker0、broker1、broker2中)创建一个文件:vi topics-to-move.json。创建一个文件:vi topics-to-move.json。以上这个内容来自于第二步的执行计划。2)生成一个负载均衡的计划。2)生成一个负载均衡的计划。4)执行副本存储计划。
2023-08-02 17:27:27
41
原创 Kafka中Leader挂了,Follower挂了,然后再启动,数据如何同步?
由于数据同步的时候先进入Leader,随后同步给Follower,假如Follower挂掉了,Leader和其他的Follower继续往前存储数据,挂掉的节点从ISR集合中剔除,此时挂掉的Follower又重启了,他会先从上次挂掉的节点的HW开始同步数据,直到追上最后一个Follower为止,会重新回归到ISR。2)为保证多个副本之间的数据一致性,其余的Follower会先将各自的log文件高于HW的部分截掉,然后从新的Leader同步数据。HW(高水位线) 演示:所有副本中,最小的LEO。
2023-08-02 17:15:42
409
原创 kafka中初始化的时候Leader选举有一定的规律,如何打破这个规律呢?
在生产环境中,每台服务器的配置和性能不一致,但是Kafka只会根据自己的代码规则创建对应的分区副本,就会导致个别服务器存储压力较大。所有需要手动调整分区副本的存储。需求:创建一个新的topic,4个分区,两个副本,名称为three。将 该topic的所有副本都存储到broker0和broker1两台服务器上。1.kafka在进行初始化的时候,选举谁当第一Leader,是有一定的算法的。(3)创建副本存储计划(所有副本都指定存储在 broker0、broker1 中)。(2)查看分区副本存储情况。
2023-08-02 17:05:22
73
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人