专栏首页九州牧云分布式系统中的定时任务全解(四)--补充

分布式系统中的定时任务全解(四)--补充

概述

这个系列计划里面是只有3篇,但是在后续使用的过程中发现了新的问题,以及发现了一个很重要但是没有写上的部分。

遇到的问题是在服务器上运行时,有可能是服务器的CPU和内存资源比个人笔记本上的资源要强大,导致在服务器上采用第三篇 分布式系统中的定时任务全解(三)中说到的“如果我需要在job中重新设定下次触发的时间怎么办”中给出的方式,在日志中看到在reschedule的时候,同时出发最多接近10次。

第三篇没有写上的内容是,如何看zookeeper上的节点信息。

接下来一起看一下以上两个点。

使用elastic-job在job内部调用reschedule遇到的问题

在job内部调用reschedule时由于第三篇中说到的下次触发时间计算的问题,导致在reschedule的时刻任务被同时触发了多次,尤其是当服务器空闲资源比较多,或者服务器资源比较强大的时候,触发的次数会更多。

对于这个问题,我们期初使用的是Thread.sleep(1)的方式规避,最好的情况下定时任务1分钟能够执行60,000次。如果用于处理订单的话,这个处理能力对于小型系统来说相当好了,足够用了。

但是,同时触发的现象确实感觉十分不舒服,并且会导致很多无效日志的输出,造成日志体积增大。

由于当前我们的系统规模较小,订单量也小,使用了Thread.sleep(500)的激进方案,这样算下来1分钟内最多最好也就能够处理120次,虽然这个数字很小,但是对我们当前情况来说足够用。

对于这个问题,如果仍然基于elastic-job框架最扩展的话,我们想可以这样处理:借助elastic-job的分片机制,在把待处理订单号插入队列中时添加不同的序列标记,可以和分片数相同。那么总体处理能力就会和服务器的数量成正比:120xN次(N是服务器数量)。这就达到了处理能力的水平扩展。

我如何知道自己任务的执行情况和任务节点的状态信息

这一点有两种方法,一个就是部署一个elastic-job的console服务,通过网页端查看任务的执行情况和任务节点的状态信息。

如果觉得不熟一套console服务必要性不大,也可以自己到zookeeper上查看各个节点的状态。zookeeper有一个eclispe的插件,可以直接在eclipse里面看到zk的节点数据。

安装插件可以参考这篇文章:http://chinazzlm.blog.163.com/blog/static/1618435372012812453923/

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • nodejs开发环境配置【1】-nvm的安装详解

    nodejs的版本升级相当快,不同版本之间存在了或多或少的差异,在切换版本的时候,如果不使用版本管理工具的话,需要卸载后再安装新的版本,浪费不必要的时间和精力。...

    挥刀北上
  • 大数据之脚踏实地学04--在Linux系统中安装Java

    本期将基于《大数据之脚踏实地学03--Linux的常用文件级命令》的知识,分享如何在Linux系统中安装Java。可能你会问,为什么选择Java安装的分享,而不...

    1480
  • Java开发环境系列:JDK安装及环境变量设置(linux)

    #sudo tar -zxvf jdk-8u111-linux-x64.tar.gz

    架构师小跟班
  • 大数据之脚踏实地学05--Linux中的解压与帮助命令

    在《大数据之脚踏实地学04--在Linux系统中安装Java》中提到了有关压缩文件的解压缩命令,不仅仅是在那篇文章中会用到解压缩,在实际的工作中也会经常用到Li...

    1480
  • Redis AOF 持久化详解

    Redis 是一种内存数据库,将数据保存在内存中,读写效率要比传统的将数据保存在磁盘上的数据库要快很多。但是一旦进程退出,Redis 的数据就会丢失。

    黄泽杰
  • 大数据之脚踏实地学02--远程连接与目录结构

    在上一期的脚踏实地学中,我们介绍了如何在自己的Windows系统中安装虚拟机和CentOS系统,这个操作相当于模拟了一台远程服务器(注意,这是模拟哦。土豪的你可...

    1480
  • IDEA中一键部署项目到Docker?

    Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目。它基于 Google 公司推出的 Go 语言实现。项目后...

    技术从心
  • 大数据之脚踏实地学06--Linux中的搜索与Vim

    在Linux的使用过程中,经常会碰到文件的搜索或文件内容的查询,如果你没有接触过find命令和grep命令,关于搜索或查询就很难推进了。还有另一个非常重要的操作...

    1480
  • 如何处理生产环境Tomcat的catalina.out日志?

    随着每天业务的增长,Tomcat 的catalina.out日志 变得越来越大,占用磁盘空间不说。要查看某个时候的日志的时候,庞大的日志让你顿时无从下手,所以日...

    lyb-geek
  • 它们的屠城史–木马技术发展趋势与回顾

    新的学期开始了,某大学网络管理专业三年级的同学们显得特别兴奋,这个学期的课程安排里终于出现了“网络安全”课程,一直对安全技术甚至黑客攻防手段感兴趣的同学更是对这...

    HACK学习

扫码关注云+社区

领取腾讯云代金券