美的中间件面试(部分)

这篇具有很好参考价值的文章主要介绍了美的中间件面试(部分)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 用redis有遇到过大key问题吗,怎么解决

  • 我介绍项目中用异步解耦的思路来从mysql同步数据到redis,具体就是binlog+kafaka。面试官问读的主mysql的binlog,还是从的binlog。A:主mysql。Q:可以用什么中间件读binlog。A:可以用Canal。Q:除了Canal呢。参考答案1:kafka-connect、Maxwell。Q:读主mysql的binlog会有什么问题? 我没觉得有什么问题,找了一些相关文章:MySQL事务还没提交,Canal就能读到消息了?、canal基于binlog同步方案的局限性和思考,其中后面那一篇1.2.canal 高可用问题的部分完全没看懂。

  • 当kafka某topic有8个partition, 消费者组的消费者小于8个,会如何分配partition? 参考答案2,3:kafka的3种消费者分区分配策略:

  1. range : RangeAssignor对每个Topic进行独立的分区分配:
    美的中间件面试(部分)
    这种分配方式明显的一个问题是随着消费者订阅的Topic的数量的增加,不均衡的问题会越来越严重:
    美的中间件面试(部分)

  2. round-robin : 将消费组内订阅的所有Topic的分区排序,所有消费者排序后,尽量均衡分配(RangeAssignor是针对单个Topic的分区进行排序分配的):
    美的中间件面试(部分)

  3. sticky:sticky分配策略是从0.11.x版本开始引入的分配策略,它主要有两个目的:
    (1)分区的分配要尽可能均匀。
    (2)分区的分配尽可能与上次分配的保持相同。
    当两者发生冲突时,第一个目标优于第二个目标。
    假设消费者组内有3个消费者(C0、C1、C2),他们都订阅了4个主题(t0、t1、t2、t3),并且每个主题有两个分区。也就是说,整个消费者组订阅了t0p0、t0p1、t1p0、t1p1、t2p0、t2p1、t3p0、t3p1 8个分区。最终的分配结果为

消费者C0:t0p0、t1p1、t3p0
消费者C1:t0p1、t2p0、t3p1
消费者C2:t1p0、t2p1

这看上去似乎与round robin分配策略相同,事实上并不是这样。假设此时C1脱离了消费者组,那么消费者组就会执行rebalance,进而消费分区会重新分配。如果采用round robin策略,那么此时的分配结果如下

消费者C0:t0p0、t1p0、t2p0、t3p0
消费者C2:t0p1、t1p1、t2p1、t3p1

如果采用sticky分配策略,那么分配结果为

消费者C0:t0p0、t1p1、t3p0、t2p0
消费者C2:t1p0、t2p1、t0p1、t3p1

可以看到分配结果中保留了上一次分配中对消费者C0和C2的所有的分配结果,并将原来的消费者C1的负担分配给了剩余的两个消费者C0和C1,最终C0和C2的分配还保持了平衡。

  • 生产环境下kafka的broker出现硬盘不足的告警,应该怎么办?参考答案:
  1. 磁盘扩容4
  2. 清理老数据4
  3. Kafka 对于数据迁移的官方说法是分区重分配。即重新分配分区在集群的分布情况。官方提供了kafka-reassign-partitions.sh脚本来执行分区重分配操作5
  • 生产环境下kafka发生rebalance,会有什么问题?参考答案6
    1、可能重复消费: Consumer被踢出消费组,可能还没有提交offset,Rebalance时会Partition重新分配其它Consumer,会造成重复消费,虽有幂等操作但耗费消费资源,亦增加集群压力
    2、影响消费速度:频繁的Rebalance反而降低了消息的消费速度,大部分时间都在重复消费和Rebalance

  • ElasticJob为什么需要zookeeper? 参考答案7,8
    Elastic-Job依赖Zookeeper实现选举机制,在任务执行实例数量变化时(如启动新的实例或停止实例),会触发选举机制,选举出Leader实例,Leader主要进行分片的划分。即将任务划分成多个分片,然后由多个执行的机器分别领取这些分片来执行。比如一个数据库中有 1 亿条数据,需要将这些数据读取出来并计算,然后再写入到数据库中。就可以将这 1 亿条数据划分成 10 个分片,每一个分片读取其中的 1 千万条数据,然后计算后写入数据库。这 10 个分片编号为 0,1,2…9,如果有三台机器执行,A 机器分到分片(0,1,2,9),B 机器分到分片(3,4,5),C 机器分到分片(6,7,8) 。Leader将划分后的结果存放到 zookeeper 中,然后每个节点再从 zookeeper 中获取划分好的分片项。
    利用 zookeeper 的 watch 机制来监听系统中各种元数据的变化,从而执行相应的操作。
    持久化各种元数据到 zookeeper,如作业的配置信息,每个服务实例的信息等。

  • 为什么选型elasticJob


  1. kafka-connect实时流的应用 ↩︎

  2. Kafka 原理以及分区分配策略剖析----2.3.2 分区分配策略 ↩︎

  3. Kafka Rebalance详解 ↩︎

  4. 阿里云------EMR Kafka磁盘写满运维 ↩︎ ↩︎

  5. 腾讯云中间件团队------避坑指南:Kafka集群快速扩容的方案总结 ↩︎

  6. Kafka的Rebalance机制可能造成的影响及解决方案 ↩︎

  7. Elastic-Job 的执行原理及优化实践 ↩︎

  8. 本博------如何执行定时任务,以及分布式任务调度 ↩︎文章来源地址https://www.toymoban.com/news/detail-485484.html

