一种基于局域网的自动协同调度方法与流程

文档序号:19320550发布日期:2019-12-04 00:29阅读:235来源:国知局
一种基于局域网的自动协同调度方法与流程

本发明涉及任务调度技术领域,特别是一种基于局域网的自动协同调度方法。



背景技术:

局域网中计算机在没有中心服务器的情况下,通过自协同调度的方式,实现同一时刻只有一个机器执行环形任务,可避免相同任务同时被多个机器执行,避免资源浪费;如果是数据更新的场景,在没有中心服务器的情况下,一个局域网只需要去中心更新一次数据,再通过p2p的方式更新到其他计算机,可有效降低带宽。

现有技术中要实现局域网中的自协同调度,需要一个调度系统。调度系统包括调度中心、任务节点,可以实现一个任务制定到计算机执行。但是现有技术中调度系统是一套专用的系统,需要专门的调度中心、任务节点,调度系统虽然功能强大,但是其结构过于庞大。另外,建立调度系统需要更多的资源,而且当一个调度系统建立好后,并不能通用于所有的局域网场景中。

现有技术中要实现多层更新,需要将中心的数据更新到局域网中的更新节点,通过更新节点分发到其他节点。可见,现有技术中多层更新需要专用的更新节点,更新节点如果是单个,节点的可靠性将直接影响更新效果;如果节点是多个,同一时刻无法保证只有一个节点去更新。



技术实现要素:

本发明所要解决的技术问题是:针对上述存在的问题,提供了一种基于局域网的自动协同调度方法。

本发明采用的技术方案如下:一种基于局域网的自动协同调度方法,包括:

局域网中的计算机通过ip形成一个或者多个环网,每个环网中的计算机根据ip设置环内索引,所述计算机均具有一个同步时钟,环网中邻居计算机之间具有一个固定的时间差i_time;

当具有多个环网时,对每个环网进行环网编号;不同编号的环网中具有相同环内索引的计算机组成虚拟子环,虚拟子环的索引根据环网编号确定,虚拟子环中各个节点的计算机均具有睡眠时间,虚拟子环中节点发出的唤醒通知由下一个节点的计算机监控,当下一个节点的计算机没有接收到唤醒通知则执行当前任务。

进一步的,所述基于局域网的自动协同调度方法还包括以下过程,当环网内某个计算机所在的虚拟子环中的计算机执行当前任务后,该虚拟子环中的其它计算机不再执行当前任务,在环网内下一个计算机的调度开始时间跳到环网内下一个计算机所在的虚拟子环进行循环:虚拟子环中各个节点的计算机均具有睡眠时间,虚拟子环中节点发出的唤醒通知由虚拟子环下一个节点的计算机监控,当虚拟子环下一个节点的计算机没有接收到唤醒通知则执行当前任务,依次类推。

进一步的,针对环网内某个计算机所在的虚拟子环,在虚拟子环内所有计算机均被唤醒时,没有计算机执行任务,则在环网内下一个计算机的调度开始时间,唤醒环网内下一个计算机所在的虚拟子环。

进一步的,如果环网内某个计算机的调度开始时间为t,则所述环网内下一个计算机的调度开始时间t_next=t+i_time。

进一步的,由一个网段中的计算机组成多个环网。

进一步的,由一个网段中的计算机组成多个环网时,环网编号r_id的计算方法为:ip尾号t_ip除以环网内计算机个数n的结果取整值,再将整值加1得到环网编号r_id;环内索引:r_index=t_ip-(r_id-1)*n;虚拟子环的索引v_r_index=r_id。

进一步的,所述环网内计算机个数通过将局域网中计算机的个数做因子分解后来确定。

进一步的,由多个网段中的计算机组成多个环网,每个环网的计算机来自于同一个网段。

进一步的,由多个网段中的计算机组成多个环网时的环编号包括不同网段的环编号s_v_r_id,以及相同网段中的环网编号r_id;将不同网段的ip的第三位进行映射为不同值,通过映射值制定不同网段的环编号s_v_r_id;ip尾号t_ip除以环网内计算机个数n的结果取整值,再将整值加1得到环网编号r_id;环内索引:r_index=t_ip-(r_id-1)*n;虚拟子环的索引v_r_index=s_v_r_id*(r_num/n_num)+r_id,其中,r_num为总环网个数,n_num为网段个数。

