多台机器,固定间隔每台分别去执行任务。


package main import (
"fmt"
"strconv"
"time"
) func main() {
// 周期60 秒, 获取当前秒钟数,
r := 60
interval := 5 // 机器节点数
node := []string{"node-1", "node-2","node-2"}
localIntranetIP := "node-1"
arr := []int{}
for i:=0; i< r; i=i + int( interval) {
arr = append(arr, i)
} var index int
var setIndex bool
for key, value := range node {
if value == localIntranetIP {
index = key
setIndex = true
break
}
}
if !setIndex {
fmt.Println("no set index !")
return
} l := len(node)
m := make([][]int, l)
for key, value := range arr {
s := key % l
m[s] = append(m[s], value)
} var selfTimer = []int{} if len(m) >= index + 1 {
selfTimer = m[index]
}
fmt.Println(m)
fmt.Println(selfTimer)
// 初始 200毫秒
timer := time. NewTimer( 200*time.Millisecond)
defer timer.Stop()
var lastTime int
selfTimerLen := len(selfTimer)
for {
select {
case <- timer.C: timer.Reset( 200*time.Millisecond)
secTime := nowTimeSec()
for key, _ := range selfTimer {
// 数组末尾值
if key == selfTimerLen - 1 && lastTime != selfTimer[key] && secTime > selfTimer[key] {
lastTime = selfTimer[key]
doWork()
} else if key < selfTimerLen - 1 && selfTimer[key] < secTime && secTime <= selfTimer[key + 1 ] && lastTime != selfTimer[key] {
lastTime = selfTimer[key]
doWork()
}
}
}
}
} func nowTimeSec() int {
secStr := time.Now().Format("05")
secInt, _ := strconv.Atoi(secStr)
return secInt
} func doWork() {
fmt.Println("do work !", time.Now().Format("2006-01-02 15:04:05"))
}

golang 手写实现多台机器执行定时任务的更多相关文章

  1. linux利用ssh远程执行多台机器执行同样的命令

    这篇文章主要介绍了ssh远程执行命令方法和Shell脚本实例,本文讲解了ssh执行远程操作方法和远程执行命令shell脚本示例,需要的朋友可以参考下 ssh执行远程操作命令格式代码如下: ssh -t ...

  2. window与MAC,多台机器ssh免密码登录同一台机器执行某个脚本,

    参考:https://zhidao.baidu.com/question/586579720.html A B C三台机器上以当前用户运行如下命令生成本主机的公钥和私钥文件: 1 ssh-keygen ...

  3. shell 脚本同时对远程多台机器执行命令

    脚本1:需要机器之间免密 ssh-copy-id [-i [identity_file]] [user@]machine #!/bin/bash # ------------------------- ...

  4. 自己手写WEB程序框架并执行

    1.新建目录,起名MyWeb 2.目录下,新建两个目录 WEB-INF, META-INF,,还能够新建一些jsp,html文件 ,如 index.html 3在WEB-INF中必须存在一个文件WEB ...

  5. sql server 作业导出放到另外一台机器执行时报错的解决方法

    SQL Server2008脚本创建作业失败,提示: 引用内容消息 515,级别 16,状态 2,过程 sp_add_job,第 137 行不能将值 NULL 插入列 'owner_sid',表 'm ...

  6. ClownFish:比手写代码还快的通用数据访问层

    http://www.cnblogs.com/fish-li/archive/2012/07/17/ClownFish.html 阅读目录 开始 ClownFish是什么? 比手写代码还快的执行速度 ...

  7. 集群中配置多台机器之间 SSH 免密码登录

    集群中配置多台机器之间 SSH 免密码登录 问题描述 由于现在项目大多数由传统的单台机器部署,慢慢转变成多机器的集群化部署. 但是,这就涉及到机器间的 SSH 免密码互通问题. 当集群机器比较多的时候 ...

  8. 手写DAO框架(四)-SQL执行

    -------前篇:手写DAO框架(三)-数据库连接--------- 前言 通过上一篇写的方法,可以灵活的获取.释放数据库连接,拿到连接之后,我们就可以执行sql了!所以,本篇介绍的就是SQL执行器 ...

  9. 带小伙伴手写 golang context

    前言 - context 源码 可以先了解官方 context.go 轮廓. 这里捎带保存一份当前 context 版本备份. // Copyright 2014 The Go Authors. Al ...

  10. ssh无密码登录多台机器,并让所有远程机执行相同命令

    问题集锦 其实标题的内容就是很常见的集群操作,当有一个脚本或者一个命令需要很多个机器同时(或者说接近同时)执行时,就涉及到几个问题: 怎么通知每个主机? 每个主机收到通知后,怎么让主机执行命令? 怎么 ...

随机推荐

  1. Jest如何有序地执行测试

    项目场景: node环境下编写js库,处于规范性考虑,需要做单元测试,我选择了Jest 问题描述 我的js库需要访问数据库,因此操作都是异步的,而且各个测试单元有严格的先后执行顺序(比如,建表 > ...

  2. vue3实现一个抽奖小项目

    前言 在公司年会期间我做了个抽奖小项目,我把它分享出来,有用得着的可以看下. 浏览链接:http://xisite.top/original/luck-draw/index.html 项目链接:htt ...

  3. uniapp如何打包wgt格式

    打包 build 首次打包,需要配置AppId 登录dcloud开发者中心 点击直达 创建应用 将生成的AppId配置到项目manifest.json中 开始打包 打包成功

  4. 从0到1手把手教你实现vite系列--重写依赖请求路径,处理/@modules/vue引用

    前面以及写了三篇了,这是第四篇,等我写完就合并起来哦 这个是第一篇的链接:vite原理,创建项目,基础知识 这个是第二篇的链接Vite-中篇-通过服务访问静态资源以及重写请求路径 这个是第三篇的链接# ...

  5. 大公司为什么禁止SpringBoot项目使用Tomcat?

    本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ...

  6. Unity之屏幕自适应

    Unity之屏幕自适应 哪个小伙伴能告诉我为什么CSDN我上传资源之后,下载费用是5积分啊!?怎么改为0呢,小黑苦恼啊!!!!!!! 一.前言 先言归正传吧,今天小黑给大家带来一个非常不错的分享--屏 ...

  7. 浙江某男子对多端应用开发工具HBuilderX在windows下安装的解说

    同学,学uni-app好啊,大致上写一套代码能生成这么多个平台的应用,我简单念一下,它们分别是Android应用.IOS应用.Web应用.微信小程序.支付宝小程序.百度小程序.字节跳动小程序.快应用. ...

  8. 【开源】libserial_parse_text:命令行解析的基础库

    借助五一假期,写了一个命令行解析的基础库,一般可用于串口命令解析.TCP命令解析等等. 具有以下几种特点: 不涉及到具体硬件, 纯软件协议,与具体硬件分离. 支持不定长命令行,逐个字符解码,可以支持不 ...

  9. Docker安装Tomcat应用服务器

    1.安装镜像 1. Install the image: 可以先到https://hub.docker.com/  搜索镜像 You can get there first. https://hub. ...

  10. cv::Mat::step详解

    1.简介 step的几个类别区分: step:矩阵第一行元素的字节数 step[0]:矩阵第一行元素的字节数 step[1]:矩阵中一个元素的字节数 step1(0):矩阵中一行有几个通道数 step ...