一种分布式系统及其自动维护方法

文档序号:7938805阅读:101来源:国知局
专利名称:一种分布式系统及其自动维护方法
技术领域
本发明涉及云计算领域中的分布式技术,尤其涉及一种分布式系统及其自动维护方法。
背景技术
随着互联网、传统电信网的用户和应用的日益增长,以及两者融合(成为移动互联网)趋势的不断加强,通过服务器的数据流量及访问请求也在不断增长。这对服务器的部署与维护、运行于其上的软件性能、以及整个系统的可伸缩性提出了越来越高的需求。对于这些需求,现有技术提出了一些应对的分布式计算系统。当服务器过于繁忙时,通过增加系统的负载均衡设备和服务器数量,或者通过提升单个服务器的硬件和软件性能来提升其处理能力。由于服务器成本过高、性能增长潜力有限,对其性能进行提升已不是主流的解决方案。图1是现有技术提出的一种分布式系统,如图1所示,这种系统通过负载均衡设备支撑一组服务器,负载均衡设备放置在所有服务器的前端,向外统一暴露服务的接口。负载均衡设备可能是硬件,如四层交换机;也可能是软件,如一些反向代理软件。这种系统一般应用于互联网的站点上,其设计思想是通过负载均衡设备将众多WEB服务器形成集群,从而向用户提供单一的HTML服务。这种系统在服务(应用)增多时,需要增设新的负载均衡设备,由于每个服务都需要一组服务器来支撑,而每一组服务器都使用一个负载均衡设备,这势必会造成部署成本的急剧上升,负载均衡设备也会因访问请求的大量增加而不堪重负。另外,在系统内部新增一组服务时,客户机并不能自动感知这些新增服务的服务器地址,必须经过一系列手动配置后访问请求才能被顺利送达新的服务器。在现代具有成百上千台服务器的数据中心做这样的手动配置是非常困难、低效的。因此,这种分布式 系统存在部署成本过高、后期维护困难、系统健壮性差等缺点,该系统并不能解决服务和用户增长所带来的服务器性能瓶颈等问题。图2是现有技术提出的另一种分布式系统,如图2所示,这种系统通过ESB (Enterprise Service Bus,企业服务总线)服务器支撑一组服务,所有访问请求都需要通过ESB服务器转发。ESB服务器基于SOA (Service-Oriented Architecture,面向服务架构)思想,提供了负载均衡机制,新增的服务对客户机也是透明的。然而,ESB服务器本身承担了太多功能,存在单点失效隐患和单机性能瓶颈。另一方面,在这种系统上新增一种服务或服务节点时,需要在ESB服务器上手动注册,存在维护困难、规模伸缩性差的问题。ESB服务器的另一个限制是,通常它是直接向外暴露服务的,内部服务之间不能相互调用,因此它一般应用于企业需要将内部众多系统整合并对外提供标准服务的情况,并不适用于构建大规模的分布式系统。

