开发者社区> 咖啡机(K.F.J)> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Node.js躬行记(7)——定时任务的进化史

简介:   公司主营的是直播业务,会很许多打榜活动,也就是按主播收到的礼物或收益进行排序,排在前面的会有相应奖励。   纯手工时代,每接到一个活动,就重新写一份,第一次写完。之后就是复制黏贴,再修改,每次活动,测试人员测试也蛮苦恼的。   虽然复制的是之前的代码,已经经历过一轮测试,但手工操作难免会有这个那个的细节问题,都得重新测试一遍。
+关注继续查看

一、纯手工


  公司主营的是直播业务,会很许多打榜活动,也就是按主播收到的礼物或收益进行排序,排在前面的会有相应奖励。

  纯手工时代,每接到一个活动,就重新写一份,第一次写完。之后就是复制黏贴,再修改,每次活动,测试人员测试也蛮苦恼的。

  虽然复制的是之前的代码,已经经历过一轮测试,但手工操作难免会有这个那个的细节问题,都得重新测试一遍。

  而且定时任务的测试成本还是蛮高的,因为每次测试就要修改时间,来模拟真实环境。测试环境各个组用的都是一套,改了服务器时间有时候还会影响其他组的开发,所以测起来要快而准。

  定时任务(node-schedule)需要三个参数:开始时间、结束时间和循环规则,在测试时这三个参数可能会与线上环境不同,榜单依赖的礼物ID、统计时间在正式和测试也有可能不同。

  所以一开始的时候,测试环境测好后,在发到线上之前还要做一次参数的修改,这其中也有隐患,写错的话不但要修改代码,还要重新合代码,再发布,得走一整套流程。


二、参数配置化


  像定时任务的参数、榜单的参数诸如缓存key、礼物ID、统计时间等,都可配置化。

  得益于之前开发了一套通用配置系统,可将这些参数以JSON格式写到输入库中。


50.png


  测试环境配置一套,正式环境也配置一套,代码可互不影响。

  并且在更新参数后,不需要再合代码了,只要重新发布一次即可。

  因为定时任务的规则只会在发布时配置一次,后面参数更新后,若不发布,新的参数就不会被执行。


三、定时任务配置化


  虽然参数配置化后,省了合代码,但复制黏贴仍然还要做一次。

  于是在分析运营的需求后,抽象出一套高度可配置化的榜单任务,在后台管理系统中单独开一菜单,将动态的参数全部变得可配置。


51.png


  得益于之前抽象出了一套通用模板组件,这个页面只花了两个半小时就搭建好了,包括后端接口和列表页面,在列表页面可控制活动的上下线。


52.png


  数据来源有了之后,就要写定时任务中的逻辑了,其实就是从数据库中读取字段,将字段作为参数传递给榜单方法。

  当然,若有新活动上线,代码还是要重新发布一次的,这一步还没做到自动化。

  未来还有很大的优化空间,像代码发布自动化,榜单前端页面可配置化,目前每次都要重新做一份,其实也可以抽象出来做成可配置化,甚至可以做好页面编辑器,自定义后直接发布。

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Node.js躬行记(3)——命令行工具
  创建一个空目录,然后通过npm init命令初始化package.json文件,并按提示输入相关信息或直接回车使用默认信息,生成的内容如下所示。
28 0
Node.js躬行记(15)——活动规则引擎
  在日常的业务开发中,会包含许多的业务规则,一般就是用if-else硬编码的方式实现,这样就会增加逻辑的维护成本,若无注释,可能都无法理解规则意图。   因为一旦规则有所改变,那么就需要修改代码再发布代码,而在日常的开发中唯一不变的就是变化,修改规则是很常见的。   规则引擎的作用就是将决策逻辑从业务逻辑中抽离出来,使得两者可以独立于彼此,便于集中管理,减少硬编码的成本和风险,在不重启服务的情况下快速响应需求的变化。
71 0
Node.js躬行记(4)——自建前端监控系统
  这套前端监控系统用到的技术栈是:React+MongoDB+Node.js+Koa2。将性能和错误量化,解决业务和开发都不知道,只有用户知道的问题,提升业务稳定性。
65 0
10 个最佳的 Node.js 的 MVC 框架
Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用· Node.js 借助事件驱动, 非阻塞 I/O 模型变得轻量和高效, 非常适合 run across distributed devices 的 data-intensive 的实时应用·
112 0
Node.js历险记之express框架入门篇
打开微信扫一扫,关注微信公众号【数据与算法联盟】 转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thinkgamer 写在前面的话 Express 是一种保持最低程度规模的灵活 Node.js Web 应用程序框架,为 Web 和移动应用程序提供一组强大的功能。
1291 0
再撸一次简单的NODE.JS
这毕竟大势所趋,了解一下无防的。 最终,对JS的要求还是有点高。。。 以后弄过一次,很快就忘了。 再来再拾起来一下。 server.js var http = require("http"); var url = require("url"); function start(r...
824 0
node.js
关于node.js的误会      http://www.cnblogs.com/dolphinX/p/3475090.html 让我欲罢不能的node.js  http://www.cnblogs.
537 0
Node.js连接mysql
一、安装Node.js mysql驱动库   Node.js里面没有mysql模块的,我们需要安装mysql模块。我们可以使用npm(Node package manager)进行安装。这里使用到的版本为:"2.0.0-rc2。
1149 0
+关注
咖啡机(K.F.J)
每天进步一点点 研磨生活的香甜
350
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载