ElasticJob怎么使用?

我们使用ElasticJob需要以下步骤: 1. 添加依赖 2. 配置任务(可以使用Spring命名空间配置或Java配置) 3. 实现任务逻辑(实现SimpleJob、DataflowJob等接口) 4. 启动任务 下面是一个详细的示例,包括Spring Boot集成ElasticJob的步骤。 注意:ElasticJob有两个版本:ElasticJob-Lite和ElasticJob-Cloud。我们这里使用ElasticJob-Lite(轻量级无中心化解决方案)。 步骤1:添加Maven依赖 在pom.xml中添加以下依赖:```xml<dependency> <groupId>org.apache.shardingsphere.elasticjob</groupId> <artifactId>elasticjob-lite-spring-boot-starter</artifactId> <version>3.0.1</version> <!-- 请使用最新版本 --></dependency>``` 步骤2:配置ElasticJob(这里使用Spring Boot的application.properties配置) 在application.properties中配置注册中心(Zookeeper)和任务参数:```properties# 注册中心配置elasticjob.reg-center.server-lists=localhost:2181elasticjob.reg-center.namespace=elasticjob-demo# 任务配置(这里配置一个简单任务)elasticjob.jobs.mySimpleJob.elastic-job-class=com.example.demo.job.MySimpleJobelasticjob.jobs.mySimpleJob.cron=0/5 * * * * ?elasticjob.jobs.mySimpleJob.sharding-total-count=3elasticjob.jobs.mySimpleJob.overwrite=true``` 步骤3:编写任务类(实现SimpleJob接口)```javapackage com.example.demo.job;import org.apache.shardingsphere.elasticjob.api.ShardingContext;import org.apache.shardingsphere.elasticjob.simple.job.SimpleJob;public class MySimpleJob implements SimpleJob { @Override public void execute(ShardingContext shardingContext) { // 根据分片项执行任务 System.out.println("分片项: " + shardingContext.getShardingItem() + ", 总分片数: " + shardingContext.getShardingTotalCount() + ", 任务参数: " + shardingContext.getJobParameter()); // 实际业务逻辑 switch (shardingContext.getShardingItem()) { case 0: // 处理第一片数据 break; case 1: // 处理第二片数据 break; case 2: // 处理第三片数据 break; } }}``` 步骤4:启动Spring Boot应用 如果需要使用Java配置方式(代替properties配置),可以创建一个配置类:```javaimport org.apache.shardingsphere.elasticjob.lite.api.bootstrap.impl.ScheduleJobBootstrap;import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configurationpublic class ElasticJobConfig { @Autowired private ZookeeperRegistryCenter regCenter; @Bean(initMethod = "schedule") public ScheduleJobBootstrap mySimpleJob(MySimpleJob mySimpleJob) { return new ScheduleJobBootstrap(regCenter, mySimpleJob, JobConfiguration.newBuilder("mySimpleJob", 3) // 任务名称和分片总数 .cron("0/5 * * * * ?") // cron表达式 .jobParameter("参数") // 任务参数 .overwrite(true) // 是否覆盖配置 .build()); }}``` 注意:如果使用Java配置,需要同时配置Zookeeper注册中心:```java@Beanpublic ZookeeperRegistryCenter regCenter() { // 配置Zookeeper ZookeeperConfiguration zkConfig = new ZookeeperConfiguration("localhost:2181", "elasticjob-demo"); return new ZookeeperRegistryCenter(zkConfig);}``` 步骤5:分片策略 ElasticJob可以将任务拆分成多个分片,每个分片由不同的服务器执行。你可以在任务中根据分片项处理不同的数据。 例如,处理数据库数据时,可以这样分片:```java@Overridepublic void execute(ShardingContext shardingContext) { // 获取分片项和总分片数 int shardingItem = shardingContext.getShardingItem(); int shardingTotalCount = shardingContext.getShardingTotalCount(); // 根据分片项查询数据(例如:按ID取模) List<Long> data = getDataFromDatabase(); for (Long id : data) { if (id % shardingTotalCount == shardingItem) { // 处理这个数据 process(id); } }}``` 步骤6:监听器(可选) 你可以添加任务监听器来监控任务执行情况:```javapublic class MyJobListener implements ElasticJobListener { @Override public void beforeJobExecuted(ShardingContexts shardingContexts) { System.out.println("任务开始"); } @Override public void afterJobExecuted(ShardingContexts shardingContexts) { System.out.println("任务结束"); }}``` 然后在任务配置中添加监听器:```java@Bean(initMethod = "schedule")public ScheduleJobBootstrap mySimpleJob(MySimpleJob mySimpleJob) { return new ScheduleJobBootstrap(regCenter, mySimpleJob, JobConfiguration.newBuilder("mySimpleJob", 3) .cron("0/5 * * * * ?") .jobListenerTypes("myJobListener") // 监听器名称(需要将监听器注册为Bean) .overwrite(true) .build());}// 注册监听器Bean@Beanpublic MyJobListener myJobListener() { return new MyJobListener();}``` 步骤7:错误处理 任务执行过程中出现异常,ElasticJob会进行重试(可配置)并记录错误日志。你也可以在任务中自己捕获异常处理。 总结: 使用ElasticJob的关键步骤: 1. 引入依赖 2. 配置注册中心(Zookeeper) 3. 定义任务(实现SimpleJob等接口) 4. 配置任务(cron表达式、分片数等) 5. 启动任务(通过Spring Boot自动启动或手动调度) 更多详细配置请参考官方文档:https://shardingsphere.apache.org/elasticjob/current/cn/overview/

