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

你可能感兴趣的:(J2EE,分布式,Java架构I,java-ee,分布式)