发明内容
本发明的目的在于,提供一种分布式系统及其自动维护方法,以解决现有分布式系统所存在的部署成本过高、性能瓶颈严重、后期维护困难、系统健壮性和伸缩性差等问题。本发明通过以下技术方案解决上述技术问题一种大规模分布式系统的自动维护方法,上述方法包括以下步骤节点启动服务后,定时向服务注册中心发送服务注册请求;上述服务注册中心根据收到的服务注册请求,对本地信息进行维护,并向上述节点或其关联节点提供信息服务。根据上述方法,上述节点包括提供服务的节点及中转服务的节点,上述服务注册请求中包含上述节点的注册信息,上述注册信息包括上述节点的IP地址、端口号以及上述节点可中转或提供的服务名称。上述服务注册中心采用以下方法对本地信息进行维护根据上述注册服务请求中的注册信息,判断上述节点是否是首次注册,若是,则将上述注册信息保存到本地节点链表中,否则将上述注册信息与上述节点链表中上述节点的旧注册信息进行比对,若两者不一致则用上述注册信息更新上述节点链表。上述服务注册中心将上述注册信息保存到本地节点链表中或用上述注册信息更新上述节点链表之后还包括以下步骤判断上述节点是否为提供服务的节点;若是,则将上述节点的注册信息发送给使用上述节点服务的关联节点,否则,向上述节点提供其要中转的服务所 属的目标节点的注册信息。上述方法还包括以下上述节点调用服务的步骤上述节点首先向上述服务注册中心发出服务调用请求;上述服务注册中心收到上述调用请求后,将可中转或提供上述节点所需服务的所有目标节点的注册信息返回给上述节点;上述节点保存目标节点的注册信息,并获取各目标节点的负载情况,然后向负载最小的目标节点发出服务调用请求;上述负载最小的目标节点收到上述调用请求后,将上述节点需要的服务返回给上述节点。根据上述方法,上述服务注册中心收到上述调用请求后,将可中转或提供上述节点所需服务的所有目标节点的注册信息返回给上述节点步骤包括上述服务注册中心将上述节点要调用的服务保存到本地上述节点链表中;根据本地上述节点链表判断是否有节点中转上述服务,若是,则将可中转上述服务的所有目标节点的注册信息发送给上述节点,否则,判断是否有节点提供上述服务;若是,则将可提供上述服务的所有目标节点的注册信息发送给上述节点,否则返回服务请求失败的信息。上述节点采用以下方法获取各个上述目标节点的负载情况根据上述目标节点的注册信息,定时向各目标节点发送自身的心跳信息;各目标节点收到心跳信息后,将自身的心跳信息返回给上述节点;上述节点根据各目标节点的心跳信息,获取其负载情况。上述心跳信息包括节点的IP地址及负载数据。
上述节点保存了目标节点的注册信息后,若下次再请求上述服务时,跳过向上述服务注册中心发出服务调用请求的步骤,直接向负载最小的目标节点发出服务调用请求,直至请求失败为止。上述分布式系统的自动维护方法还包括当上述节点未定时发送服务器注册请求时,上述服务注册中心删除上述节点在本地保存的注册信息。本发明还采用以下技术方案一种分布式系统,包括节点和服务注册中心;上述节点,用于在启动服务后,定时向服务注册中心发送服务注册请求;上述服务注册中心,用于根据收到的服务注册请求,对本地信息进行维护,并向上述节点或其关联节点提供信息服务。上述节点包括信息注册模块、服务请求模块、可选的服务提供模块、及服务接收模块;上述信息注册模块,用于定时向上述服务注册中心发送服务注册请求;上述服务请求模块,用于向上述服务注册中心或其他节点发出服务调用请求;上述服务提供模块,用于收到服务调用请求后,将自身提供的服务返回给相应的节点;上述服务接收模块,用于接收其他节点提供的服务。上述服务注册中 心包括信息维护模块、服务通知模块、及服务响应模块;上述信息维护模块,用于接收上述节点的注册请求,并根据上述注册请求对本地保存的节点信息进行维护;上述服务通知模块,用于将新增或更新的节点信息发送给其他关联节点,或向上述新增或更新的节点提供其要中转的服务所属的节点信息;上述服务响应模块,用于在收到上述节点发出的服务调用请求后,将可中转或提供相应服务的节点信息返回给上述节点。与现有技术相比,本发明具有如下有益技术效果I)服务自动发现与传统的分布式系统在新服务注册时需要手动设置不同,本发明的服务节点启动后会自动向服务注册中心注册其服务类型;其他节点需要请求这一服务时,通过服务注册中心便可得到服务所在位置。这一特性带来的好处是网络结构简单,通信链路可根据节点之间的调用关系自动建立,不需事先规划节点之间的网络结构(传统系统通常要事先规划,也无法动态做调整),这方便了在数据中心中动态增加或删除节点;2)自动均衡负载本发明节点在请求目标节点提供的服务时,自动选择负载最小的节点建立通信链路,并发送服务调用请求。从而在不引入传统负载均衡器设备的情况下,本发明也能实现节点之间的负载均衡。这不仅节省了成本,同时也消除了单一负载均衡器的单点失效隐患和单点性能瓶颈,系统健壮性更强;3)规模伸缩方便本发明节点之间是松散耦合的,任何节点故障、甚至服务注册中心故障,都不会影响系统继续运行,增加或删除节点仅仅是促使服务请求量在节点之间重新分布;因此,本发明系统的规模伸缩非常方便,有利于构建大规模的分布式计算系统;4)服务相对独立本发明节点在发送注册请求、请求调用服务、获取负载情况时均不涉及节点自身所运行的服务(软件),即软件本身不参与这些功能,这些功能均由节点底层的通信框架自动完成,软件只需关注于服务逻辑的实现。这降低了分布式计算系统的服务开发难度。


