美文网首页
golang调度中心kala测试

golang调度中心kala测试

作者: 飞天神猫 | 来源:发表于2017-06-08 19:25 被阅读0次

前言

kala是go版本类crontab调度的服务,默认存储bolt,用redis存储时有点问题,密码为空会抛异常,修改了kala\job\storage\redis\redis.go和main.go增加密码判断,目前作者已经合并了PR。
问题原因是建立连接的时候redis.DialOption生成空结构体在redigo.Dial时会引起panic: runtime error: invalid memory address or nil pointer dereference报错。
提交PR的时候主要遇到结构体nil问题,吐槽下golang结构体为空判断,简直就是灾难。。

kala启动,修改后重新go build项目

//密码为空启动
[slview@YFTEST1 kala]$ ./kala run -p 40001 --jobDB=redis --jobDBAddress=192.168.6.151:6379 --jobDBPassword=""
INFO[0000] Starting server on port :40001...              
//默认没密码,没修改前会默认密码是password。。
[slview@YFTEST1 kala]$ ./kala run -p 40001 --jobDB=redis --jobDBAddress=192.168.6.151:6379
INFO[0000] Starting server on port :40001...  

http创建job,目标是每隔30秒采集一次思科路由器某端口的出和入流量

//create job , get job id ,can use job-id view status
curl http://127.0.0.1:40001/api/v1/job/ -d '{"epsilon": "PT10S", "command": "/slview/test/zhangqi/snmpwalk.sh", "name": "zhangqi_job", "schedule": "R/2017-06-08T11:15:00.819236718+08:00/PT30S"}'
{"id":"6973f82d-09d2-474f-630f-16d9ad27b484"}
//shell
#!/bin/sh
more snmpwalk.sh 
Dev_Ip=192.168.6.87
Comm=public
File=/slview/test/zhangqi/CI_$Dev_Ip
date >>$File
snmpwalk -v2c -c $Comm $Dev_Ip .1.3.6.1.2.1.31.1.1.1.6.1 >>$File
snmpwalk -v2c -c $Comm $Dev_Ip .1.3.6.1.2.1.31.1.1.1.10.1 >>$File

查看是否正常调度,每隔30秒生成文件正常

 tail -f CI_192.168.6.87 
2017年 06月 08日 星期四 11:15:00 CST
IF-MIB::ifHCInOctets.1 = Counter64: 1831783500
IF-MIB::ifHCOutOctets.1 = Counter64: 1033990306
2017年 06月 08日 星期四 11:15:30 CST
IF-MIB::ifHCInOctets.1 = Counter64: 1831793637
IF-MIB::ifHCOutOctets.1 = Counter64: 1033997648
2017年 06月 08日 星期四 11:16:00 CST
IF-MIB::ifHCInOctets.1 = Counter64: 1831815957
IF-MIB::ifHCOutOctets.1 = Counter64: 1034010252
2017年 06月 08日 星期四 11:16:30 CST
IF-MIB::ifHCInOctets.1 = Counter64: 1831826698
IF-MIB::ifHCOutOctets.1 = Counter64: 1034016972
2017年 06月 08日 星期四 11:17:00 CST
IF-MIB::ifHCInOctets.1 = Counter64: 1831851051
IF-MIB::ifHCOutOctets.1 = Counter64: 1034031575
2017年 06月 08日 星期四 11:17:30 CST
IF-MIB::ifHCInOctets.1 = Counter64: 1831862726
IF-MIB::ifHCOutOctets.1 = Counter64: 1034040076

查看redis存储,是一个hset

127.0.0.1:6379> hkeys kala:jobs
1) "6973f82d-09d2-474f-630f-16d9ad27b484"

可以用curl或者浏览器查看job在何时调度了程序,retry是几次

bash-4.1$ curl -s http://192.168.6.26:40001/api/v1/job/stats/6973f82d-09d2-474f-630f-16d9ad27b484/ | jq .
{
  "job_stats": [
    {
      "execution_duration": 219580517,
      "success": true,
      "number_of_retries": 0,
      "ran_at": "2017-06-08T11:15:00.819908161+08:00",
      "job_id": "6973f82d-09d2-474f-630f-16d9ad27b484"
    },
    {
      "execution_duration": 215259152,
      "success": true,
      "number_of_retries": 0,
      "ran_at": "2017-06-08T11:15:30.820510442+08:00",
      "job_id": "6973f82d-09d2-474f-630f-16d9ad27b484"
    },
    {
      "execution_duration": 129358057,
      "success": true,
      "number_of_retries": 0,
      "ran_at": "2017-06-08T11:16:00.821014506+08:00",
      "job_id": "6973f82d-09d2-474f-630f-16d9ad27b484"
    },

其他功能

kala可以设置retries和epsilon,规定重复时间内的重试次数,格式遵循标准为ISO8601,如:{"retries": 3, "epsilon": "PT10S",。。。}

删除job

curl -XDELETE http://127.0.0.1:40001/api/v1/job/6973f82d-09d2-474f-630f-16d9ad27b484/

相关文章

  • golang调度中心kala测试

    前言 kala是go版本类crontab调度的服务,默认存储bolt,用redis存储时有点问题,密码为空会抛异常...

  • golang

    golang携程调度,runtime包 golang内存模型 csp原理 context的原理 slice底层结构...

  • golang的垃圾回收(GC)机制

    请先阅读 golang的goroutine调度机制 golang的垃圾回收采用的是 标记-清理(Mark-and-...

  • Golang学习笔记-调度器学习

    Golang的调度器 谈到Golang的调度器,绕不开的是操作系统,进程和线程这些概念。多个线程是可以属于同一个进...

  • Go每日精选(2019-06-30)

    golang测试框架专辑 1.Golang 单元测试框架 gocheck 使用介绍 2.GoConvey测试框架使...

  • golang 抢占式调度

    这里说的 “golang 抢占式调度”,只是 goroutine 调度的一部分内容。个人对 go 的调度理解为:伪...

  • Go GPM 模型

    GPM 模型 golang 在系统调度的基础上实现了自己的 goroutine 调度器,即 GPM 模型。goro...

  • Golang汇编

    .... to be continued Golang中很多代码实现,例如strings.Index(),调度器以...

  • Selenium爬取淘宝实战练习

    1、项目流程 2、中心调度 # 中心调度 def main(): try: total = search() to...

  • Golang调度器

    原文: http://morsmachine.dk/go-scheduler 为什么在内核的线程调度器之外Go还需...

网友评论

      本文标题:golang调度中心kala测试

      本文链接:https://www.haomeiwen.com/subject/afltqxtx.html