具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的任务分配方法的流程图,如图1所述,该方法包括如下步骤:
步骤S110,在任务消息中添加包括一个或多个字段的第一标签。
其中,第一标签中的一个或多个字段对应任务分配对象在一个或多个预设维度的特征信息,任务分配对象即为执行任务的目标服务器。
按上述方式,任务消息中包含了待执行任务和第一标签,其中,任务可以是删除文件,重启某项服务等。
在本发明实施例中,一个或多个预设维度包括:业务维度,和/或角色维度,和/或位置维度。
本发明还适用于这样一种情况,网站运营,数据处理等所需的服务器数量不断增加。例如,对于网站运营,可能涉及数据存储,网址导航等多种业务,每项业务对应于一个或多个服务器。对应于同一业务的一组服务器通常具有统一的配置,执行相同的任务,则在进行任务分配时,可以按预定的分组进行。
具体地,在本发明实施例中,按业务维度及角色维度对服务器进行分组,业务维度包括存储业务、web业务等,角色维度包括mysql服务器、redis服务器、apache服务器、nginx服务器等。一部分服务器用于存储业务,如部署mysql,redis数据库,一部分用于web业务,如部署apache数据库,nginx数据库等。
在本实施例方法执行之前,按上述的预设维度对服务器进行分组,并将分组信息以第二标签的形式预存在服务器上。对任一组服务器,可通过一个维度,或两个维度的组合进行标识,例如,用于导航业务的nginx服务器,用于存储业务的mysql服务器等。
服务器上预存的第二标签的一个或多个字段对应服务器分组时所用的预设维度,每个字段包括字段名和字段值。字段名可以设为预设维度的名称,字段值表明该服务器在这一维度的特征信息。
具体地,对于导航的nginx服务器,第二标签可以包括两个字段,分别表示该服务器在业务和角色维度的特征信息,例如,字段名可分别设为service,role,字段值分别为navigation,nginx。
按相同的方式设置第一标签,第一标签用于指定任务分配的目标服务器,具体地,通过一个或多个字段表示目标服务器在上述维度内的特征信息。在向任务消息中添加第一标签时,根据任务分配的对象为第一标签选择合适的字段值。若任务分配对象是一组导航的nginx服务器,则第一标签可包含两个字段,字段值分别为navigation,nginx。
或者,第一标签只包含一个字段,例如,只包含业务维度的字段,字段值为storage,则表示任务的分配对象为包括redis服务器和mysql服务器在内的所有用于存储业务的服务器。
当然,也可以添加其他维度对服务器进行分组,如机房位置等,则对于上述的用于导航的nginx服务器,第二标签进一步包括表示机房位置信息的字段,例如,该字段名为idc,相应的字段值为Beijing,表示该服务器位于北京。
依据本发明的一个实施例,该方法还包括,在数据库中存储每个服务器的一个或多个第二标签。将每台服务器的主机名称、ip地址等与该服务器自身的一个或多个第二标签相关联地存储在数据库中。
同一服务器所属的业务、角色可能发生变化,本实施例的方法还包括:定时更新数据库中存储的每个服务器的第二标签。
数据库中存储第二标签,及第二标签与服务器的对应关系,可作为服务器端设置第二标签的参照,则依据本发明的一个实施例,该方法还包括:将数据库中存储的每个服务器的一个或多个第二标签同步给对应的服务器。具体地,同步过程可在更新后立即进行,以保证任务分配的准确性。
步骤S120,将携带有所述第一标签的任务消息发送至所有服务器。
在本发明实施例中,通过一台中心机管理全部的服务器,向服务器发送任务消息。服务器和中心机通过应用层上的安全协议进行会话。例如,通过配置ssh(安全Shell协议)远程登录等方式将任务消息发送到服务器上。具体地,考虑到安全问题,可以使用一个低权限的账号,并配置中心机到服务器的ssh(安全Shell协议)信任。
任务消息可以通过广播的方式发送,所有与中心机通信的服务器都能够接收每一条任务消息。从而省略了在数据库中查找任务分配对象的IP地址,主机名称等步骤,简化了任务分配的复杂度。
服务器接收任务消息后,从任务消息中获取携带的第一标签。每个服务器将自身的第二标签与任务消息中的第一标签进行匹配,由匹配成功的服务器对任务消息作出响应。
同一服务器可能属于不同的业务维度或角色维度,则每个服务器上的第二标签可能多于一个,例如,一台服务器即用于存储,也用于web业务,则该服务器可预存有两个第二标签,这两个第二标签中对应业务维度的字段值分别为storage和web。
具体地,以导航的mysql服务器为例,其第二标签包括两个字段,分别为第一字段和第二字段,表示该服务器在业务维度和角色维度的特征信息。例如,第一、第二字段的名称分别为service和role,字段值分别为navigation和mysql。
还可以添加其他的字段,如机房位置。例如,对于上述的mysql服务器,第二标签还包括表示机房位置信息的第三个字段,该字段名为idc,相应的字段值为Beijing,表示该服务器位于北京。
具体地,服务器接收任务消息后,解析出第一标签中的字段信息,将字段信息与自身的一个或多个第二标签匹配,匹配成功,该服务器就执行任务消息中携带的任务。
服务器上的标签匹配,以及发送任务消息时字段信息的设置均按预定的规则进行。规则是多样的,例如,任务消息中的第一标签的字段信息为“service=storage,role=mysql”,该字段信息指定了所有用于存储的mysql服务器,若服务器自身的标签也为“service=storage,role=mysql”,则认为匹配成功,若服务器自身的标签为“service=storage,role=mysql,idc=beijing”,匹配结果也为成功。又例如,任务消息中的携带的第二标签的字段信息为“service=storage,role=all,idc=all”,该字段信息指定所有的存储服务器,则所有第二标签中带有“service=storage”字段,如“service=storage,role=mysql,idc=beijing”,“service=storage,role=redis,idc=shanghai”等也判断为匹配成功。
上述的第一标签,第二标签的格式及匹配方式只作为示例,用于说明实施过程。实际中,可以选择其他的服务器分组方式,维度及相应的匹配规则。
根据本发明上述实施例提供的方法,在任务消息中添加包括一个或多个字段的第一标签;将携带有第一标签的任务消息发送至所有服务器,每个服务器接收任务消息后,将预存的第二标签与第一标签进行匹配,由匹配成功的服务器对所述任务消息作出响应,根据该方案,任务分配时,不需要查找服务器的主机名、IP,而将任务消息发送给每个服务器,由服务器根据标签匹配结果响应任务消息,这减少了运维的复杂度,使任务分配过程规范、一致。
图2示出了根据本发明一个实施例的感知任务分配的方法的流程图,本实施例描述了本发明的方法在服务器侧的执行过程,如图2所示,方法包括如下步骤:
步骤S210,接收携带第一标签的任务消息。
第一标签包括一个或多个字段,对应任务分配对象在一个或多个预设维度的特征信息。
可选地,服务器接收中心机发送的任务消息广播,所有与中心机通信的服务器都能够接收每一条任务消息。从而省略了在数据库中查找任务分配对象的IP地址,主机名称等步骤,简化了任务分配的复杂度。
步骤S220,将预存的第二标签与所述第一标签进行匹配,若匹配成功,执行步骤S230,否则执行步骤S240。
第二标签包括一个或多个字段,对应服务器在一个或多个预设维度的特征信息。
步骤S230,执行任务消息中包含的任务。
任务可以是删除文件,重启某项服务等。
步骤S240,忽略该任务消息。
步骤S210-S240的具体实现方式可参见上一实施例,此处不再赘述。
图3示出了根据本发明一个实施例的任务分配装置的结构框图,如图3所示,装置包括:
添加模块310,适于在任务消息中添加包括一个或多个字段的第一标签。
其中,一个或多个字段对应任务分配对象在一个或多个预设维度的特征信息;任务可以是删除文件,重启某项服务等。
在本发明实施例中,一个或多个预设维度包括:业务维度,和/或角色维度,和/或位置维度。第一标签中的每个字段包括字段名和字段值。字段名可以为预设维度的名称,字段值表明任务分配对象在这一维度的特征信息。
添加模块310在任务消息中添加的第一标签可以包括两个字段,分别表示该服务器所属的业务维度和角色维度,例如,字段名分别为service,role。添加模块310在向任务消息中添加第一标签时,根据任务分配的对象选择合适的字段值。例如,若任务分配的对象是多个存储用的redis服务器,则两个字段的值分别为storage,redis。或者,业务标签字段信息只包含部分字段,例如,只包含业务维度的字段,字段值为storage,则表示任务的目标为所有用于存储业务的服务器,包括redis服务器和mysql服务器。
当然,也可以添加其他预设维度对服务器进行分组,如机房位置。例如,对于导航的mysql服务器,第一标签还包括表示机房位置信息的第三个字段,该字段名可设为idc,相应的字段值为Beijing,表示该服务器位于北京。
发送模块320,适于将携带有所述第一标签的任务消息发送至所有服务器。
服务器和本实施例所述的装置可通过应用层上的安全协议进行会话。例如,通过配置ssh(安全shell协议)远程登录等方式将任务消息通过发送模块320发送到服务器上。具体地,考虑到安全问题,可以使用一个低权限的账号,并配置任务分配装置到服务器的ssh(安全shell协议)信任。
发送模块320通过广播的方式发送任务消息,则所有与装置通信的服务器都能够接收每一条任务消息。从而省略了在数据库中查找任务分配对象的IP地址,主机名称等步骤,简化了任务分配的复杂度。
服务器接收任务消息后,将自身的一个或多个第二标签与任务消息中的第一标签进行匹配,由匹配成功的服务器对任务消息作出响应。
可选地,装置还包括:数据库330,适于存储每个服务器的一个或多个第二标签。
数据库330存储的第二标签,及第二标签与服务器的对应关系,可作为服务器端设置第二标签的记录和参照。
同一服务器所属的业务、角色可能发生变化,可选地,装置还包括:更新模块340,适于定时更新数据库330中存储的每个服务器的一个或多个第二标签。
可选地,装置还包括:第一同步模块350,适于将数据库330中存储的每个服务器的一个或多个第二标签同步给对应的服务器。具体地,同步过程可在更新后进行,这保证了任务分配的准确性。
图4示出了根据本发明另一个实施例的服务器,包括:
接收模块410,适于接收携带第一标签的任务消息。
第一标签包括一个或多个字段,对应任务分配对象在一个或多个预设维度的特征信息。
匹配模块420,适于将预存的第二标签与第一标签进行匹配。
其中,第二标签包括一个或多个字段,对应服务器在一个或多个预设维度的特征信息。
响应模块440,适于在匹配模块匹配成功的情况下,对任务消息作出响应。
可选地,服务器进一步包括:第二同步模块430,适于根据数据库中存储的第二标签,对预存的一个或多个第二标签进行同步。
图5示出了根据本发明另一个实施例的任务分配系统,如图5所示,系统包括:上述的任务分配装置,以及服务器。
根据本发明上述实施例提供的任务分配装置,服务器和任务分配系统,不需要进行查找操作,而将任务消息发送给每个服务器,由服务器感知自身的业务或角色,对任务消息做出响应。这减少了运维的复杂度,使任务分配过程规范、一致,并且通过第一同步模块和第二同步模块对业务服务器的业务标签进行同步,保证了任务分配的准确性。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的基于业务标签的任务分配装置,服务器和任务分配系统中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了:
A1、一种任务分配方法,所述方法包括:
在任务消息中添加包括一个或多个字段的第一标签,所述一个或多个字段对应任务分配对象在一个或多个预设维度的特征信息;
将携带有所述第一标签的任务消息发送至所有服务器,以供每个服务器将预存的第二标签与所述第一标签进行匹配,由匹配成功的服务器对所述任务消息作出响应,其中,所述第二标签包括一个或多个字段,对应服务器在所述一个或多个预设维度的特征信息。
A2、根据A1所述的方法,其中,所述一个或多个预设维度包括:业务维度,和/或角色维度,和/或位置维度。
A3、根据A1所述的方法,其中,所述方法还包括:在数据库中存储每个服务器的第二标签。
A4、根据A3所述的方法,其中,所述方法还包括:定时更新所述数据库中存储的每个服务器的第二标签。
A5、根据A3或A4所述的方法,其中,所述方法还包括:将所述数据库中存储的每个服务器的第二标签同步给对应的服务器。
B6、一种服务器感知任务分配的方法,包括:
接收携带第一标签的任务消息,所述第一标签包括一个或多个字段,对应任务分配对象在一个或多个预设维度的特征信息;
将预存的第二标签与所述第一标签进行匹配,其中,所述第二标签包括一个或多个字段,对应服务器在所述一个或多个预设维度的特征信息;
若匹配成功,对所述任务消息作出响应。
B7、根据B6所述的方法,其中,所述一个或多个预设维度包括:业务维度,和/或角色维度,和/或位置维度。
B8、根据B6所述的方法,其中,所述方法还包括:
根据数据库中存储的第二标签,对所述预存的第二标签进行同步。
C9、一种任务分配装置,所述装置包括:
添加模块,适于在任务消息中添加包括一个或多个字段的第一标签,所述一个或多个字段对应任务分配对象在一个或多个预设维度的特征信息;
发送模块,适于将携带有所述第一标签的任务消息发送至所有服务器,以供每个服务器将预存的第二标签与所述第一标签进行匹配,由匹配成功的服务器对所述任务消息作出响应,其中,所述第二标签包括一个或多个字段,对应服务器在所述一个或多个预设维度内的特征信息。
C10、根据C9所述的装置,其中,所述一个或多个预设维度包括:业务维度,和/或角色维度,和/或位置维度。
C11、根据C9所述的装置,其中,所述装置还包括:数据库,适于存储所述每个服务器的第二标签。
C12、根据C11所述的装置,其中,所述装置还包括:更新模块,适于定时更新所述数据库中存储的每个服务器的第二标签。
C13、根据C11或C12所述的装置,其中,其中所述装置还包括:第一同步模块,适于将所述数据库中存储的每个服务器的第二标签同步给对应的服务器。
D14、一种服务器,包括:
接收模块,适于接收携带第一标签的任务消息,所述第一标签包括一个或多个字段,对应任务分配对象在一个或多个预设维度的特征信息;
匹配模块,适于将预存的第二标签与所述第一标签进行匹配,其中,所述第二标签包括一个或多个字段,对应服务器在所述一个或多个预设维度的特征信息;
响应模块,适于在匹配模块匹配成功的情况下,对所述任务消息作出响应。
D15、根据权利要求11所述的服务器,其中,所述服务器进一步包括:第二同步模块,适于根据数据库中存储的第二标签,对所述预存的一个或多个第二标签进行同步。
E16、一种任务分配系统,包括:C9-C13任一项所述的任务分配装置,以及权利要求D14-D16任一项所述的服务器。