此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是现有技术提出的一种分布式系统的结构示意图;图2是现有技术提出的另一种分布式系统的结构示意图;图3是本发明分布式系统优选实施例的结构示意图;图4本发明分布式系统的自动维护方法优选实施例的流程图;图5是本发明分布式系统优选实施例的模块框图。
具体实施例方式为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。图3是本发明分布式系统优选实施例的结构示意图。如图3所示,本发明实施例中的分布式系统具有多个节点,包括提供服务的节点(服务节点)和中转服务的节点(中转节点),每个节点的硬件可以是比较廉价的计算机,但依靠系统强大的伸缩性,在整体上系统可以提供非常强大的计算能力。节点与节点、节点与服务注册中心之间可以通过计算机底层通信框架建立通信链路,例如TCP通信链路,以实现向对方持续发送信息或服务的功能。 一个节点在得到其他节点的注册信息后可与其建立通信链路,并向其发送服务调用请求。服务注册中心作为系统的核心组成,保存了所有节点的注册信息,包括所有节点的IP地址、端口号、及节点提供或中转的服务。每个服务可以分布在多个服务节点中,即一组服务节点可提供同一种服务类型。中转节点可以中转服务,但是其本身并不承载(提供)服务,因此中转节点是可选的,但中转节点可以简化系统的网络拓扑结构。例如,图3中服务节点I要调用服务B时,由于服务节点4和5可提供这种服务,故必须先向服务注册中心获取服务节点4和5的注册信息,然后判断它们的负载情况,再请求负载小的服务节点返回所需服务。而若设置了中转节点1,服务节点I仅需将服务调用请求发送给中转节点I即可。值得注意的是,本实施例服务节点I在获得服务节点4和5的注册信息后,会定时向服务节点4和5发送心跳信息,由此服务节点I不仅可以获得对方的负载情况,还可以在未收到对方心跳信息时掌握对方故障/退出的信息。例如,若服务节点I未收到服务节点5的心跳信息时,服务节点I判断服务节点5故障/退出,此时其不再将服务调用请求发送给服务节点5,直到服务注册中心通知其服务节点5重新启动为止。另外需要说明的是,本实施例的分布式系统规模可以动态伸缩,图3只是示意性地给出了 A、B两组服务,实际上本发明可以支持无限多的服务,同时本发明可以根据需要随时增加新的服务或中转节点以提升系统性能,也可以在服务请求变少时关闭部分服务节点。节点的加入和退出都是动态的,无需手工进行设置,这是因为本发明通过服务注册中心自动维护各个节点及其注册信息,新节点加入时会向服务注册中心发起注册,其他关联节点通过服务注册中心即可迅速获取新节点的信息,便将部分服务调用请求分担到新节点上。另外由于节点是要定时向服务注册中心发送注册信息的,因此当某个节点退出时,服务注册信息便可迅速感知这一状况,并将该节点信息从本地删除,而其他关联节点通过心跳信息接收的停断,也可立即探测到这一状况,新的服务调用请求将不再发送到该节点。以上从总体上对本发明分布式系统的结构及其维护(运行)机制进行了详细说明,下面将结合附图4对本发明提供的分布式系统的自动维护方法进行详细说明。图4本发明分布式系统的自动维护方法优选实施例的流程图,如图4所示,本发明优选实施例的方法包括以下步骤步骤S1:节点启动服务后,定时向服务注册中心发送服务注册请求;

