每个码农可能都会存在一种工匠精神:虽然读懂 API,可以满足一般需求和正常的使用,但总会觉得有点不够。光会使用是不够的,我们需要梳理 Agenda 与项目之间的关系。 如上图中:在原始架构中,开奖,每个项目都会启用一个 Agenda 实例。但我们可以启用一个 Agenda 实例来处理所有项目中的任务调度,不仅可以节省 CPU 资源,还可以将 Agenda 服务化(将 Agenda 从业务中剥离,只去做纯粹的任务调度)。 按照以上想法,我们将 Agenda 的任务调度操作统一交由一个进程处理(且称之为调度进程),各个使用者只需要通过 API 对调度进程中存储的任务进行操作即可,而不必关心调度进程内部是怎么实现的。这和当前非常流行的微服务有点相似。 如何动态添加任务?我们就需要用到上一节中所遗留的方法: 4)create 在这里我们手动创建了任务,设置每隔10分调用一次任务,并保存到 mongodb 中。这样一来,我们就可以通过 API 来操作任务(添加、删除等)。 风险和收益往往是并存的。享受统一调度带来的方便之时,我们也随之承受着可能的风险:如果我们的调度进程 crash 之后,会导致所有使用者的任务都不能正常有效的执行。 我们需要将此服务做到:简单、独立、健壮,以此来满足企业级别的需求。 总结 以上就是笔者对 Agenda 介绍与探索。很多时候,我们应该避免重复造轮,才可以在满足需求的情况下,提升程序性能与工作效率。 (责任编辑:本港台直播) |