首页 > 编程知识 正文

mapreduce常见面试题,tcc分布式事务

时间:2023-05-06 06:47:34 阅读:31343 作者:1653

1、Kafka的ISR(insyncrepli )、osr (outsyncrepli )、ar (all repli )代表什么? AR:所有分区的副本; ISR :与leader同步的所有拷贝集合; osr :由leader去除ISR的集合; 如果复制副本在一段时间内未与leader同步,则会提交ISR。 2、Kafka的硬件、zgdxlz等分别代表了什么? zgdxlz:每个副本中最大的offset;

HW :消费者能看到的最大的offset,ISR中最小的zgdxlz;

3、在Kafka中是如何表现信息的顺序性的? kafka分区每次写入消息都很有序(添加到末尾); 在消费时,每个分区仅由同一消费群中的一个消费者消费,以确保消息的顺序。

4、你知道Kafka的分区、串行化器、拦截器吗? 它们之间的处理顺序是什么? 分区设备:根据键值确定放置消息的分区,默认情况下也可以尝试轮询算法或自定义分区设备;

序列化程序:密钥序列化程序和值序列化程序。 将键和值转换为二进制流,反序列化程序将二进制流转换为指定类型的数据。

拦截器:两个方法doSend ) )方法可以在序列化完成之前调用onAcknowledgement ) )方法,并在消息发送成功或失败时添加多个拦截器并按顺序运行

执行顺序:拦截器doSend () -串行化器-分区

5、Kafka生产者客户端的整体结构是什么样的? 你用了多少个线程处理? 分别是什么?

整个生产者客户端在两个线程(主线程和Sender线程(发送线程) )上协调运行。 KafkaProducer在主线程上创建消息并通过可能的阻塞器、串行化器和分区角色后,也称为消息累加器(RecordAccumulator )和消息收集器发送器线程从记录加速器检索消息并将其发送到Kafka。

RecordAccumulator主要用于缓存消息,Sender线程可以发送大量消息,从而减少网络传输的资源消耗并提高性能。 可以使用生产者客户端参数buffer.memory配置记录器缓存的大小,默认值为32MB。 如果以超过生产者向服务器发送的速度的速度发送消息,生产者的空间将会不足。 在这种情况下,KafkaProducer的send ) )方法调用将被阻止或抛出异常。 这取决于参数max.block.ms的配置,此参数的默认值为60000,即60秒。

6、“消费群体的消费者数量超过topic的划分,消费者就不能消费数据”这句话对吗? 正确; 同一分区只能由同一消费群体中的一个消费者消费。 7、消费者提交消费班次时,提交的是目前消费最新信息的offset还是offset 1? offset 1。

8、什么情况会导致重复消费? 消费者消费后commit offset (程序崩溃/strong制kill/花费时间/自动提交错位时的unscrible )。

9、在那些情况下信息会消失吗? 消费者无法处理完消息而提交offset (如果未处理自动提交偏移,则程序异常终止) )。

10、zxdxyz使用kafka-topics.sh创建(删除) topic后,Kafka后面会运行什么逻辑? 1 )将在zookeeper的/brokers/topics节点下创建新的主题节点。 示例:

/brokers/topics/first

2 )触发控制器的侦听器

3 ) Kafka控制器负责主题的创建,并更新元数据缓存。

11、可以增加topic的分区数吗? 怎么才能增加呢? 如果做不到,那是为什么? 是的,可以。

命令: kyd xq/Kafka-topics.sh---- zookeeper node 023 33602181---- alter---- topic second---- partitions 3

12、可以减少topic的分区数吗? 怎么才能减少呢? 如果做不到,那是为什么? 不,会失去数据。 13、Kafka目前有它们的内部主题。 它们有什么特征? 各自的作用是什么? __consumer_offsets以双下划线开头,是否要轻松保存消费群体偏移量14、Kafka的日志目录结构? 每个partition都有一个文件夹,其中包含四种类型的文件. index.log.timeindexleader-epoch-check point

. index .log .timeindex个文件前面segment中的最后一条消息带有前缀的偏移log文件保存所有消息索引timeindex在index文件中保存稀疏的相对偏移

leader-epoch-checkpoint存储每当leader开始写入消息时offset会定期更新

当follower被选为leader时,它将据此确定哪些消息可用

15、如果我指定了offset,Kafka控制器怎么找到对应的消息? 1 .文件名前缀数字x,找到包含此绝对offset兼容消息的文件2.offset-x是文件中的

相对偏移3.通过index文件中记录的索引找到最近的消息的位置4.从最近位置开始逐条寻找 16、聊一聊 Kafka Controller 的作用?

负责kafka集群的上下线工作,所有topic的副本分区分配和选举leader工作

17、Kafka中有那些地方需要选举?这些地方的选举策略又有哪些?

在ISR中需要选择,选择策略为先到先得

18、失效副本是指什么?有那些应对措施?

失效副本为速率比leader相差大于10秒的follower
将失效的follower先剔除ISR
等速率接近leader10秒内,再加进ISR

19、Kafka创建Topic时如何将分区放置到不同的Broker中?

首先副本数不能超过broker数
第一分区是随机从Broker中选择一个,然后其他分区相对于0号分区依次向后移
第一个分区是从nextReplicaShift决定的,而这个数也是随机产生的

20、Kafka中的事务是怎么实现的?

kafka事务有两种
producer事务和consumer事务
producer事务是为了解决kafka跨分区跨会话问题
kafka不能跨分区跨会话的主要问题是每次启动的producer的PID都是系统随机给的
所以为了解决这个问题
我们就要手动给producer一个全局唯一的id,也就是transaction id 简称TID
我们将TID和PID进行绑定,在producer带着TID和PID第一次向broker注册时,broker就会记录TID,并生成一个新的组件__transaction_state用来保存TID的事务状态信息
当producer重启后,就会带着TID和新的PID向broker发起请求,当发现TID一致时
producer就会获取之前的PID,将覆盖掉新的PID,并获取上一次的事务状态信息,从而继续上次工作
consumer事务相对于producer事务就弱一点,需要先确保consumer的消费和提交位置为一致且具有事务功能,才能保证数据的完整,不然会造成数据的丢失或重复

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。