演进:新型计划任务续篇.pdfVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
演进:新型计划任务续篇.pdf

演进:新型计划任务续篇 计算机科学中的任何问题都可以⽤另外的间接层解决,但是这通常会引发另 个问 题。 -- David Wheeler 2.15.1 新型计划任务回顾 在 [1.31]-新型计划任务:以接⼜形式实现的计划任务 章中,我们讨论了PhalApi 中 对计划任务的设计和底层实现。 但对于很多应⽤,很多项⽬,或者很多同学来说,仍然⽐较⼴泛,不能直接使⽤。 这 章则专门为此⽽进⾏演进,并提供最终可⽤的计划任务调度,同时我们也会阐明 如何进⾏扩展定制。 也就是说,这 章将提供Task扩展类库的统 调度⽅式,以便在启动crontab任务后, 可以通过数据库简单配置,即可执⾏各种任务。 2.15.2 最终调度的⽅式:crontab 出于对业务的考虑,我们⾸先需要明确此crontab调度⽅式所⽀持的功能,它应该包括 但不限于: 1、通过简单的数据库配置,即可启动 个新的任务 2、具备循环调度的能⼒,并能初步防⽌并发调度 3、可以对异常的任务进⾏修复 4 、优先执⾏太远未执⾏的任务 5、⽀持本地和远程两种调度⽅式、三种MQ类型,以及扩展的能⼒ 2.15.3 核⼼时序图与分层 在原来的时序图基础上,我们可以进⾏演进的设计,追加了统 的调度后如下所⽰: 通过上⾯详细的时序图,我们可以发现⾥⾯的设计是出于这样的分层考虑: 序 层 关键 作 说明 如何使⽤ 号 启动脚 客户端可以进⾏必要 1 本 crontab .php 操作crontab执⾏的脚本 的初始化⼯作 根据进程配置的数据库表,进不需要改动,直接使 2 进程级 Task_Progress run() ⾏循环调度 ⽤ 客户端也可进⾏定制 进⾏计划任务调度的上下⽂环 3 触发器 Task_Trigger fire() 境,⽤于指定runner和mq类型 扩展,进⾏必要的操 作 MQ消 4 费与调 Task_MQ pop()和 不断消费MQ队列,并依次进 不需要改动,直接使 度 Task_Runner go() ⾏调度 ⽤,也可扩展 计划任 由客户端按接⼜形式 5 务服务 PhalApi_Api doSth() 执⾏计划任务服务 实现 虽然上⾯的层级,初看起来有点多,但我们再次验证了计算机那个伟⼤的定论:计算 机的任何问题都可以通过 个中间层来解决。 由此看出,上⾯的层级其实相当于: 客户端初始化 -- 直接使⽤ -- ⾃由组合与操作 -- 直接使⽤ -- 任务服务实现 2.16.4 进程配置的数据库表设计 CREATE TABLE `phalapi_task_progress` ( `id` bigint(20) OT ULL AUTO_I CREME T, `title` varchar(200) DEFAULT COMME T 任务标题, `trigger_class` varchar(50) DEFAULT COMME T 触发器类名, `fire_params` varchar(255) DEFAULT COMME T 需要 递的参数,格式 `interval_time` int(11) DEFAULT 0 COMME T 执⾏间隔,单位:秒 `enable` tinyint(1) DEFAULT 1 COMME T 是否启动,1启动,0禁⽌ `result` varchar(255) DEFAULT COMME T 运⾏的结果,以json格式保 `state`

文档评论(0)

tangtianbao1 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档