本发明涉及容器技术领域,尤其涉及一种集群服务访问方法、装置和计算机设备。
背景技术:
swarm一种容器管理工具,用以管理docker集群,使得docker集群在面对用户时相当于一个虚拟的整体。swarm自动监控服务容器的健康状态,当服务容器异常时,自动重启新的容器。目前,swarm具备服务发现机制:集群内的其他服务想使用某个服务时,可以通过该服务的servicename(服务名称)来访问,swarm内部建立servicename和ip地址之间的映射关系,相当于域名服务。当该服务存在多个容器时,swarm内部会根据映射关系自动进行负载均衡,对该服务进行轮询调用。此时,无需关心服务容器在哪台服务器上运行以及该服务器的ip地址是多少。但是,在一个集群内部署的业务系统中,假设a服务和b服务是相关联的,利用现有的swarm服务发现机制,会对所有节点上的b服务进行轮询调用,且如果a服务和b服务访问的是不同节点,会导致两个物理节点间的数据交换,占用网络资源,业务处理效率低。
技术实现要素:
本发明的目的旨在至少在一定程度上解决上述的技术问题之一。
为此,本发明的第一个目的在于提出一种集群服务访问方法,能够节省网络资源,提高业务处理效率。
本发明的第二个目的在于提出一种集群服务访问装置。
本发明的第三个目的在于提出一种计算机设备。
本发明的第四个目的在于提出一种非临时性计算机可读存储介质。
为了实现上述目的,本发明第一方面实施例提出一种集群服务访问方法,该方法包括:
在集群服务中,开启运行第一服务容器;
获取所述第一服务容器所在第一物理节点的第一信息;
根据所述第一物理节点的第一信息从共享存储中获取运行在所述第一物理节点的第二服务容器的第二信息,其中,第一服务与第二服务相关联;
根据所述第二信息访问运行在所述第一物理节点的第二服务。
可选的,在根据所述第一物理节点的第一信息从共享存储中获取运行在所述第一物理节点的第二服务容器的第二信息之前,还包括:
将所述第二信息写入所述共享存储的文件中,所述文件的文件名为所述第二服务容器所在的第二物理节点的第一信息。
可选的,根据所述第一物理节点的第一信息从共享存储中获取运行在所述第一物理节点的第二服务容器的第二信息,包括:
根据所述第一物理节点的第一信息从所述共享存储中查找到与所述第一物理节点的第一信息对应的文件;
对所述文件进行解析,以获取运行在所述第一物理节点的第二服务容器的第二信息。
可选的,如果所述第二服务重启,则在所述共享存储对应的文件中更新所述第二服务容器的第二信息;
根据更新后的所述第二服务容器的第二信息,访问运行在所述第一物理节点的第二服务。
可选的,所述第一信息包括物理节点名称,所述第二信息包括主机名。
可选的,所述集群服务为swarm集群。
本发明实施例的集群服务访问方法,通过在集群服务中,开启运行第一服务容器,并获取所述第一服务容器所在第一物理节点的第一信息,以及根据所述第一物理节点的第一信息从共享存储中获取运行在所述第一物理节点的第二服务容器的第二信息,并根据所述第二信息访问运行在所述第一物理节点的第二服务,能够保证关联的服务运行在同一物理节点,避免数据交换,节省网络资源,提高业务处理效率。
为了实现上述目的,本发明第二方面实施例提出了一种集群服务访问装置,包括:
运行模块,用于在集群服务中,开启运行第一服务容器;
第一获取模块,用于获取所述第一服务容器所在第一物理节点的第一信息;
第二获取模块,用于根据所述第一物理节点的第一信息从共享存储中获取运行在所述第一物理节点的第二服务容器的第二信息,其中,第一服务与第二服务相关联;
访问模块,用于根据所述第二信息访问运行在所述第一物理节点的第二服务。
可选的,所述装置还包括:
保存模块,用于在根据所述第一物理节点的第一信息从共享存储中获取运行在所述第一物理节点的第二服务容器的第二信息之前,将所述第二信息写入所述共享存储的文件中,所述文件的文件名为所述第二服务容器所在的第二物理节点的第一信息。
可选的,所述第二获取模块,用于:
根据所述第一物理节点的第一信息从所述共享存储中查找到与所述第一物理节点的第一信息对应的文件;
对所述文件进行解析,以获取运行在所述第一物理节点的第二服务容器的第二信息。
可选的,所述装置还包括:
更新模块,用于如果所述第二服务重启,则在所述共享存储对应的文件中更新所述第二服务容器的第二信息;
所述访问模块,用于根据更新后的所述第二服务容器的第二信息,访问运行在所述第一物理节点的第二服务。
可选的,所述第一信息包括物理节点名称,所述第二信息包括主机名。
可选的,所述集群服务为swarm集群。
本发明实施例的集群服务访问装置,通过在集群服务中,开启运行第一服务容器,并获取所述第一服务容器所在第一物理节点的第一信息,以及根据所述第一物理节点的第一信息从共享存储中获取运行在所述第一物理节点的第二服务容器的第二信息,并根据所述第二信息访问运行在所述第一物理节点的第二服务,能够保证关联的服务运行在同一物理节点,避免数据交换,节省网络资源,提高业务处理效率。
为了实现上述目的,本发明第三方面实施例提出了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如第一方面实施例所述的集群服务访问方法。
为了实现上述目的,本发明第四方面实施例还提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如第一方面实施例所述的集群服务访问方法。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
构成本发明的一部分的说明书附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是本发明一个实施例的集群服务访问方法的流程图;
图2是本发明另一个实施例的集群服务访问方法的流程图;
图3是本发明又一个实施例的集群服务访问方法的流程图;
图4是本发明一个实施例的集群服务访问方法装置的结构示意图;
图5是本发明另一个实施例的集群服务访问方法装置的结构示意图;
图6是本发明又一个实施例的集群服务访问方法装置的结构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
以下结合具体实施例对本发明作进一步详细描述,这些实施例不能理解为限制本发明所要求保护的范围。
下面参考附图描述本发明实施例的集群服务访问方法、装置和计算机设备。
图1是本发明一实施例的集群服务访问方法的流程图,如图1所示,该方法包括以下步骤:
s1,在集群服务中,开启运行第一服务容器。
其中,集群服务为swarm集群。
大型的业务系统中,通常包括多个服务,每个服务的安装,尤其是大规模集群中,因物理节点系统不同,编译器版本不同,依赖不同,安装过程繁琐、易出错。同时,为了避免某个服务故障而导致业务系统不可用,需要服务能够自动修复和重启。因此,可通过容器技术来解决上述问题。也就是说,将某个软件通过容器化技术封装为一个服务容器。在集群中开启运行服务容器,对外绑定端口,即可对外部提供服务。
s2,获取第一服务容器所在第一物理节点的第一信息。
其中,第一信息可以是物理节点名称。
s3,根据第一物理节点的第一信息从共享存储中获取运行在第一物理节点的第二服务容器的第二信息。
其中,第一服务与第二服务是相关联的。第二信息可以是主机名,即hostname。
具体来说,可以根据第一物理节点的第一信息从共享存储中查找到与第一物理节点的第一信息对应的文件,然后对文件进行解析,从而获取到运行在第一物理节点的第二服务容器的第二信息。
s4,根据第二信息访问运行在第一物理节点的第二服务。
举例来说,在一个集群内部署的业务系统中,a服务和b服务是相关联的。swarm的服务发现机制是对集群中所有节点上的b服务进行轮询调用,此时不能保证某节点上的a服务访问到的就是该节点上的b服务,而可能是另外一个节点上的b服务,这样会导致两个物理节点间的数据交换。为此,本发明采用了一种共享存储的机制,可以不用对集群中所有节点进行轮询,而只需要从共享存储中获取b服务的相关信息即可。具体地,某物理节点上的a服务运行时,可以从共享存储中读取以该物理节点的名字命名的文件,从该文件的内容里获取到b服务容器的hostname。a服务通过b服务容器的hostname,在同一物理节点上访问b服务。
本发明实施例的集群服务访问方法,通过在集群服务中,开启运行第一服务容器,并获取第一服务容器所在第一物理节点的第一信息,以及根据第一物理节点的第一信息从共享存储中获取运行在第一物理节点的第二服务容器的第二信息,并根据第二信息访问运行在第一物理节点的第二服务,能够保证关联的服务运行在同一物理节点,避免数据交换,节省网络资源,提高业务处理效率。
在本发明的另一个实施例中,如图2所示,该方法还可包括以下步骤:
s5,在根据第一物理节点的第一信息从共享存储中获取运行在第一物理节点的第二服务容器的第二信息之前,将第二信息写入共享存储的文件中。
其中,文件的文件名为第二服务容器所在的第二物理节点的第一信息。
也就是说,可以预先将第二信息写入到共享存储的文件中。继续上例,b服务容器启动时,获得b服务容器所在的物理节点的名字。然后将b服务容器的hostname写入到共享存储的文件中。文件以物理节点的名字为文件名。其中,如果物理节点为多个时,则生成数量一致的文件。如b服务容器可以在3个不同的物理节点上运行,那么则生成3个文件,每个文件的文件名都是对应物理节点的名字,且这些文件的内容都保存有b服务容器的hostname。上述文件可以是文本文件。
在本发明的又一个实施例中,如图3所示,该方法还可包括以下步骤:
s6,如果第二服务重启,则在共享存储对应的文件中更新第二服务容器的第二信息。
s7,根据更新后的第二服务容器的第二信息,访问运行在第一物理节点的第二服务。
继续上例,b服务重启后,会自动更新共享存储文件里的hostname。当a服务访问原b服务容器的hostname时,触发连接异常,此时a服务自动重新读取共享存储里的最新b服务容器的hostname,建立新的连接。
为了实现上述实施例,本发明还提出了一种集群服务访问装置。
图4是本发明一实施例的集群服务访问装置的结构示意图。
如图4所示,该装置包括运行模块41、第一获取模块42、第二获取模块43以及访问模块44。
运行模块41,用于在集群服务中,开启运行第一服务容器。
第一获取模块42,用于获取第一服务容器所在第一物理节点的第一信息。
第二获取模块43,用于根据第一物理节点的第一信息从共享存储中获取运行在第一物理节点的第二服务容器的第二信息。其中,第一服务与第二服务相关联;
访问模块44,用于根据第二信息访问运行在第一物理节点的第二服务。
应当理解的是,本实施例的集群服务访问装置与第一方面实施例的集群服务访问方法的描述一致,此处不再赘述。
本发明实施例的集群服务访问装置,通过在集群服务中,开启运行第一服务容器,并获取第一服务容器所在第一物理节点的第一信息,以及根据第一物理节点的第一信息从共享存储中获取运行在第一物理节点的第二服务容器的第二信息,并根据第二信息访问运行在第一物理节点的第二服务,能够保证关联的服务运行在同一物理节点,避免数据交换,节省网络资源,提高业务处理效率。
在本发明的另一个实施例中,如图5所示,装置还包括保存模块45。
保存模块45,用于在根据第一物理节点的第一信息从共享存储中获取运行在第一物理节点的第二服务容器的第二信息之前,将第二信息写入共享存储的文件中,文件的文件名为第二服务容器所在的第二物理节点的第一信息。
在本发明的又一个实施例中,如图6所示,装置还包括更新模块46。
更新模块46,用于如果第二服务重启,则在共享存储对应的文件中更新第二服务容器的第二信息。
访问模块44,用于根据更新后的第二服务容器的第二信息,访问运行在第一物理节点的第二服务。
为了实现上述实施例,本发明还提出了一种计算机设备。
该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现如第一方面实施例的集群服务访问方法。
为了实现上述实施例,本发明还提出了一种非临时性计算机可读存储介质。
该非临时性计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如第一方面实施例的集群服务访问方法。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。
需要说明的是,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
1.一种集群服务访问方法,其特征在于,包括:
在集群服务中,开启运行第一服务容器;
获取所述第一服务容器所在第一物理节点的第一信息;
根据所述第一物理节点的第一信息从共享存储中获取运行在所述第一物理节点的第二服务容器的第二信息,其中,第一服务与第二服务相关联;
根据所述第二信息访问运行在所述第一物理节点的第二服务。
2.如权利要求1所述的方法,其特征在于,在根据所述第一物理节点的第一信息从共享存储中获取运行在所述第一物理节点的第二服务容器的第二信息之前,还包括:
将所述第二信息写入所述共享存储的文件中,所述文件的文件名为所述第二服务容器所在的第二物理节点的第一信息。
3.如权利要求1所述的方法,其特征在于,根据所述第一物理节点的第一信息从共享存储中获取运行在所述第一物理节点的第二服务容器的第二信息,包括:
根据所述第一物理节点的第一信息从所述共享存储中查找到与所述第一物理节点的第一信息对应的文件;
对所述文件进行解析,以获取运行在所述第一物理节点的第二服务容器的第二信息。
4.如权利要求3所述的方法,其特征在于,还包括:
如果所述第二服务重启,则在所述共享存储对应的文件中更新所述第二服务容器的第二信息;
根据更新后的所述第二服务容器的第二信息,访问运行在所述第一物理节点的第二服务。
5.如权利要求1-4任一项所述的方法,其特征在于,所述第一信息包括物理节点名称,所述第二信息包括主机名。
6.如权利要求1所述的方法,其特征在于,所述集群服务为swarm集群。
7.一种集群服务访问装置,其特征在于,包括:
运行模块,用于在集群服务中,开启运行第一服务容器;
第一获取模块,用于获取所述第一服务容器所在第一物理节点的第一信息;
第二获取模块,用于根据所述第一物理节点的第一信息从共享存储中获取运行在所述第一物理节点的第二服务容器的第二信息,其中,第一服务与第二服务相关联;
访问模块,用于根据所述第二信息访问运行在所述第一物理节点的第二服务。
8.如权利要求7所述的装置,其特征在于,所述装置还包括:
保存模块,用于在根据所述第一物理节点的第一信息从共享存储中获取运行在所述第一物理节点的第二服务容器的第二信息之前,将所述第二信息写入所述共享存储的文件中,所述文件的文件名为所述第二服务容器所在的第二物理节点的第一信息。
9.如权利要求7所述的装置,其特征在于,所述第二获取模块,用于:
根据所述第一物理节点的第一信息从所述共享存储中查找到与所述第一物理节点的第一信息对应的文件;
对所述文件进行解析,以获取运行在所述第一物理节点的第二服务容器的第二信息。
10.如权利要求9所述的装置,其特征在于,所述装置还包括:
更新模块,用于如果所述第二服务重启,则在所述共享存储对应的文件中更新所述第二服务容器的第二信息;
所述访问模块,用于根据更新后的所述第二服务容器的第二信息,访问运行在所述第一物理节点的第二服务。
11.如权利要求7-10任一项所述的装置,其特征在于,所述第一信息包括物理节点名称,所述第二信息包括主机名。
12.如权利要求7所述的装置,其特征在于,所述集群服务为swarm集群。
13.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如权利要求1-6任一所述的集群服务访问方法。
14.一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6任一所述的集群服务访问方法。
技术总结