云事业群CTO线技术晋升考核机试题-分布式专题-C 分布式任务调度

2023年(Q3财年)技术部门CTO线技术人员晋升考核机试题

分布式篇-C 分布式任务调度

*参考答案*

出题人:湖北TL田超凡
答案制定:湖北TL田超凡

*****试卷启用前绝密****

1 传统的定时任务存在那些缺点

答:传统定时任务的缺点:

  1. 定时任务逻辑和业务逻辑在一个服务中,是强耦合的,没有实现完全解耦,当定时任务逻辑出现问题,也会影响业务逻辑的执行。
  2. 定时任务非常消耗cpu资源,可能会影响业务线程的执行。
  3. 服务器集群环境下,定时任务可能会被重复执行。

2 定时任务集群,如何保证定时任务幂等性问题

答:

  1. 彻底解耦。将定时任务逻辑和业务逻辑彻底解耦分开,只对业务逻辑实现服务集群,不对定时任务逻辑实现集群(定时任务服务单机),存在高可用问题。
  2. 配置文件新增开关。每个服务启动的时候加载配置文件中配置的定时任务执行开关,哪个服务配置了开启,那个服务就加载定时任务类并执行定时任务;配置关闭的服务不加载和执行定时任务,存在高可用问题。
  3. 数据库主键唯一性。每个服务同时插入相同的主键id到数据库表中,因为数据库表中的主键是唯一约束的,所以相同的主键id多个服务同时插入到同一个数据库表,只会有一个服务插入成功,谁插入成功谁就可以执行定时任务。不存在高可用问题,但是造成了数据库数据冗余和大量脏数据的问题
  4. 分布式锁实现,每个服务本质都是一个单独的JVM,此时可以基于分布式锁的机制实现:多个服务JVM同时竞争锁,同一时刻只有一个服务JVM能够获取到分布式锁,谁获取到分布式锁,谁就可以执行定时任务。不存在高可用问题,但是性能较差。
  5. 分布式任务调度平台实现。推荐,同时解决了定时任务高可用和幂等性的问题。

3 分布式任务调度平台架构设计原理

答:分布式任务调度平台有三类角色组成:

定时任务调度中心、定时任务注册中心、定时任务服务实例

定时任务调度中心:负责拦截所有定时任务的执行,类似于nginx网关的作用。

定时任务注册中心:负责注册和管理定时任务服务实例,实现服务治理。类似eureka的作用。

定时任务服务实例:定时任务服务实例实现集群,保证高可用,是具体的定时任务服务,负责执行定时任务。

分布式任务调度平台实现原理:

  1. 定时任务服务启动时会连接到定时任务注册中心,将自己的ip和端口号注册到定时任务注册中心中。
  2. 定时任务开始执行的时候,会首先被定时任务调度中心拦截,获取定时任务关联的定时任务注册中心,加载该注册中心下面注册的定时任务服务的地址,基于负载均衡算法选择其中一台定时任务服务,发送HTTP+REST请求到该定时任务服务来执行当前定时任务。

4 XXL-JOB与Elastic-Job之间区别

答:

  1. XXL-JOB是中心化管理的分布式任务调度框架,所有定时任务数据都存储在DB中。

Elastic-Job是去中心化管理的分布式任务调度框架,实现思路基于Quartz数据库高可用机制实现。

  1. XXL-Job支持动态扩容,配置中配置的分片数会根据集群中实际可用的机器数动态分片,当集群中实际可用机器数大于配置的分片数时,会动态分配,不会存在机器闲置的情况,机器利用率高。

Elastic-Job不支持动态扩容,代码中写死分片是多少就少多少,当集群中实际可用机器数大于配置的分片数时,不会动态分配,只会根据写死的分片数进行分片,存在机器限制的情况,机器利用率低。

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

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

相关文章

window安装MongoDB

安装直接先去官网下载 Download MongoDB Community Server | MongoDB 安装后如下,我们直接双击运行, 这里记得选下面(可以自己选择安装盘符位置),上面第一个会自动帮你安装到C盘,然后选择下一步 ,这里勾选就会选择去自…

win10电脑出现网络问题时,如何解决?

我们的Windows可能会出现各种网络连接问题: 尝试连接Wi-Fi网络时出现错误:Windows无法连接到此网络;可以通过Wifi访问互联网,但通过电缆访问以太网却无法正常工作;尝试通过电缆连接互联网时出现错误: Wind…

MATLAB 之 文件操作

这里写目录标题 一、文件操作1. 文件打开与关闭1.1 fopen 函数1.2 fclose 函数 2. 文件的读写2.1 fscanf 函数2.2 fprintf 函数2.3 fgetl 与 fgets函数2.4 textscan 函数2.5 fread 函数2.6 fwrite 函数 3. 数据文件定位3.1 fseek 函数3.2 ftell 函数3.3 feof 函数3.4 ferror 函…

如何使用chatgpt写文章

最近,我身边的朋友都在说ChatGPT,说它是写作的神器,能够帮助他们创作出优质的文章。也许有些人会感到迷惑,什么是ChatGPT?如何使用它来写文章呢? 今天,我将为你揭秘一切!不仅提供详…

NXP i.MX 6ULL工业开发板硬件说明书( ARM Cortex-A7,主频792MHz)