当一个节点启动服务后,它开始定时向服务注册中心发送服务注册请求,上述注册请求包括节点的IP地址、端口号、以及节点可中转或提供的服务名称,其中节点可中转或提供的服务可以是一个或多个。通过定时发送上述注册请求,服务注册中心可以及时了解节点的运行情况,并在没有收到节点定时发来的注册请求时获知节点出现故障或退出系统的信息。步骤S2 :服务注册中心接收节点发来的服务注册请求;步骤S3 :服务注册中心根据收到的服务注册请求对本地信息进行维护;服务注册中心通过以下方法对本地信息进行维护根据上述注册服务请求中的注册信息,判断上述节点是否是首次注册,若是,则将上述注册信息保存到本地节点链表中,否则将上述注册信息与上述节点链表中上述节点的旧注册信息进行比对,若两者不一致则用上述注册信息更新上述节点链表。步骤S4 :服务注册中心向上述节点或其关联节点提供信息服务;服务注册中心采用以下方法向上述节点或其关联节点提供信息服务判断上述节点是否为提供服务的节点若是则将上述节点的注册信息发送给使用上述节点服务的关联节点,否则向上述节点提供其要中转的服务所属的目标节点的注册信息。通过步骤S4,当有服务节点加入或更新时,需要使用该节点服务的其他节点通过服务注册中心便可迅速知道该节点情况,并将服务请求分担到该节点上。当有中转节点加入或更新时,中转节点通过服务注册中心也可迅速知道其要中转的服务所属的节点信息,由此当其收到节点的服务调用请求时,便可将请求转发给服务节点。步骤S5 :上述节点向服务注册中心发出服务调用请求;当上述节点需要使用某个节点A提供的服务,并且上述节点本地并未记录节点A的注册信息时,可向服务注册中心发出服务调用请求,请求获取该节点A的注册信息,包括IP地址、服务端口号等,从而与该节点A建立通信链接,并获得其提供的服务。步骤S6 :服务注册中心接收上述请求,将可中转或提供上述节点所需服务的目标节点的注册信息返回给上述节点;服务注册中心收到上述请求后,首先将上述节点需要调用的服务保存于本地,以便在后续有新节点加入并可提供其所需服务时,将新节点的注册信息主动返回给上述节
然后根据本地记录的节点链表信息判断是否有节点可中转上述节点所需的服务,若是,则将可中转上述节点所需服务的目标节点的注册信息发送给上述节点,否则查找是否有节点可提供上述节点所需的服务;若是,则将可提供上述节点所需服务的所有目标节点的注册信息发送给上述节点,若否则返回服务请求失败的信息。例如,图3中的服务节点I需要请求调用服务地址未知的服务B,则服务节点I通过底层通信框架向服务注册中心发出服务B的服务调用请求,服务注册中心收到请求后,首先将服务节点I需要使用服务B的信息记录到本地节点链表中,然后查询是否有节点可中转服务B,结果发现中转节点I可以中转服务B,于是将中转节点I的注册信息发送给服务节点I。假设中转节点I故障或退出系统,则服务注册中心查询发现没有节点可中转服务B,于是查询是否有节点提供服务B,结果发现存在服务节点4和服务节点5可提供直接服务B,此时服务注册中心将服务节点4和服务节点5的注册信息发送给服务节点I。步骤S7 :上述节点保存目标节点的注册信息,获取各目标节点的负载情况,并向负载最小的目标节点发出服务调用请求;
·
上述节点在收到可中转或提供自身所需服务的所有目标节点的注册信息后,将这些目标节点的注册信息保存在本地,以便下次再要调用这些目标节点提供的服务时,跳过向服务注册中心发送服务调用请求的步骤,直接向负载最小的目标节点发送服务调用请求,直至某次请求失败时才重新向服务注册中心发送服务调用请求。上述节点采用以下方法获取各个目标节点的负载情况根据各个目标节点的注册信息,定时向各个目标节点发送自身的心跳信息;各个目标节点收到上述节点的心跳信息后,将各自的心跳信息返回给上述节点;上述节点接收各个目标节点的心跳信息,并从中获取各个目标节点的负载情况。由于所述心跳信息包含节点自身的IP地址及负载数据,因此上述节点通过与目标节点互发心跳信息,并能获取对方的负载情况。上述节点通过定时向各个目标节点发送心跳信息,不仅可以获取对方的负载情况,还可以掌握目标节点是否出现故障或退出系统等更多信息。例如,当上述节点没有收到某个目标节点返回的心跳信息时,可以判断该目标节点已出现故障或退出系统,此后服务注册请求将不再发给该目标节点。例如假设在上一步骤S6中,图3中的服务节点I向服务注册中心请求调用服务B时,收到了服务节点4和服务节点5的注册信息,则在步骤S7中,服务节点I首先将服务节点4和服务节点5的注册信息保存于本地,然后分别向服务节点4和服务节点5发送心跳信息,以获取它们的负载情况,最后选择与负载较小的一个节点建立通信链路,并向其发出服务调用请求。步骤S8 :负载最小的节点收到服务调用请求后,将上述节点所需的服务返回给上述节点;当上述负载最小的节点为中转节点时,其收到上述请求后,将上述请求转发给可直接提供上述服务的节点,并将请求结果返回给上述节点;当上述负载最小的节点为服务节点时,其收到上述请求后,直接将上述节点所需的服务返回给上述节点。步骤S9 :当上述节点未定时发送服务器注册请求时,服务注册中心删除上述节点在本地保存的注册信息。
图5是本发明分布式系统优选实施例的模块框图,如图5所示,本发明优选实施例的分布式系统包括节点51和服务注册中心52 ;上述节点51,用于在启动服务后,定时向服务注册中心52发送服务注册请求;上述服务注册中心52,用于根据收到的服务注册请求,对本地信息进行维护,并向上述节点51或其关联节点提供信息服务。上述节点51包括信息注册模块511、服务请求模块512、可选的服务提供模块513、及服务接收模块514;上述信息注册模块511,用于定时向上述服务注册中心52发送服务注册请求;上述服务请求模块512,用于向上述服务注册中心52或其他节点发出服务调用请求;上述服务提供模块513,用于在收到服务调用请求后,将自身提供的服务返回给相应的节点;上述服务接收模块514,用于接收其他节点提供的服务。上述服务注册中心52包括信息维护模块521、服务通知模块522、及服务响应模块523 ;上述信息维护模块521,用于接收上述节点51的注册请求,并根据上述注册请求对本地保存的节点信息进行维护;

