美的中间件面试(部分)

news2024/11/27 6:36:25
  • 用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. 本博------如何执行定时任务,以及分布式任务调度 ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/651047.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高效操作!linux在终端里快速跳转到文件管理器对应的目录下

在linux下,可能会有一个经常的操作,是在终端下,进入某个文件夹,用vim修改了某些操作,比如修改了一个html文件; 然后你想用chrome打开这个html文件,那么你可能需要打开文件管理器,切…

第五章 模型篇: 模型保存与加载

参考教程: https://pytorch.org/tutorials/beginner/basics/saveloadrun_tutorial.html 文章目录 pytorch中的保存与加载torch.save()torch.load()代码示例 模型的保存与加载保存 state_dict()nn.Module().load_state_dict()加载模型参数保存模型本身加载模型本身 c…

C语言编程语法—排序算法

一、冒泡排序 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。 过程演示&…

ansible playbook脚本,安装LAMP套件

yum 集中式安装lamp --- - name: LAMP installhosts: dbserverstasks:- name: disable firewalldservice:name: firewalldenabled: nostate: stopped- name: disabled selinuxshell: "sudo sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config"shell:…

Random random = SecureRandom.getInstanceStrong();堵塞线程问题解决

sonar扫描到使用Random随机函数不安全, 推荐使用SecureRandom替换,就是他–》【SecureRandom.getInstanceStrong()】,分别在本地,测试环境测过没问题上生产,但是运行了一段时间突然报错!!! 然后…

简要介绍 | 基于双风机振动的燕麦清选与筛选

注1:本文系“简要介绍”系列之一,仅从概念上对基于双风机振动的燕麦清选和筛选装置设计与仿真进行非常简要的介绍,不适合用于深入和详细的了解。 注2:"简要介绍"系列的所有创作均使用了AIGC工具辅助 基于双风机振动的燕…

37 # commonjs 规范流程梳理

require 源码大致过程 mod.require 会默认调用 require 语法Module.prototype.require 模块的原型上有 require 方法Module._load 调用模块的加载方法,最终返回的是 module.exportsModule._resolveFilename 解析文件名,将文件名变成绝对路径&#xff0c…

EndNote下载安装与引用

哎!写论文这个事真是没有头绪啊,今天研究一下参考文献怎么搞,发现了EndNote,但是这玩意感觉写中文的论文用还可以,英文的不太会用。这里记录一下安装使用过程,方便以后查阅。 EndNote下载安装与引用 EndNot…

React学习[一]

React学习[一] React概述React特点声明式基于组件学习一次,随处可用 React基本使用React使用方法说明 React脚手架意义脚手架初始化项目npx命令介绍 在脚手架中使用react JSXJSX的基本使用JSX使用步骤 JSX中使用JavaScript表达式嵌入式JS表达式 JSX的条件渲染JSX的列…

Model Checking(模型检测)

1. Definition 给定一个系统和一个我们期待拥有的属性P, Model checking 会探索这个系统的每个状态,验证系统是否满足定义的性质。如果满足直接返回True,否则会给出一个反例(counter example)。如果系统被证明是正确的,说明该系统的所有的行…

H3C-HCL模拟器-STP生成树协议实验

一、实验拓扑图 二、实验步骤 1)CRT连接并重命名 若遇到连接失败,先在HCL中启动命令行配置 2)启动所有设备 3)4台交换机重新命令 4)查看信息 ① SW1的MAC地址:SW1是根桥 为什么SW1是根桥? HC…

图像坐标转换:一个点绕着另一个点逆时针旋转角度平移后的坐标

图像坐标系:x向右增大, y向下增大。 点A在图像中的坐标(x1, y1) 点B在图像中的坐标(x2, y2) 点B绕着点A逆时针旋转a弧度,旋转后的点B坐标为{x (x2 - x1)*cos(a) (y2 - y1)*sin(a) x1&#xf…

java基础——有多少是你不知道的?

java基础——有多少是你不知道的&#xff1f; 一、&&和||二、Integer和int三、String、StringBuffer、StringBuilder的区别四、i1<i居然是成立的&#xff1f;五、一脸懵逼的null问题六、整数除法向上取整你知道多少种&#xff1f;七、这也能运行&#xff1f; 一、&a…

QML 与 Python 交互

在 Qt 中&#xff0c;C 和 QML 交互一般有如下三种方法 上下文属性&#xff1a;setContextProperty( )向引擎注册类型&#xff1a;调用 qmlRegisterType( )QML 扩展插件&#xff1a;虽然有很大的灵活性&#xff0c;但是用 Python 创建 QML 插件比较麻烦&#xff0c;所以这种方法…

【补充:CAN卡通信的下位机-STM32cubeIDE-hal库+STMF1xx+数据发送和接收+中断接收方式+基础样例3】

【CAN卡通信的下位机-STM32cubeIDE-hal库STMF4xx数据发送和接收中断接收方式基础样例3】 1、概述2、实验环境3、问题描述4、大佬指点与解决问题5、实验效果截图6、代码连接7、细节部分8、总结 ) 1、概述 从第一篇F1和F4上采用轮询的方式调试can&#xff0c; 【CAN卡通信的下位…

如何用Jmeter进行接口测试 ,这应该是全网最详细的教程了

一、Jmeter 的使用步骤 打开Jmeter 安装包&#xff0c;进入\bin 中&#xff0c;找到"jmeter.bat", 点击打开即可。 在下图打开的Jmeter 页面中&#xff0c;右键“测试计划” -> “添加” -> "Threads(Users)" -> “线程组”&#xff0c; 建立线…

Allure安装、使用、Jenkins集成

目录 一、allure介绍 二、安装allure服务 三、安装pytest、allure-pytest 插件 四、生成报告 五、allure其他使用 5.1 给测试报告添加各种附件 5.2 添加用例标题和描述信息 5.3 添加链接 5.4 标记测试用例 5.5 优先级 六、allure和jenkins集成 一、allure介绍 all…

2023年5月青少年软件编程(图形化) 等级考试试卷(三级)

青少年软件编程&#xff08;图形化&#xff09; 等级考试试卷&#xff08;三级&#xff09; 一、 单选题(共 25 题&#xff0c; 共 50 分) 1.关于变量&#xff0c; 下列描述错误的是&#xff1f; &#xff08; &#xff09; A.只能建一个变量 B.变量可以隐藏 C.变量可以删除 D.…

【抽样调查】实验

文章目录 1、数组矩阵简单抽样&#xff08;1&#xff09;构造数组&#xff08;2&#xff09;构造矩阵&#xff08;3&#xff09;产生来自正态分布的随机数&#xff08;4&#xff09;从正态总体中抽取若干个样本&#xff08;5&#xff09;对矩阵的行或列进行统计计算 2、R软件作…

输入信号、冲激响应与卷积

输入信号与冲激响应的离散卷积 系统冲激响应&#xff1a; h ( t ) ∑ τ 0 ∞ x ( t ) δ ( t − τ ) h(t)\sum_{\tau0}^{\infty}x(t)\delta(t-\tau ) h(t)τ0∑∞​x(t)δ(t−τ) 上式中 h ( t ) h(t) h(t)是冲激信号输入到系统后系统的输出&#xff0c;也是系统对外在激…