前 言 本文档主要介绍TLIMX6U-EVM评估板硬件接口资源以及设计注意事项等内容。 创龙科技TLIMX6U-EVM是一款基于NXP i.MX 6ULL的ARM Cortex-A7高性能低功耗处理器设计的评估板,由核心板和评估底板组成。核心板经过专业的PCB Layout和高低温测试验证,稳…

基于Springboot+vue的垃圾分类网站设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

Linux下软件安装的命令

源码安装 以源代码安装软件,每次都需要配置操作系统、配置编译参数、实际编译,最后还要依据个人喜好的方式来安装软件。这个过程很麻烦很累人。 RPM安装软件的默认路径: 注意: /etc 配置文件放置目录/usr/bin 一些可执行文件/usr/lib 一些程…

星辰秘典:探索Python项目的神秘力量——贪吃蛇

✨博主:命运之光 🌸专栏:星辰秘典:探索Python项目的神秘力量 🐳专栏:web开发(html css js) ❤️专栏:Java经典程序设计 ☀️博主的其他文章:点击进入博主的主…

Flutter GetX使用

下载地址&#xff1a; https://pub-web.flutter-io.cn/packages/get 导入依赖&#xff1a; dependencies:get: ^4.6.5导入头文件&#xff1a; import package:get/get.dart;使用 Obx() 、 GetX<T>() 创建全局数据 Counter&#xff0c;继承 GetxController&#xff1a…

JAVA - equal 和 == 等号比较

号 号比较的是栈中的数据 可以用于基本数据类型和引用类型 对于基本数据类型&#xff0c;数据存储在栈中&#xff0c;因此判断的是值是否相同 对于引用数据类型&#xff0c;栈中存储的是对象在堆中的引用地址&#xff0c;因此比较的是对象在栈中保存的引用&#xff08;地址&a…

基于SpringBoot+Hadoop+Vue的企业网盘系统

完整资料进入【数字空间】查看——baidu搜索"writebug" 1.1.1 选题的背景 随着信息网络技术的迅猛发展&#xff0c;云计算技术从它的概念提出已经开始在实际生产环境中使用了。大部分的东西都已经慢慢云端化&#xff0c;这种新型的技术也受到许多互联网人员的关注&a…

ARM CORETEX M0简介

ARM CORETEX M0简介 1. M0处理器简单框图 处理器内核&#xff1a;逻辑控制与运算 内部总线系统&#xff1a;单总线将处理器与外部的存储器和外部连接&#xff0c;进行数据交互&#xff08;冯诺依曼架构&#xff0c;数据与指令一起&#xff09; NVIC&#xff1a;嵌套向量中断控…

RabbitMQ部署

文章目录 RabbitMQ部署指南1.单机部署1.1.下载镜像1.2.安装MQ RabbitMQ部署指南 RabbitMQ是基于Erlang语言开发的开源消息通信中间件&#xff0c;官网地址&#xff1a;https://www.rabbitmq.com Erlang语言: 面向并发的编程语言&#xff0c;天生为了分布式系统而设计的 1.单机…

好用的网址6

PPT课件网&#xff1a;http://www.pptkj.net/ ImgUpscaler&#xff1a;AI Image Upscaler - Upscale Photo, Cartoons in Batch Free 加强图片 AI Draw&#xff1a;AI Draw | Convert Images to One-Line Drawings with AI ZToDoList&#xff1a;https://www.ztodolis…

elementUI 表格页面层级嵌套过多不及时刷新/错位的解决办法

1.强制刷新(可能会影响性能) //(嵌套过深需要强制刷新数据) forceUpdate() {this.$forceUpdate(); }, 2.页面重新布局(适用于表格错位等问题) 前提需要绑定: <el-form ref"table"></el-form> this.$refs["table"][0].doLayout(); //重新布局

124. 二叉树中的最大路径和

二叉树中的 路径 被定义为一条节点序列&#xff0c;序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点&#xff0c;且不一定经过根节点。 路径和 是路径中各节点值的总和。 给你一个二叉树的根节点 root &#xff0c…

JavaScript--改变 HTML 的值

要改变 HTML 元素的值&#xff0c;可以使用以下方法&#xff1a; 1.使用元素节点的 innerText 属性来改变元素的文本内容。 例如&#xff1a;element.innerText 新的文本内容; 2.使用元素节点的 innerHTML 属性来改变元素的 HTML 内容。 例如&#xff1a;element.innerHTML …

java通过url获取视频时长(无需下载文件)

1、导入架包 <!-- jave 核心依赖 --><dependency><groupId>ws.schild</groupId><artifactId>jave-core</artifactId><version>2.4.6</version></dependency><!-- 根据不同操作系统引入不同FFmpeg包 --><!-- wi…

性能测试工具 jmeter 录制脚本,传递 cookie,循环执行接口

目录 前言&#xff1a; 代理录制脚本 循环重复添加接口 登录并传递 cookie 给新建产品接口 循环执行脚本 前言&#xff1a; 在使用JMeter进行性能测试时&#xff0c;录制脚本是一种常用的方法。录制脚本可以帮助你捕获和重放用户与应用程序之间的交互&#xff0c;以模拟真…

【线程概念和线程控制】

目录 1 :peach:线程概念 :peach:1.1 :apple:什么是线程&#xff1f;:apple:1.2 :apple:线程的优点和缺点:apple:1.3 :apple:页表的大小:apple:1.4 :apple:线程异常和用途:apple:1.5 :apple:进程VS线程:apple: 2 :peach:线程控制:peach:2.1 :apple:POSIX线程库:apple:2.2 :apple…