上述服务通知模块522,用于将新增或更新的节点信息发送给其他关联节点,或向上述新增或更新的节点提供其要中转的服务所属的节点信息;上述服务响应模块523,用于在收到上述节点51发出的服务调用请求后,将可中转或提供相应服务的目标节点信息返回给上述节点51。上述说明示出并描述了本发明的优选实施例,但如前所述,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
权利要求
1.一种分布式系统的自动维护方法,其特征在于,所述方法包括以下步骤 节点启动服务后,定时向服务注册中心发送服务注册请求; 所述服务注册中心根据收到的服务注册请求,对本地信息进行维护,并向所述节点或其关联节点提供信息服务。
2.根据权利要求1所述的方法,其特征在于所述节点包括提供服务的节点及中转服务的节点,所述服务注册请求中包含所述节点的注册信息,所述注册信息包括所述节点的IP地址、端口号以及所述节点可中转或提供的服务名称。
3.根据权利要求2所述的方法,其特征在于,所述服务注册中心采用以下方法对本地信息进行维护 根据所述注册服务请求中的注册信息,判断所述节点是否是首次注册,若是,则将所述注册信息保存到本地节点链表中,否则将所述注册信息与所述节点链表中所述节点的旧注册信息进行比对,若两者不一致则用所述注册信息更新所述节点链表。
4.根据权利要求3所述的方法,其特征在于,所述服务注册中心将所述注册信息保存到本地节点链表中或用所述注册信息更新所述节点链表之后还包括以下步骤 判断所述节点是否为提供服务的节点; 若是,则将所述节点的注册信息发送给使用所述节点服务的关联节点,否则,向所述节点提供其要中转的服务所属的目标节点的注册信息。
5.根据权利要求4所述的方法,其特征在于所述方法还包括节点调用服务的步骤 所述节点首先向所述服务注册中心发出服务调用请求; 所述服务注册中心收到所述调用请求后,将可中转或提供所述节点所需服务的所有目标节点的注册信息返回给所述节点; 所述节点保存目标节点的注册信息,并获取各目标节点的负载情况,然后向负载最小的目标节点发出服务调用请求; 所述负载最小的目标节点收到所述调用请求后,将所述节点需要的服务返回给所述节点。
6.根据权利要求5所述的方法,其特征在于,所述服务注册中心收到所述调用请求后,将可中转或提供所述节点所需服务的所有目标节点的注册信息返回给所述节点步骤包括 所述服务注册中心将所述节点要调用的服务保存到本地所述节点链表中; 根据本地所述节点链表判断是否有节点中转所述服务,若是,则将可中转所述服务的所有目标节点的注册信息发送给所述节点,否则,判断是否有节点提供所述服务; 若是,则将可提供所述服务的所有目标节点的注册信息发送给所述节点,否则返回服务请求失败的息。
7.根据权利要求5所述的方法,其特征在于,所述节点采用以下方法获取各个所述目标节点的负载情况 根据所述目标节点的注册信息,定时向各目标节点发送自身的心跳信息; 所述目标节点收到心跳信息后,将自身的心跳信息返回给所述节点; 所述节点根据目标节点的心跳信息,获取其负载情况。
8.根据权利要求7所述的方法,其特征在于所述心跳信息包括节点的IP地址及负载数据。
9.根据权利要求5所述的方法,其特征在于所述节点保存了目标节点的注册信息后,若下次再请求所述服务时,跳过向所述服务注册中心发出服务调用请求的步骤,直接向负载最小的目标节点发出服务调用请求,直至请求失败为止。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括当所述节点未定时发送服务器注册请求时,所述服务注册中心删除所述节点在本地保存的注册信息。
11.一种分布式系统,包括节点,其特征在于还包括服务注册中心; 所述节点,用于在启动服务后,定时向服务注册中心发送服务注册请求; 所述服务注册中心,用于根据收到的服务注册请求,对本地信息进行维护,并向所述节点或其关联节点提供信息服务。
12.根据权利要求11所述的系统,其特征在于所述节点包括信息注册模块、服务请求模块、可选的服务提供模块、及服务接收模块; 所述信息注册模块,用于定时向所述服务注册中心发送服务注册请求; 所述服务请求模块,用于向所述服务注册中心或其他节点发出服务调用请求; 所述服务提供模块,用于在收到服务调用请求后,将自身提供的服务返回给相应的节占. 所述服务接收模块,用于接收其他节点提供的服务。
13.根据权利要求11所述的系统,其特征在于所述服务注册中心包括信息维护模块、服务通知模块、及服务响应模块; 所述信息维护模块,用于接收所述节点的注册请求,并根据所述注册请求对本地保存的节点信息进行维护; 所述服务通知模块,用于将新增或更新的节点信息发送给其他关联节点,或向所述新增或更新的节点提供其要中转的服务所属的节点信息; 所述服务响应模块,用于在收到所述节点发出的服务调用请求后,将可中转或提供相应服务的节点信息返回给所述节点。
全文摘要
本发明公开了一种分布式系统及其自动维护方法,上述方法包括以下步骤节点启动服务后,定时向服务注册中心发送服务注册请求;上述服务注册中心根据收到的服务注册请求,对本地信息进行维护,并向上述节点或其关联节点提供信息服务。本发明的分布式系统规模可以动态收缩,节点启动后会自动发起服务注册,无需手动配置;节点之间通过调用关系自动形成网状关系并可动态调整,网络结构无需事先规划,此外本发明系统维护简单,构建成本较低。
文档编号H04L29/06GK103051551SQ20111031021
公开日2013年4月17日 申请日期2011年10月13日 优先权日2011年10月13日
发明者乔旭峰, 王东, 余玲玲 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1