当前位置: 首页 > news >正文

流行网站开发框架百度网站建设

流行网站开发框架,百度网站建设,只能家居网站建设目的,个人网站设计及实现论文目录 1. 控制面的接口2.手动触发任务2. 定时任务的实现 1. 控制面的接口 服务端包含xxl-job的管理端,页面上的接口后端一系列的controller接口 appName是一个核心概念,它是指执行器应用的名称,appName是执行器的唯一标识 页面上的接口&#…

目录

  • 1. 控制面的接口
  • 2.手动触发任务
  • 2. 定时任务的实现

1. 控制面的接口

服务端包含xxl-job的管理端,页面上的接口后端一系列的controller接口

在这里插入图片描述

在这里插入图片描述

appName是一个核心概念,它是指执行器应用的名称,appName是执行器的唯一标识

页面上的接口,对应这这里一系列的controller
在这里插入图片描述

2.手动触发任务

触发任务的接口为 /jobinfo/trigger
com.xxl.job.admin.controller.JobInfoController#triggerJob

在这里插入图片描述

触发任务执行的具体实现在 JobTriggerPoolHelper ,其中创建了一个快触发线程池 fastTriggerPool 和一个慢触发线程池 slowTriggerPool ,用于隔离较慢的响应节点。

在这里插入图片描述

在触发具体任务时,根据jobId判断,若触发该jobId的耗时在1分钟内有10次超过500ms,则该jobId使用 慢线程池执行,否则使用快线程池

在这里插入图片描述

触发任务的关键方法为:com.xxl.job.admin.core.trigger.XxlJobTrigger#trigger

在这里插入图片描述

在这里插入图片描述

分片指的是任务分片广播执行的概念,当调度中心调度一个设置了分片参数的任务时,任务会被拆分成多个子任务(分片),每个分片会被分配一个唯一的序号(分片参数,通常从0开始)。
分片任务的处理主要还是在客户端,可参考如下示例
在这里插入图片描述

触发任务实际上就是发起一个http请求,但前中后会记录任务的执行结果、日志等信息,参考方法:com.xxl.job.admin.core.trigger.XxlJobTrigger#processTrigger

大体的步骤分为:

  1. 保存信息至log表
  2. 初始化TriggerParam数据
  3. 初始化客户端的ip地址(从grop中获取)
  4. 发起http调用(参考:com.xxl.job.core.biz.client.ExecutorBizClient#run
  5. 收集任务触发信息
  6. 将触发信息保存至log表中

2. 定时任务的实现

xxl-job中的定时任务是通过Cron表达式实现的,其具体的实现可参考 : com.xxl.job.admin.core.thread.JobScheduleHelper

对于定时任务的执行,其实现思路是:

  1. 线程异步轮询,计算job的下一次执行时间
  2. 线程异步轮询,计算当前时间窗口内需要执行的任务,并触发任务执行

根据Cron表达式计算任务的下一次执行时间: com.xxl.job.admin.core.thread.JobScheduleHelper#generateNextValidTime

在这里插入图片描述

JobScheduleHelper 维护了两个线程 scheduleThreadringThread ,两者分工不同:

大体来讲,scheduleThread是负责触发任务调度的线程,周期性地检查所有的任务计划(Cron表达式定义的任务),如果发现有任务到达执行时间,则将这些即将执行的任务放入到一个“时间轮”(ringData 字段,是是一个map结构),ringThread会遍历时间轮,检查每个槽位上是否有任务需要执行,一旦发现,就立即进行处理(即发起调度)

但实际上,scheduleThread的处理有很多细节:

  1. scheduleThread 周期性从数据库中查询任务,查询之前,会基于数据库xxl_job_lock表实现全局锁
  2. 批量获取任务信息后,会便利判断当前job的下一次执行时间
    1. 若待执行任务时间早于(过期了)当前时间,且大于5秒,则进行MISFIRE触发
    2. 若待执行任务时间早于当前时间不超过5秒(过期了,但在窗口内),则进行CRON触发

      由于scheduleThread周期性执行,为了处理周期间需要执行的任务,此处会判断,所触发任务后,下一次的待执行时间于当前时间相差不超过5秒,也会添加到时间轮中

    3. 若待执行时间晚于当前时间(还不需要执行),则将当前任务添加到时间轮中
  3. 更新数据库中的job信息(trigger_last_timetrigger_next_timetrigger_status
  4. 释放全局锁
  5. 若总耗时小于1000ms,则线程sleep一段时间
http://www.yayakq.cn/news/227136/

相关文章:

  • 沈阳网站建设策划做下载网站赚钱
  • 网站换肤代码青岛专业网站建设
  • 成都网站优化指导佛山设计网站
  • 豫建设标文件在哪个网站公布网络应用服务管理
  • 做空eth网站深圳网站设计公司有哪些
  • 微信公众号开发网站建设网站开发打赏功能
  • 宝安网站建设方案外包舞蹈网站建设报价
  • 内网 做 网站天津网站建设外包
  • 石景山网站制作WordPress实现微信一键登录
  • 如何查看网站开发者进出口贸易公司怎么注册
  • 商洛网站开发wordpress制作图片站
  • 定制手机网站开发wordpress加接入又拍云
  • 融资网站建设重点网站建设与设计饰品
  • 邵阳专业网站设计购物商场网站开发过程详细说明
  • 江苏林润建设工程有限公司网站搭建网站 在线浏览功能
  • wordpress怎么设置跳站外链接购物商城建设
  • 淮南网站优化公司wordpress顶踩仿织梦
  • 顺德做网站公司哪家好工程中标查询网站
  • 济南网站建设seo优化抖音代运营陪跑
  • 建站加盟现在最火的社交电商平台
  • 郑州网站建设目标wordpress标点出现在行首
  • 什么是域名为什么需要它小红书怎么做关键词排名优化
  • 耳机商城网站开发网站建设配色方案
  • 电子商务网站与建设课件学校网站建设先进事迹
  • wordpress子站服务器维护通知
  • 漯河做网站优化徐州网站建设网络推广
  • 做网站需要申请专利吗wordpress付款后查看内容
  • 一个网站的入口网页又称为微信开放平台的应用场景
  • 自己的电脑做服务器搭建网站使用百度地图导航收费吗
  • 一般公司网站用什么域名套餐北京市教学名师项目建设网站