到了这里,关于美的中间件面试(部分)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 中间件-面试题

    dubbo2默认重试次数2,dubbo3默认重试次数-1 可以根据不同场景选择容错策略 失败自动切换:当出现失败时,重试其它服务器 失败自动恢复:后台记录失败请求,定时重发。这种策略通常用于消息通知操作 失败安全策略,如果出现服务通信异常,直接把这个异常吞掉不做任何处

    2024年02月21日
    浏览(37)
  • 中间件redis的使用

    Java中的中间件配置体现在springboot的yml配置文件中。Springboot框架支持微服务和中间件和restful api远程服务的调用。中间件是Java web系统的中间层的服务系统的调用接口。Springboot的自动装配和约定大于配置机制初始化springcontext的容器空间和注册组件。使用容器管理服务注册对象

    2024年02月05日
    浏览(47)
  • 消息中间件相关面试题

    👏作者简介:大家好,我是爱发博客的嗯哼,爱好Java的小菜鸟 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦 📝社区论坛:希望大家能加入社区共同进步 🧑‍💼个人博客:智慧笔记 📕系列专栏:面试宝典 本文引自黑马程序员Java面试宝典 面试官:Ra

    2024年02月12日
    浏览(32)
  • 消息中间件面试题详解

      延迟队列:进入队列的消息会被延迟消费的队列 场景:超时订单,限时优惠,定时发布 延迟队列 = 死信交换机 + TTL(生存时间)     kafka高可用机制  kafka数据清理机制    kafka高性能设计

    2024年02月12日
    浏览(46)
  • 中间件: Redis安装与部署

    集群部署 启动6个redis节点 扩缩容 https://blog.csdn.net/lzb348110175/article/details/122168638 扩容: 添加两个节点, 第一个节点表示新节点,第二个节点表示集群中已有的任意一个节点 分配slot, 后面的节点是已有的节点 添加slave, 第一个为slave, 第二个为slave对应的master 缩容: 查看集

    2024年02月12日
    浏览(43)
  • 01.Redis中间件实战1

    字符串 需求:将用户信息存储至缓存中,实现每次前端请求获取用户个人详情时直接从缓存中获取。来演示字符串的写入与读取。 技术方案:为了实现这个需求,首先需要建立用户对象实体,里面包含用户个人的各种信息,包括ID、年龄、姓名、用户名及住址等, 然后采用

    2024年02月20日
    浏览(100)
  • 缓存中间件Redis必知必会

    作者: 逍遥Sean 简介:一个主修Java的Web网站游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言! 前言: 本文是对redis的基本用法操作的整理。 如果需要在linux环境中搭建一个redis服务参考

    2024年02月11日
    浏览(49)
  • Go重写Redis中间件 - Go实现Redis集群

    这章的内容是将我们之前实现的单机版的Redis扩充成集群版,给Redis增加集群功能,在增加集群功能之前,我们先学习一下在分布式系统中引用非常广泛的技术一致性哈希,一致性哈希在我们项目里就应用在我们Redis集群的搭建这块 详解一致性哈希 Redis集群需求背景 单台服务

    2024年02月13日
    浏览(44)
  • 【Java面试丨消息中间件】Kafka

    1. 介绍 使用kafka在消息的收发过程都有可能会出现消息丢失 (1)生产者发送消息到broker丢失 (2)消息在broker中存储丢失 (3)消费者从broker接收消息丢失 2. 生产者发送消息到broker丢失 设置异步发送:同步发送会发生阻塞,一般使用异步发送方式发送消息 消息重试:由于网

    2024年02月11日
    浏览(42)
  • 常用中间件redis,kafka及其测试方法

    一、中间件的使用场景 引入中间件的目的一般有两个: 1、提升性能 产品架构中的性能设计: 常用的中间件: 1) 高速缓存:redis 基于内存,所以比mysql块(存在磁盘io) 为什么查询速度快? 单进程+IO多路复用去提高性能 基于内存 做缓存,极大缓解了数据库压力 非常适合

    2024年04月11日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包