进一步的,环网的组成过程为:初始环网中没有计算机,每一个计算机通过约定的组播加入环网,新的计算机加入环网后,广播通知所有计算机重置时钟使邻居计算机之间具有一个固定的时间差。

与现有技术相比,采用上述技术方案的有益效果为:本发明的技术方案基于对局域网中环网的设置,构造多个或者一个环网,并对环网进行编号以及环内索引的设置,而且每个计算机需进行同步时钟的设置,使局域网中的计算机可以在没有调度系统的情况下,实现任务制定执行,减小了系统的构架;因为不需要配置调度系统,基于上述方案的调度方法可以适用于所有的局域网场景;本发明的技术方案可以针对整个局域网执行定时任务;本发明的计算方案对于需要定时同步更新的系统,不需要设置同步节点,局域网中的任何一个计算机都可以作为同步节点,同一时刻只需要一个计算机去中心服务器同步数据,再通过局域网p2p的方式同步更新给其它机器。

附图说明

图1是本发明基于局域网的自动协同调度方法实施例中基本架构示意图。

图2是本发明基于局域网的自动协同调度方法实施例中多环架构的环网1示意图。

图3是本发明基于局域网的自动协同调度方法实施例中多环架构的环网2示意图。

图4是本发明基于局域网的自动协同调度方法实施例中只有一个网段的多环架构的虚拟子环示意图。

图5是本发明基于局域网的自动协同调度方法实施例中具有不同网段的多环架构的的虚拟子环示意图。

具体实施方式

下面结合附图对本发明做进一步描述。

实施例1:包括一个环网的基本架构

如图1所示,局域网中计算机通过加入同一个组播网络,通过ip形成一个环网,本实施例中计算机从0-255组成环网。将计算机在子网中的ip尾号作为环网的环内索引(记为:r_index)。每台计算机拥有一个同步时钟(记为:syn_clock),根据ip尾号计算,每个电脑的时钟各不相同,环网中邻居计算机的都有同一个时间差(记为:i_time);

实施例1中的基本架构中,能够保证没有调度系统的情况下,环内只有一个计算机执行环形任务。但是这种基础架构中,最小调度时间是n,当全子网电脑都工作的情况下,基于环内索引的最后一个电脑来执行任务时最大调度时间为255*n,当对时间要求不高的任务,这种方案可以达到自动协同调度的方式。

实施例2:多环架构(小型网络)

实施例1中的基本架构中,如果环网中的节点过多,最差的情况下会导致任务的调度时间太长。增加环网的个数(环网个数记为:r_num),减少环网中的节点数可以缩短最大调度时间,但是环的个数增加会引发同一时刻,同一个任务被并发执行的情况增加,并发个数与环网的个数成正比,通过虚拟子环的方式,将不同环网的相同环内索引的计算机组成一个虚拟子环,来避免并发问题,环网内部的设置同实施例1中的基本架构;

虚拟子环由不同环网的相同r_index组成;全局域网最大255个机器,将255做因子分解255=3*5*17,可以设定换的个数3,5,15或者17。环网的个数的增加必定导致虚拟子环中节点数的增加。小型局域网一般3、5个子环为最优。下面以五个环网为例:

环网1(r_id(1))192.168.0.1-192.168.0.51,环内索引r_index(1-51);

环网2(r_id(2))192.168.0.52-192.168.0.102,环内索引r_index(1-51);

环网3(r_id(3))192.168.0.103-192.168.0.153,环内索引r_index(1-51);

环网4(r_id(4))192.168.0.154-192.168.0.204,环内索引r_index(1-51);

环网5(r_id(5))192.168.0.205-192.168.0.255,环内索引r_index(1-51);

如图2和图3展示的是环网1和环网2的组成情况,环网3-5和环网1和环网2的情况类似,附图不再展示。环网1-环网5中环内索引均为r_index(1)的组成一个虚拟子环,依次类推环内索引均为r_index(x)组成一个虚拟子环,x∈[1-51],该架构中每个虚拟子环中有5个计算机。

虚拟子环的调度过程为:

当时钟轮询到环中的某个环内索引r_index时,如图4所示不同的环网的同一个r_index(1)组成一个虚拟子环。

虚拟子环的环内索引(记为v_r_index,)由环网编号确定;v_r_index=r_id;

虚拟子环内各个节点也有睡眠时间,这个时间应该尽可能的短,但应该大于局域网的网络延迟时间;

虚拟子环的任何一个节点自动唤醒时,通过广播通知到环内所有节点,v_r_index由虚拟环内下一个节点(记为:v_r_index_next)监控(v_r_index)是否已经唤醒。例如,r_index(1)的虚拟子环中,环网3(r_id=3)的节点监控环网2(r_id=2)的唤醒状态。

虚拟子环监控唤醒时钟(记为:v_i_time),v_r_index_next经过v_i_time时长,去监控有没有收到v_r_index的唤醒通知,如果没有收到则,v_r_index_next自己执行当前任务;依次类推。

r_index(1)组成的虚拟子环中某个计算机节点执行任务后,等到r_index(2)的调度时间开始,则跳转到r_index(2)所在的虚拟子环。

实施例3:多环架构(超大型网络)

子网掩码为255.255.0.0的网络,多网段也可以组成一个局域网。直接通过ip尾号的方式,任然会出现多个并发环网,这里环网编号的计算规则和一个网段的环网编号计算规则一致;

同时,将ip第三位做个映射,定义网段个数(n_num),定义超大环编号(记为s_v_r_id),通过多环架构的方式也能解决,相对单个网段的环网组成,只是虚拟子环的节点数增加,比如:这两个个网段的电脑组成一个局域网:192.168.2.x.192.168.3.x.,分别将两个网段ip的第三位映射0,1,则两个不同网段的超大环编号s_v_r_id分别为0。

虚拟环内的编号算法做一下调整:v_r_index=s_v_r_id*(r_num/n_num)+r_id(r_id为子网环编号)

下面以192.168.2.x.和192.168.3.x.两个网段510台计算机组成多环网络架构为例,环网内的架构通实施例1中的基础架构。每个网段255台机器划分成5个环,一共10(r_num=10)个环网,2个网段(n_num=2),假设平均调度时间设置10s(即同一个环网内相邻两个计算机固定的时间差i_time),虚拟子环监控唤醒时间200ms(v_i_time);

约定:192.168.2.x.的s_v_r_id=0,192.168.3.x.的s_v_r_id=1。

当加入到环网中的计算机10s内没有新增时,r_index=1的10台机器将会被唤醒(10台计算机的ip为192.168.1.1,192.168.1.52,…..192.168.1.205….192.168.2.1,192.168.2.52…192.168.2.205,如图5,不同网段不同环网计算机,组成一个虚拟子环)。如果v_r_index=1(192.168.1.1)的机器存在,那么时钟10s的时候该机器会执行任务,如果10s+200ms时v_r_index=2(192.168.1.52)没有收到v_r_index=1的唤醒通知,v_r_index=2会执行任务,依次类推.192.168.2.205如果没有收到唤醒通知,可能在10s+9*200ms执行任务。

如果在10s+9*200ms的时间没有机器执行,那么在20s(即环网中下一个计算机r_index=2的调度开始时间)的时候,回唤起下一个虚拟环执行任务,本实施例是环内索引r_index=2所在的虚拟子环,。

如果在最差的情况下只有192.168.2.255机器启动,那么唤醒的时间是,51*10s+9*200ms=511.8s的时候唤醒执行自动调度。

在实施例1、实施例2、实施例3中,环网的组成过程为:

(1)初始环网中没有计算机;

(2)每一个计算机通过约定的组播加入环网;

(3)新的计算机加入环网后,广播通知所有计算机重置时钟使邻居计算机之间具有一个固定的时间差。

而且计算机可以在环网组成后自动退出或者增加,增加后需要广播通知所有组成环网的计算机重置时钟使邻居计算机之间具有一个固定的时间差,计算机退出不需要做任何操作,整个网络不受影响。

本发明并不局限于前述的具体实施方式。本发明扩展到任何在本说明书中披露的新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。如果本领域技术人员,在不脱离本发明的精神所做的非实质性改变或改进,都应该属于本发明权利要求保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1