企业网站界面风格设计描述,中国500强排行榜,江西建筑人才网招聘,建设网络平台的流程1#xff0c;生产者发送消息的原理
发送消息的过程中#xff0c;涉及到两个线程#xff0c;main线程和sender线程#xff0c;main线程会创建一个双端队列#xff0c;main线程向双端队列发送消息#xff0c;sender线程从双端队列里拉取消息#xff0c;发送给Kafka Broke…1生产者发送消息的原理
发送消息的过程中涉及到两个线程main线程和sender线程main线程会创建一个双端队列main线程向双端队列发送消息sender线程从双端队列里拉取消息发送给Kafka Broker。
2如何给数据去重
幂等性就是指生产者不论向Broker发送多少次重复数据Broker端都只会持久化一条保证了数据不重复
ACK级别调成-1分区的副本数要大于等于二ISR最小副本数也要大于等于二
什么是ISR ISR就是指只保留存活的leader和follower的队列
3如何保证数据的安全性
kafka提供了三种ACK级别
1acks0生产者向leader发送消息不会等待应答认为消息发送成功这种方式效率较高可靠性最差可能导致数据的丢失。
2acks1生产者向leader发送消息给leaderleader拿到数据后应答之后挂掉了还没来得及同步给follower但是生产者接到应答后觉得已经发送成功了这个leader挂掉后会重新选举一个leader这个时候leader向生产者要数据但是生产者觉得已经发送成功了就不会给新的leader发数据导致数据的丢失
3acks-1生产者向leader发送消息leader开始同步给其他的followerleader和ISR队列里面的所有节点收齐数据后应答否则不会走但是此时有一个follower出问题了迟迟同步不了这个时候就需要用到ISR,ISR里面都是存活的leader如果有follower挂了就会被踢出ISR队列。默认时间是30秒。
这还不是最可靠的
数据完全可靠的条件ACK级别设置为-1分区副本数大于等于二ISR里面应答的最小副本数大于等于2
4.如何解决数据积压的问题
1如果是Kafka的消费能力不足则可以考虑增加主题Topic的分区数并同时提升消费组的消费者数量。
2如果是下游的数据处理不及时提高每批次拉取的数量批次拉取数据过少使处理的数据小于生产的数据也会数据积压。
5Kafka对leader的选举机制。
Kafka集群中会有一个broker的Controller会被选举位controller leader负责管理集群broker的上下线所有topic分区副本分配和leader选举。
leader的选举规则首先要在ISR里存活按照ar的排名在前的优先。
6Kafka如何提高吞吐量
1如果是生产者要提高吞吐量的话
首先要调整batch.size的大小默认的批次是16klinger.ms等待时间修改为5-100mscompression.cype:压缩snappy设置缓冲区大小RecordAccumlator 修改为64m。
2如果是要提高消费者吞吐量的话
1如果是Kafka的消费能力不足则可以考虑增加主题Topic的分区数并同时提升消费组的消费者数量。
2如果是下游的数据处理不及时提高每批次拉取的数量批次拉取数据过少使处理的数据小于生产的数据也会数据积压。
7如何做到高效读写数据
因为Kafka本身是分布式集群可以采用分区技术并行度高读写数据采用稀疏索引可以快速定位要消费的数据顺写磁盘页缓存零拷贝技术。
8offect机制
我们要如何指定offect消费
Kafka提供了seek方法可以让我们从分区位置开始消费。
面试题问假如 kafka 崩了重启之后想继续消费怎么做
1、确定要消费的主题是哪几个
2、使用命令或者其他的组件查看 __consumer_offset 主题下的偏移量信息找到我们关心的主题再崩溃之前消费到了哪里。
3、使用 java 代码里面有一个非常重要的方法 seek指定需要消费的主题分区以及偏移量就可以继续消费了。
offect位移
记录消费到哪里的这个值就是偏移量。
记录哪个主题哪个分区哪个位置。