原来 XXL-JOB 可以这么造

XXL-JOB 零改造迁移
过去我们的 xxl-job 服务需要到 github 上面自己拉取对应的 xxl-job 服务源码,打包,部署到自己公司的服务器,然后通过 nginx 做负载均衡,配置 DNS 域名解析,最终才能看到 xxl-job 在浏览器端的展示,通常是这样的

那么现在在这里,我们将基于Serverless应用引擎SAE(Serverless App Engine)对我们传统的 XXL-JOB 进行零改造迁移。
创建 SAEJobHandler
登录 sae 控制台,控制台地址:https://sae.console.aliyun.com/,选择任务模板列表

点击【创建任务模板】

内容输入完成后点击【下一步】进行配置

这里语言选择比较熟悉的 java,JAR 包地址其实就是将开源的 xxl-job 中https://github.com/xuxueli/xxl-job的 xxl-job-executor-sample-springboot 打包之后上传在了 sae 里面,然后继续点击【下一步】

这里 cron 表达式先随便填一个,根据情况决定,点击【下一步】

确认完信息之后点击【确定创建】,完成任务模板创建。
点击【手动执行任务】跳转到任务记录列表

此时可以点击【任务 id】查看任务执行日志

点击【实时日志】可以看到任务执行日志,对于这个 SAEJobHandler,可能既是我们通常理解的 JobHandler,又不是我们通常理解的 JobHandler,日常工作中我们在用 xxl-job 的时候,会需要先去拉取 xxl-job 服务源码,然后打包部署服务,再开发对应的业务代码通过注册业务代码的 ip 地址到 xxl-job 服务的执行器管理,最后配置实现定时任务调用。而 SAE 是直接先创建一个空的执行器启动,然后其他的业务执行器可以直接引用这个执行器来加载执行。

日志显示服务启动成功,端口 9999。
创建 doJobHandler
这里的 doJobHandler 可以理解为业务 jobHandler

点击【下一步】进入配置页面

配置页面汇总,其他内容跟上一个一样,红框处有改动,继续点击【下一步】到创建成功

点击【手动执行任务】,可以查看实时日志

展示执行成功。
使用感受
整体操作下来的话,操作很流畅,很快就得到了实验成功的结果,但是有一点疑惑的是如何才能将现有的业务代码融合进当前这一套配置中呢,过去的定时任务项目中引入 xxl-job 的 jar 包之后,配置对应的 xxl-job 服务地址,如图

就可以实现在 xxl-job 服务器上的服务注册

那么现在在 Serverless 应用引擎 SAE 平台配置 xxl-job 应该算是 xxl-job 的服务端,那么实际的业务项目应该引入 xxl-job 对应的什么 jar 包以及如何操作才能上传在 SAE 平台的定时任务模板中,没有找到具体操作步骤,官方文档地址:https://help.aliyun.com/document_detail/432503.html。
另外就是假如文档给了如何改造现有项目来匹配 SAE 平台进行 xxl-job 定时任务托管的内容,那么项目中配置信息比如数据库地址,缓存地址,es 地址,以及 SAE 平台的 xxl-job 定时任务如何区分开发环境、测试环境、线上环境等这些都没有明说,不同环境不同 ip 地址与 SAE 平台之间如何连通,是否会有 ip 白名单限制,响应的网络配置还需咨询技术支持人员。
当然我相信 SAE 的产生后面一定是一个强大的团队在支撑,我的这些只是我对这款产品了解的不够透彻才有的担忧,毕竟我所用到的只是 SAE 众多功能中的一角,不是核心的功能,因此不完善也是有可能的,希望 SAE 后续文档不断丰富,demo 也不断丰富,让每一个简单的技术人简单的接入 SAE。
版权声明: 本文为 InfoQ 作者【六月的雨在InfoQ】的原创文章。
原文链接:【http://xie.infoq.cn/article/348a04dca75f2fc03e3b9b248】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论