ElasticJob 使用详解

ElasticJob 是一个分布式调度解决方案,提供分布式任务调度、弹性扩容缩容、作业分片等功能。下面我将详细介绍如何在 Spring Boot 中使用 ElasticJob。

环境准备

1. 添加 Maven 依赖

xml

<dependencies><!-- ElasticJob 核心依赖 --><dependency><groupId>org.apache.shardingsphere.elasticjob</groupId><artifactId>elasticjob-lite-spring-boot-starter</artifactId><version>3.0.1</version> <!-- 使用最新版本 --></dependency><!-- Zookeeper 注册中心 --><dependency><groupId>org.apache.curator</groupId><artifactId>curator-recipes</artifactId><version>5.2.0</version></dependency>
</dependencies>

2. 配置文件 (application.yml)

yaml

elasticjob:reg-center:server-lists: localhost:2181  # Zookeeper 地址namespace: elasticjob-demo    # 命名空间

基础使用

1. 创建简单任务

java

import org.apache.shardingsphere.elasticjob.api.ShardingContext;
import org.apache.shardingsphere.elasticjob.simple.job.SimpleJob;
import org.springframework.stereotype.Component;@Component
public class MySimpleJob implements SimpleJob {@Overridepublic void execute(ShardingContext context) {// 获取分片信息int shardingItem = context.getShardingItem();int totalShards = context.getShardingTotalCount();System.out.printf("执行分片任务: %d/%d, 参数: %s%n", shardingItem, totalShards,context.getJobParameter());// 业务逻辑处理switch (shardingItem) {case 0: processShard0();break;case 1:processShard1();break;// ... 其他分片}}private void processShard0() {// 处理分片0的任务}private void processShard1() {// 处理分片1的任务}
}

2. 配置任务

java

import org.apache.shardingsphere.elasticjob.lite.api.bootstrap.impl.ScheduleJobBootstrap;
import org.apache.shardingsphere.elasticjob.reg.zookeeper.ZookeeperRegistryCenter;
import org.apache.shardingsphere.elasticjob.simple.job.SimpleJob;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class ElasticJobConfig {@Autowiredprivate ZookeeperRegistryCenter regCenter;@Autowiredprivate MySimpleJob mySimpleJob;@Bean(initMethod = "schedule")public ScheduleJobBootstrap scheduleMySimpleJob() {return new ScheduleJobBootstrap(regCenter, mySimpleJob, createJobConfiguration());}private JobConfiguration createJobConfiguration() {// 创建作业配置return JobConfiguration.newBuilder("mySimpleJob", 3) // 作业名称,分片总数.cron("0/5 * * * * ?")   // 每5秒执行一次.shardingItemParameters("0=A,1=B,2=C") // 分片参数.jobParameter("globalParam") // 作业自定义参数.overwrite(true)            // 本地配置是否覆盖注册中心配置.build();}
}

核心功能详解

1. 分片机制

ElasticJob 的核心功能是将任务拆分成多个分片,由不同节点并行处理:

java

public void execute(ShardingContext context) {// 获取当前分片项int shardingItem = context.getShardingItem();// 获取所有待处理数据IDList<Long> allIds = fetchAllDataIds();// 根据分片规则处理数据for (Long id : allIds) {if (id % context.getShardingTotalCount() == shardingItem) {processData(id);}}
}

2. 弹性扩容

当增加或减少服务实例时,ElasticJob 会自动重新分配分片:

text

初始状态(2节点):
节点1:分片0,1
节点2:分片2扩容后(3节点):
节点1:分片0
节点2:分片1
节点3:分片2

3. 任务类型

3.1 简单任务 (SimpleJob)

java

public class MySimpleJob implements SimpleJob {@Overridepublic void execute(ShardingContext context) {// 实现业务逻辑}
}
3.2 数据流任务 (DataflowJob)

java

public class MyDataflowJob implements DataflowJob<Order> {@Overridepublic List<Order> fetchData(ShardingContext context) {// 获取待处理数据return fetchUnprocessedOrders(context);}@Overridepublic void processData(ShardingContext context, List<Order> data) {// 处理数据processOrders(data);}
}
3.3 脚本任务 (ScriptJob)

yaml

elasticjob:jobs:myScriptJob:job-type: SCRIPTprops:script.command-line: "echo Hello ElasticJob"

4. 事件追踪

java

@Bean
public ScheduleJobBootstrap scheduleJob() {return new ScheduleJobBootstrap(regCenter,myJob,JobConfiguration.newBuilder("myJob", 3).cron("0/5 * * * * ?").eventTraceRdbDataSource("dataSource") // 配置数据源.build());
}

5. 故障转移

java

JobConfiguration.newBuilder("myJob", 3).cron("0/5 * * * * ?").failover(true) // 开启故障转移.build()

高级配置

1. 作业监听器

java

public class MyJobListener implements ElasticJobListener {@Overridepublic void beforeJobExecuted(ShardingContexts contexts) {System.out.println("作业开始执行: " + contexts.getJobName());}@Overridepublic void afterJobExecuted(ShardingContexts contexts) {System.out.println("作业执行完成: " + contexts.getJobName());}
}// 注册监听器
@Bean
public ElasticJobListener myJobListener() {return new MyJobListener();
}// 配置到任务
JobConfiguration.newBuilder("myJob", 3).jobListenerTypes("myJobListener") // 监听器Bean名称.build()

2. 作业错误处理策略

java

JobConfiguration.newBuilder("myJob", 3).jobErrorHandlerType("LOG") // 错误处理策略.build()

支持策略:

  • LOG:记录日志不中断作业

  • THROW:抛出异常中断作业

  • IGNORE:忽略异常

  • EMAIL:发送邮件(需自定义)

3. 自定义错误处理器

java

public class MyErrorHandler implements JobErrorHandler {@Overridepublic void handleException(String jobName, Throwable cause) {// 自定义错误处理逻辑sendAlert(jobName, cause);}
}// 注册为Bean
@Bean
public JobErrorHandler myErrorHandler() {return new MyErrorHandler();
}// 配置到任务
JobConfiguration.newBuilder("myJob", 3).jobErrorHandlerType("myErrorHandler").build()

Spring Boot 自动配置

1. 使用 @ElasticJobScheduler 注解

java

@ElasticJobScheduler(name = "myAutoJob", cron = "0/10 * * * * ?",shardingTotalCount = 3,jobParameters = "autoParam",overwrite = true
)
public class MyAutoJob implements SimpleJob {@Overridepublic void execute(ShardingContext context) {System.out.println("自动配置任务执行");}
}

2. 配置文件配置

yaml

elasticjob:jobs:myConfigJob:elastic-job-class: com.example.MySimpleJobcron: 0/5 * * * * ?sharding-total-count: 3sharding-item-parameters: 0=A,1=B,2=Cjob-parameters: configParamoverwrite: truejob-error-handler-type: LOG

运维管理

1. 控制台安装

  1. 下载 ElasticJob-Lite-UI

  2. 启动:

    bash

    tar -zxvf apache-shardingsphere-elasticjob-${version}-lite-ui-bin.tar.gz
    cd apache-shardingsphere-elasticjob-${version}-lite-ui-bin
    bin/start.sh

2. 常用 REST API

  • 查看作业状态:GET /api/jobs/{jobName}/status

  • 触发作业执行:POST /api/jobs/{jobName}/trigger

  • 禁用作业:POST /api/jobs/{jobName}/disable

  • 启用作业:POST /api/jobs/{jobName}/enable

最佳实践

1. 分片策略设计

java

public void execute(ShardingContext context) {// 1. 获取所有分片数据List<Long> allIds = getAllDataIds();// 2. 计算分片处理的数据范围List<Long> shardIds = allIds.stream().filter(id -> id % context.getShardingTotalCount() == context.getShardingItem()).collect(Collectors.toList());// 3. 处理分片数据processShardData(shardIds);
}

2. 数据库分片示例

java

@Autowired
private OrderRepository orderRepository;public void execute(ShardingContext context) {// 根据分片查询数据Pageable pageable = PageRequest.of(0, 100);int mod = context.getShardingTotalCount();int remainder = context.getShardingItem();List<Order> orders = orderRepository.findByStatusAndShard("PENDING",mod,remainder,pageable);// 处理订单processOrders(orders);
}// Repository 接口
@Query("SELECT o FROM Order o WHERE o.status = :status " + "AND MOD(o.id, :mod) = :remainder")
List<Order> findByStatusAndShard(@Param("status") String status,@Param("mod") int mod,@Param("remainder") int remainder,Pageable pageable);

3. 幂等性设计

java

public void processOrder(Order order) {// 1. 检查是否已处理if (order.isProcessed()) {return;}// 2. 加分布式锁try (Lock lock = lockService.acquireLock("order_" + order.getId())) {// 3. 再次检查(双重检查)if (orderRepository.isProcessed(order.getId())) {return;}// 4. 处理业务process(order);// 5. 更新状态order.markAsProcessed();orderRepository.save(order);}
}

常见问题解决

1. Zookeeper 连接问题

yaml

# 增加连接超时配置
elasticjob:reg-center:server-lists: localhost:2181namespace: elasticjob-demobase-sleep-time-milliseconds: 1000max-sleep-time-milliseconds: 3000max-retries: 3

2. 任务不执行检查

  1. 确认 Zookeeper 是否正常运行

  2. 检查作业配置是否同步到注册中心

  3. 查看节点日志是否有异常

  4. 确认作业是否被禁用

3. 分片不均问题

使用自定义分片策略:

java

public class CustomShardingStrategy implements JobShardingStrategy {@Overridepublic Map<String, List<Integer>> sharding(List<String> servers, String jobName, int shardingTotalCount) {// 自定义分片逻辑Map<String, List<Integer>> result = new LinkedHashMap<>();for (int i = 0; i < servers.size(); i++) {result.put(servers.get(i), new ArrayList<>());}for (int i = 0; i < shardingTotalCount; i++) {int index = i % servers.size();result.get(servers.get(index)).add(i);}return result;}
}// 配置使用
JobConfiguration.newBuilder("myJob", 3).jobShardingStrategyType("com.example.CustomShardingStrategy").build()

总结

ElasticJob 使用核心步骤:

  1. 添加依赖:引入 ElasticJob 和 Zookeeper 依赖

  2. 配置注册中心:在配置文件中设置 Zookeeper 地址

  3. 实现任务:根据需求选择 SimpleJob/DataflowJob/ScriptJob

  4. 配置任务:通过 Java Config 或注解配置任务参数

  5. 分片设计:合理设计分片策略处理分布式数据

  6. 运维管理:使用控制台或 API 管理任务

关键优势:

  • 分布式调度:支持任务在集群中分片执行

  • 弹性扩容:自动感知节点变化并重新分片

  • 故障转移:自动转移失败任务分片

  • 作业治理:提供丰富的运维管理功能

生产环境建议:

  1. 为 Zookeeper 配置集群(至少3节点)

  2. 重要任务配置事件追踪和监控报警

  3. 定期检查控制台的任务执行情况

  4. 设计任务时考虑幂等性和事务一致性

通过合理使用 ElasticJob,可以构建高可靠、可扩展的分布式任务调度系统,有效解决传统定时任务在分布式环境中的各种问题。

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

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

相关文章

TCP协议的特点和首部格式

文章目录TCP协议是什么&#xff1f;TCP协议的主要特点1. 面向连接2. 可靠传输3. 流量控制4. 拥塞控制TCP首部格式源端口和目标端口&#xff08;各16位&#xff09;序列号&#xff08;32位&#xff09;确认号&#xff08;32位&#xff09;数据偏移&#xff08;4位&#xff09;保…

IO流-文件的常用方法

1.关于java.io.File类- File类只能表示计算机中的文件或目录而不能获取或操作文件- 通过File类获得到文件的基本信息&#xff0c;如文件名、大小等&#xff0c;但不能获取文件内容- java中表示文件路径分隔符使用"/"或"\\"- File类中的构造方法- File(&quo…

AUTOSAR进阶图解==>AUTOSAR_SRS_E2E

AUTOSAR E2E通信保护解析 AUTOSAR End-to-End通信保护机制详解与应用目录 概述 1.1. AUTOSAR E2E通信保护的作用 1.2. E2E通信保护的应用场景AUTOSAR E2E架构 2.1. E2E组件层次结构 2.2. E2E库和E2E转换器E2E监控状态机 3.1. 状态定义与转换 3.2. 状态机实现E2E保护数据交换流…

镜像快速部署ollama+python+ai

算力租赁入口&#xff1a;https://www.jygpu.com为大家提供以上镜像快速部署方式&#xff0c;节约大家环境部署时间一键部署的便捷性传统自建GPU服务器需要经历复杂的硬件采购、驱动安装、环境配置等繁琐步骤&#xff0c;而现代​​GPU租赁价格对比​​显示&#xff0c;容器化平…

使用Gemini API开发领域智能聊天机器人的思路

以下是使用 Gemini API 开发软件自动化测试专家领域专属智能聊天机器人的详细思路及具体实现过程&#xff1a; 阶段一&#xff1a;基础准备与规划 (Foundation & Planning) 这个阶段的目标是明确方向、准备好所有必要的工具和凭证。 步骤 1&#xff1a;明确聊天机器人的目…

第13届蓝桥杯Python青少组_省赛_中/高级组_2022年4月17日真题

更多内容请查看网站&#xff1a;【试卷中心 -----> 蓝桥杯----> Python----> 省赛】 网站链接 青少年软件编程历年真题模拟题实时更新 第13届蓝桥杯Python青少组_省赛_中/高级组_2022年4月17日真题 一、选择题 第 1 题 下列二进制数中最大的是&#xff08; &a…

sqli-labs:Less-17关卡详细解析

1. 思路&#x1f680; 本关的SQL语句为&#xff1a; $sql"SELECT username, password FROM users WHERE username $uname LIMIT 0,1"; $update"UPDATE users SET password $passwd WHERE username$row1";注入类型&#xff1a;字符串型&#xff08;单引号…

文心一言:推动 AIGC 领域进步

文心一言:推动AIGC领域进步 关键词:文心一言、AIGC、自然语言处理、多模态生成、大模型、技术架构、应用场景 摘要:本文深入剖析百度文心一言在AIGC(人工智能生成内容)领域的技术创新与实践成果。通过解析其核心技术架构、多模态生成原理、工程化落地策略及行业应用案例,…

第15讲——微分方程

文章目录思维导图基本概念微分方程及其阶思维导图 基本概念 微分方程及其阶

RAGFlow Agent 知识检索节点源码解析:从粗排到精排的完整流程

RAGFlow Agent 知识检索节点深度解析&#xff1a;从查询到重排序的完整流程 1. 总体架构概览 RAGFlow Agent 中的知识检索&#xff08;Retrieval&#xff09;节点是整个RAG系统的核心组件&#xff0c;负责从知识库中找到与用户查询最相关的文档片段。检索流程可以分为以下几个…

Python算法实战:从排序到B+树全解析

Python中常见的算法示例 以下是Python中常见的算法示例,涵盖基础算法和经典问题解决方案,代码可直接运行: 排序算法 冒泡排序 def bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, n-i-1):if arr[j] > arr[j+1]:arr[j], arr[j+1] = arr[j+1], arr…

【C++算法】85.BFS解决最短路径问题_最小基因变化

文章目录题目链接&#xff1a;题目描述&#xff1a;解法C 算法代码&#xff1a;题目链接&#xff1a; 433. 最小基因变化 题目描述&#xff1a; 解法 先看懂题目 先把这个问题转化&#xff1a;图论问题 边权为1的最短路问题。 为什么可以这么想&#xff1f;&#xff01; 因为每…

基于单片机汽车少儿安全预警系统

文章目录一、前言1.1 项目介绍【1】项目开发背景【2】设计实现的功能【3】项目硬件模块组成【4】设计意义【5】市面上同类产品研究现状【6】摘要1.2 设计思路1.3 系统功能总结1.4 开发工具的选择【1】设备端开发【2】上位机开发1.5 模块的技术详情介绍1.6 框架图框架图说明&…

Mac 上配置jdk 环境变量

核心步骤是设置 JAVA_HOME 变量&#xff0c;并将其 bin 目录添加到系统的 PATH 变量中。 macOS 从 Catalina (10.15) 版本开始&#xff0c;默认的终端 Shell 从 bash 切换到了 zsh。因此&#xff0c;你需要先确定你正在使用的 Shell&#xff0c;然后编辑对应的配置文件。步骤一…

硬件-音频学习DAY1——音箱材料选择:密度板为何完胜实木

每日更新教程&#xff0c;评论区答疑解惑&#xff0c;小白也能变大神&#xff01;" 目录 一.音箱材料选择的关键因素 二.密度板的声学优势 三.材料稳定性的对比 四.生产工艺的适应性 五.成本与环保的平衡 六.特殊场景的例外情况 七.消费者选购指南 八.行业发展趋势…

微波(Microwave)与毫米波(Millimeter wave)简介

一、电磁波频段划分&#xff0c;微波与毫米波所属 二、微波 可以看出UHF及以上的频段都可以统称为微波。记得之前上微波技术实验课的时候会接触比巴掌还大的金属波导&#xff0c;后来每次看到微波技术的时候都还是感到陌生。今天突然想到&#xff0c;不像在手机里就能完成的5G频…

ObjectMapper教程

ObjectMapper 简介ObjectMapper 是 Jackson 库的核心类&#xff0c;用于 Java 对象与 JSON 数据之间的相互转换。它支持序列化&#xff08;对象转 JSON&#xff09;和反序列化&#xff08;JSON 转对象&#xff09;&#xff0c;广泛应用于 REST API、数据存储和配置处理等场景。…

【Node.js安装注意事项】-安装路径不能有空格

问题描述&#xff1a;在项目中使用 nodemon时&#xff0c;出现了nodemon 启动问题&#xff1a;nodemon : 无法将“nodemon”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。解决办法&#xff1a;在网上找了很多教程&#xff0c;试了很多办法&#xff0c;什么重新配置环境…

Shader开发(六)什么是着色器

在前面的章节中&#xff0c;我们简要提到了着色器的概念&#xff0c;现在有了渲染管线的基础知识&#xff0c;我们可以更深入地理解着色器的真正含义。着色器&#xff08;Shader&#xff09;是运行在图形处理单元&#xff08;GPU&#xff09;上的专用程序&#xff0c;这与我们日…

操作系统-lecture4(进程的调度)

进程的切换 接下来需要了解两个问题 谁触发了进程切换进程切换的动作 中断技术 中断源 中断处理过程&#xff08;陷阱机制&#xff09; 特权指令和非特权指令 Privileged Instructions&#xff1a;特权指令 •The Instructions that can run only in Kernel Mode are called…