首页> 中国专利> 分布式网络系统容错方法、装置及容错式分布式网络系统

分布式网络系统容错方法、装置及容错式分布式网络系统

摘要

本申请实施例公开了一种分布式网络系统容错方法、装置及容错式分布式网络系统。当一个地区的负载均衡单元发生故障或其对应的后端服务单元集群全部发生故障时,DNS可以自动将原本属于该地区的服务请求迁移至其他地区。当属于一个地区的服务请求被发送到其他地区时,如果原地区的负载均衡单元发生故障,但原地区存在正常运行的后端服务单元,则将客户端服务请求转发给原地区的后端服务单元;如果原地区负载均衡单元和后端服务单元集群都发生故障,则将服务请求发送给其他地区的后端服务单元;如果原地区负载均衡单元和后端服务单元都正常运行,则将服务请求重定向到原地区处理。从而使分布式系统能够从故障中快速地回复正常运行。

著录项

  • 公开/公告号CN106209411A

    专利类型发明专利

  • 公开/公告日2016-12-07

    原文格式PDF

  • 申请/专利权人 阿里巴巴集团控股有限公司;

    申请/专利号CN201510232689.5

  • 发明设计人 李锴;

    申请日2015-05-08

  • 分类号H04L12/24(20060101);H04L12/26(20060101);

  • 代理机构北京弘权知识产权代理事务所(普通合伙);

  • 代理人逯长明;许伟群

  • 地址 开曼群岛大开曼岛

  • 入库时间 2023-06-19 01:03:10

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-06-07

    授权

    授权

  • 2017-01-04

    实质审查的生效 IPC(主分类):H04L12/24 申请日:20150508

    实质审查的生效

  • 2016-12-07

    公开

    公开

说明书

技术领域

本发明涉及网络技术领域,尤其涉及一种分布式网络系统容错方法、装置及容错式分布式网络系统。

背景技术

通常分布式网络系统如图1所示,包括DNS(Domain Name System,域名系统,因特网上作为域名和IP地址相互映射的一个分布式数据库)、负载均衡单元、后端处理单元集群(多个后端处理单元)和后端运行检测单元。一个DNS会对应一个或多个负载均衡单元,每个负载均衡单元对应多个后端处理单元集群,一个负载均衡单元和其对应的后端处理单元集群及后端运行检测装置可称为一个数据中心。其中,DNS接收到用户的客户端通过网络发送的服务请求后,将服务的URL(Uniform Resource Locator,统一资源定位符,即网址)转换为IP(Internet Protocol)地址,这一过程称为IP路由,这些IP地址可以属于同一或不同地区的不同负载均衡单元。DNS接收到请求后,根据IP地址通过负载均衡单元将请求转发给后端处理单元集群中的一台或多台后端处理单元进行处理。

DNS进行域名解析时,会将所有地区数据中心的域名(总域名,由用户输入)映射到分地区域名,然后将分地区域名映射到该地区数据中心的负载均衡单元的IP地址。例如,某应用部署在A、B和C地区的数据中心,总域名为www.someapp.com,A、B和C的分地区域名分别为a.someapp.com、b.someapp.com和c.someapp.com,总域名与三个地区域名相映射,三个地区域名与各自对应的负载均衡单元的IP地址相映射。DNS的功能包括基于地理位置的域名解析或者基于延迟的域名解析,对于一个特定的请求,基于地理位置的域名解析将域名解析为距离用户地理最近的一个负载均衡单元的IP地址,基于延迟的域名解析则将域名解析为响应速度最快(延迟最小)的地区的分地区域名,并得到对应的IP地址,这样可以加速用户访问和改善系统性能。

负载均衡单元接收DNS转发的服务请求,然后根据其对应的各个后端处理单元的实际运行状况将服务请求具体分配到某个或某几个后端处理单元中,其地址即对外公开的IP地址。负载均衡单元只做负载均衡任务分配,不对网络请求进行处理。后端处理单元接收到负载均衡单元分配的服务请求后,对该服务请求进行具体处理,并将响应结果返回服务请求发送方。后端运行检测装置用于对其负责的后端处理单元的运行状况进行检测,当后端处理单元出现故障时,后端运行检测装置通知负载均衡单元该后端处理单 元不可用,负载均衡单元接收到故障通知后,在分配服务请求时排除该后端处理单元。

分布式网络系统在服务器集群规模扩大时,硬件发生故障的概率会成比例增加,运行的软件系统在更新速度提高时,软件发生故障的概率也会增加。如果集群规模很大且软件更系速度很频繁,则整个系统软硬件持续不断地发生各种故障的概率将大大增加。现阶段的分布式网络系统,当一个地区的所有后端处理单元同时发生故障或负载均衡单元本身发生故障时,即使分布式网络系统中有仍在正常运行的其他后端处理单元,所有发送给该地区数据中心的服务请求都无法被处理,这样不仅使得用户的服务请求得不到响应,也在很大程度上浪费了系统资源。

发明内容

为克服相关技术中分布式网络系统的数据中心发生故障导致对应的用户服务请求得不到响应的问题,本申请提供一种分布式网络系统容错方法、装置及容错式分布式网络系统。

根据本申请实施例的第一方面,提供一种分布式网络系统容错方法,包括:

获取负载均衡单元和后端服务单元的故障检测结果;

接收本地负载均衡单元转发的非本地服务请求,所述非本地服务请求由域名系统在所述非本地服务请求对应的IP地址不可用时,转发至本地负载均衡单元;

根据负载均衡单元和后端服务单元的故障检测结果,将所述非本地服务请求转发至后端服务单元,包括:

判断所述非本地服务请求所属地区是否存在正常运行的后端服务单元,以及判断所述服务请求所属地区的负载均衡单元是否正常运行;

如果所述非本地服务请求所属地区的后端服务单元全部存在故障,则将所述非本地服务请求转发至本地区中正常运行的后端服务单元;

如果所述非本地服务请求所属地区存在正常运行的后端服务单元,且所述非本地服务请求所属地区的负载均衡单元存在故障,将所述非本地服务请求转发至所述服务请求所属地区中正常运行的后端服务单元;

如果所述非本地服务请求所属地区的负载均衡单元正常运行,且所述非本地服务请求所属地区存在正常运行的后端服务单元,则将所述非本地服务请求重定向至所述服务请求所属地区的负载均衡单元。

可选的,所述的分布式网络系统容错方法,还包括:

步骤a1,当接收到的服务请求对应的流量大于转发所至后端服务单元的流量处理容 量时,判断是否存在未启动的备用后端服务单元;

步骤a2,如果不存在未启动的备用后端服务单元,则对所述服务请求中大于所述流量处理容量的部分,向服务请求发送方返回错误信息;

步骤a3,如果存在未启动的备用后端服务单元,则启动所述备用后端服务单元,重新计算后端服务单元的流量处理容量后,返回步骤a1。

可选的,所述的分布式网络系统容错方法,还包括:

后端服务单元将数据存储操作消息异步发送至其他地区后端服务单元的数据存储操作复制消息队列,后端服务单元将所述数据存储操作复制消息队列中的数据存储操作应用到本地后端服务单元的数据存储服务中。

根据本申请实施例的第二方面,提供一种分布式网络系统容错装置,包括:

故障检测结果获取单元,用于获取负载均衡单元和后端服务单元的故障检测结果;请求路由单元,用于接收本地负载均衡单元转发的非本地服务请求,并根据负载均衡单元和后端服务单元的故障检测结果,将所述非本地服务请求转发至后端服务单元,所述非本地服务请求由域名系统在所述非本地服务请求对应的IP地址不可用时,转发至本地负载均衡单元,所述请求路由单元包括:

第一判断子单元,用于判断所述非本地服务请求所属地区是否存在正常运行的后端服务单元,以及判断所述服务请求所属地区的负载均衡单元是否正常运行;

第一执行子单元,如果所述非本地服务请求所属地区的后端服务单元全部存在故障,则将所述非本地服务请求转发至本地区中正常运行的后端服务单元;

第二执行子单元,如果所述非本地服务请求所属地区存在正常运行的后端服务单元,且所述非本地服务请求所属地区的负载均衡单元存在故障,将所述非本地服务请求转发至所述服务请求所属地区中正常运行的后端服务单元;

第三执行子单元,如果所述非本地服务请求所属地区的负载均衡单元正常运行,且所述非本地服务请求所属地区存在正常运行的后端服务单元,则将所述非本地服务请求重定向至所述服务请求所属地区的负载均衡单元。

可选的,所述的分布式网络系统容错装置,还包括:

备用后端服务判断单元,用于当接收到的服务请求对应的流量大于转发所至后端服务单元的流量处理容量时,判断是否存在未启动的备用后端服务单元;

消息返回单元,用于如果不存在未启动的备用后端服务单元,则对所述服务请求中大于所述流量处理容量的部分,向服务请求发送发返回响应错误消息;

容量扩充单元,用于如果存在未启动的备用后端服务单元,则启动所述备用后端服务单元,重新计算后端服务单元的流量处理容量后,返回所述备用后端服务判断单元。

可选的,所述的分布式网络系统容错装置,还包括应用于后端服务单元中的操作同步单元,所述操作同步单元包括:

操作消息发送子单元,用于将数据存储操作消息异步发送至其他地区后端服务单元的数据存储操作复制消息队列;

操作应用子单元,用于将所述数据存储操作复制消息队列中的数据存储操作应用到本地后端服务单元的数据存储服务中。

根据本申请实施例的第三方面,提供一种容错式分布式网络系统,包括域名系统、负载均衡单元和后端服务单元,还包括如本申请第二方面所述的分布式网络系统容错装置。

本申请实施例提供的技术方案可以包括以下有益效果:当一个地区的负载均衡单元发生故障或其对应的后端服务单元集群全部发生故障时,DNS可以自动将原本属于该地区的服务请求迁移至其他地区。当属于一个地区的请求发送到其他地区时,如果原地区的负载均衡单元发生故障,但原地区存在正常运行的后端服务单元时,将客户端服务请求转发给原地区的后端服务单元进行处理;如果原地区负载均衡单元和后端服务单元集群都发生故障,则将服务请求发送给其他地区的后端服务单元处理;如果原地区负载均衡单元和后端服务单元都正常运行,则将服务请求重定向到原地区处理。从而消除单个地区的后端服务单元对该地区的负载均衡单元的依赖,使分布式系统能够从故障中快速地恢复正常运行,提高了多地区服务的高可用性。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为分布式网络系统示意图。

图2为本申请一示例性实施例示出的一种分布式网络系统容错方法的流程示意图。

图3为本申请另一示例性实施例示出的一种分布式网络系统容错方法的流程示意图。

图4为图3中步骤S3032的一种流程示意图。

图5为本申请一示例性实施例示出的一种分布式网络系统容错装置的框图。

图6为本申请另一示例性实施例示出的一种分布式网络系统容错装置的框图。

图7为本申请一示例性实施例示出的一种容错式分布式网络系统的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

为了全面理解本申请,在以下详细描述中提到了众多具体的细节,但是本领域技术人员应该理解,本申请可以无需这些具体细节而实现。在其他实施例中,不详细描述公知的方法、过程、组件和电路,以免不必要地导致实施例模糊。

为更好的理解本申请,对分布式网络系统再做简要描述。分布式网络系统由DNS(域名系统)、负载均衡单元、后端处理单元集群和后端运行检测装置组成。在一个分布式网络系统中,通常有多个负载均衡单元,每个负载均衡单元负责一个地区的后端处理单元集群。

DNS接收到用户客户端发送的服务请求后,将服务请求的URL转换为IP(Internet Protocol)地址,所述转换优先将URL转换为距离用户地理位置最近的IP地址(基于地理位置的域名解析),或者所述转换优先将URL转换为响应速度最快的IP地址(基于延迟的域名解析),然后DNS将服务请求发送给与所述IP地址对应的负载均衡单元。

负载均衡单元根据各个后端处理单元的实际运行状况将服务请求具体分配到一个或多个后端处理单元。后端处理单元接收到服务请求后进行处理,并将响应结果返回给服务请求发送方。后端运行检测装置则对其负责的后端处理单元集群的运行状况进行检测,当后端处理单元出现故障时,后端运行检测装置通知负载均衡单元该后端处理单元不可用,负载均衡单元接收到故障通知后,在分配服务请求时排除该后端处理单元。

图2为本申请一示例性实施例示出的一种分布式网络系统容错方法的流程示意图,如图2所示,所述方法包括:

步骤S201,获取负载均衡单元和后端服务单元的故障检测结果;

其中,对一个分布式网络系统,可以在每个地区的负载均衡单元中配置第一故障检测单元来进行故障检测,也可以使用配置于负载均衡单元之外的第一故障检测单元,将 第一故障检测单元与每个负载均衡单元连接来检测负载均衡单元是否存在故障。对负载均衡单元的故障检测可以使用常规的负载均衡单元故障检测方法,例如,向负载均衡单元发送约定的检测请求,如果负载均衡单元的响应内容不符合约定的内容或者负载均衡单元的响应超时,则说明负载均衡单元存在故障。

对每个地区的负载均衡单元对应的后端服务单元集群,可以在每个后端服务单元中配置第二故障检测单元来进行故障检测,也可以对每个后端服务单元集群使用一个第二故障检测单元,将第二故障检测单元与后端服务单元集群中的每个后端服务单元连接来进行故障检测,还可以配置总的第二故障检测单元,将该第二故障检测单元与每个地区的所有后端服务单元连接来进行检测。对后端服务单元的故障检测可以使用常规的后端服务单元故障检测方法,例如,与负载均衡单元的故障检测相似,可以向后端服务单元发送约定的检测请求,如果后端服务单元的响应内容不符合约定的内容或者后端服务单元的响应超时,则说明后端服务单元存在故障;或者,读取后端服务单元相关的属性变量,如果某个属性变量异常,则说明后端服务单元存在故障。

本申请所提供的方法,获取所有负载均衡单元故障检测结果和所有后端服务单元检测结果,其中,可以先获取所有负载均衡单元故障检测数据和所有后端服务单元检测数据,所述负载均衡单元故障检测数据包含能够确定所述负载均衡单元是否存在故障的变量,例如,对某个负载均衡单元而言,故障检测数据包括故障变量a,负载均衡单元无故障时a=1,负载均衡单元存在故障时a=0,获取到该负载均衡单元的故障检测数据后,根据a的值便能够获取到该负载均衡单元的故障检测结果,也就是确定该负载均衡单元是否存在故障;同样的,所述后端服务单元故障检测数据包含可以确定所述后端服务单元是否存在故障的变量,获取到获取到后端服务单元的故障检测数据后,便能够获取到后端服务单元的故障检测结果,确定后端服务单元是否存在故障。

步骤S202,接收本地负载均衡单元转发的非本地服务请求,所述非本地服务请求由域名系统在所述非本地服务请求对应的IP地址不可用时,转发至本地负载均衡单元;

其中,对于DNS而言,接收到用户客户端发送的服务请求后,将服务请求的URL转换为IP地址,优选的是将URL转换为距离用户地理位置最近的IP地址,以降低响应时间,然后DNS将服务请求发送给与IP地址对应的负载均衡单元,所述IP地址对应的负载均衡单元即目标负载均衡单元。DNS可以定时向各个负载均衡单元发送延迟检测请求,负载均衡单元接收到延迟检测请求后如果响应时间超过预设的时间,则DNS认为该负载均衡单元不可用,服务请求也不会转发给该负载均衡单元。如果服务请求对应的IP地址恰好属于不可用的负载均衡单元,也就是服务请求的IP地址对应的目标负载均衡单元不可用,则DNS将接收到的服务请求转发至其他地区的负载均衡单元,优选的是将接收到的服务请求转发至与目标负载均衡单元地理位置最近的地区的负载均衡单元(即与 目标负载均衡单元的IP地址最近的IP地址对应的负载均衡单元),或者转发至响应延迟时间与目标负载均衡单元最接近的负载均衡单元,此处所述响应延迟时间为服务请求发送方到负载均衡单元的响应延迟时间。目标负载均衡单元有故障,或者目标负载均衡单元负责的后端服务单元集群全部有故障,都会导致DNS接收延迟检测请求响应的响应时间大于预设的延迟时间,或者接收不到目标负载均衡单元返回的延迟检测请求响应(即响应时间趋于无穷,远大于预设的延迟时间)。对于分布式网络系统的一个地区而言,当本来应该转发至非本地(即其他地区)负载均衡单元的服务请求,由于该非本地负载均衡单元对DNS的延迟检测请求响应发生延迟,DNS可能将该服务请求转发至本地负载均衡单元。本申请中,是在本地负载均衡单元和本地后端服务单元集群中设置中间层,所述中间层称为请求路由单元。请求路由单元接收到本地负载均衡单元转发的非本地服务请求时,执行步骤S203。

其中,DNS也可以直接根据负载均衡单元和后端服务单元的故障检测结果来判别是否迁移服务请求,也就是改变服务请求对应的IP地址,将某一地区的服务请求转发至其他地区的负载均衡单元。将DNS与第一检测单元和第二检测单元连接,当检测结果为某个负载均衡单元发生故障,或者某个负载均衡单元对应的服务单元集群全部发生故障时,DNS将原本应转发至该负载均衡单元的服务请求转发至其他地区的负载均衡单元。这种方式相比判断负载均衡单元返回的延迟检测请求响应是否延迟的方法效率高,但DNS与多个故障检测单元连接并获取检测结果进行综合分析,会加大DNS的负担。

步骤S203,根据负载均衡单元和后端服务单元的故障检测结果,将所述非本地服务请求转发至后端服务单元。

其中,接收到本地负载均衡单元转发的非本地服务请求后,根据得到的所有负载均衡单元的故障检测结果及所有后端服务单元的检测结果对所述非本地服务请求进行转发处理。

所述步骤S203,在一种可能的实施方式中,包括:

步骤S2031,判断所述非本地服务请求所属地区是否存在正常运行的后端服务单元;

步骤S2032,判断所述非本地服务请求所属地区的负载均衡单元是否正常运行;

步骤S2033,如果所述非本地服务请求所属地区的后端服务单元全部存在故障,则将所述非本地服务请求转发至本地区中正常运行的后端服务单元;

步骤S2034,如果所述非本地服务请求所属地区存在正常运行的后端服务单元,且所述非本地服务请求所属地区的负载均衡单元存在故障,将所述非本地服务请求转发至所述非本地服务请求所属地区中正常运行的后端服务单元;

步骤S2035,如果所述非本地服务请求所属地区的负载均衡单元正常运行,且所述 非本地服务请求所属地区存在正常运行的后端服务单元,则将所述非本地服务请求重定向至所述服务请求所属地区的负载均衡单元。

其中,步骤S2031与步骤S2032可以同时进行,根据接收到的所有后端服务单元的故障检测情况,判断非本地服务请求所属地区的后端服务单元集群中是否存在正常运行(无故障)的后端服务单元,并根据接收到的所有负载均衡单元的故障检测情况,判断所述非本地服务请求所属地区的负载均衡单元是否正常运行(无故障)。

如果所述非本地服务请求所属地区的后端服务单元全部存在故障,也就是非本地服务请求所属地区的后端服务单元集群无法处理服务请求,则将所述非本地服务请求转发至本地区中正常运行的后端服务单元。如果所述非本地服务请求所属地区存在正常运行的后端服务单元,也就是非本地服务请求所属地区的后端服务单元集群可以处理服务请求,这种情况下,如果所述非本地服务请求所属地区的负载均衡单元有故障,则将所述非本地服务请求转发至所述非本地服务请求所属地区中正常运行的后端服务单元,仍由非本地服务请求所述地区的后端服务单元处理,这样可以使服务请求是在离用户地理位置最近的后端服务单元进行处理,有利于提高服务请求处理的响应效率。

如果所述非本地服务请求所属地区的负载均衡单元正常运行,且所述非本地服务请求所属地区存在正常运行的后端服务单元,则将所述非本地服务请求重定向至所述服务请求所属地区的负载均衡单元,仍由所述非本地服务请求所述地区的负载均衡单元重新对属于其的服务请求进行转发。这种情况在于,原本所述非本地服务请求所属地区存在正常运行的后端服务单元,且所述非本地服务请求所属地区的负载均衡单元存在故障,因此DNS转发所述非本地服务请求时,将所述非本地服务请求转发到本地负载均衡单元,同时DNS中会缓存该操作,所述非本地服务请求所属地区的负载均衡单元恢复正常运行后,由于DNS中缓存尚未失效,在缓存失效时间段(TTL,Time To Live)内,DNS仍会将非本地服务请求转发到本地负载均衡单元,但此时所述非本地服务请求所属地区的负载均衡单元的检测结果是无故障,这种情况下,本地路由请求单元将所述非本地服务请求重定向至所述非本地服务请求所属地区的负载均衡单元,仍由其所属地区的负载均衡单元转发至对应的后端服务单元进行处理,以使服务请求的处理更有效率。

所述步骤S203,在另一种可能的实施方式中,包括:

步骤S2031,判断所述非本地服务请求所属地区是否存在正常运行的后端服务单元;

步骤S2032,如果所述非本地服务请求所属地区的后端服务单元全部存在故障,则将所述非本地服务请求转发至本地区中正常运行的后端服务单元;

步骤S2033,如果所述非本地服务请求所属地区存在正常运行的后端服务单元,判断所述非本地服务请求所属地区的负载均衡单元是否正常运行;

步骤S2034,如果所述非本地服务请求所属地区存在正常运行的后端服务单元,且所述非本地服务请求所属地区的负载均衡单元存在故障,将所述非本地服务请求转发至所述非本地服务请求所属地区中正常运行的后端服务单元;

步骤S2035,如果所述非本地服务请求所属地区的负载均衡单元正常运行,且所述非本地服务请求所属地区存在正常运行的后端服务单元,则将所述非本地服务请求重定向至所述服务请求所属地区的负载均衡单元。

其中,当步骤S2031的判断结果为所述非本地服务请求所属地区存在正常运行的后端服务单元时,才进行步骤S2033的判断,这样,在所述非本地服务请求所属地区的后端服务单元全部故障时,可以省略步骤S2033的执行,从而节省系统资源,减小系统处理压力。

图3为本申请另一示例性实施例示出的一种分布式网络系统容错方法的流程示意图,如图3所示,所述方法包括:

步骤S301,获取负载均衡单元和后端服务单元的故障检测结果;

步骤S302,接收本地负载均衡单元转发的非本地服务请求,所述非本地服务请求由域名系统在所述非本地服务请求对应的IP地址不可用时,转发至本地负载均衡单元;

步骤S303,根据负载均衡单元和后端服务单元的故障检测结果,将所述非本地服务请求转发至后端服务单元。

所述步骤S303包括:

步骤S3031,判断所述非本地服务请求所属地区是否存在正常运行的后端服务单元;

步骤S3032,如果所述非本地服务请求所属地区的后端服务单元全部存在故障,则将所述非本地服务请求转发至本地区中正常运行的后端服务单元;

步骤S3033,如果所述非本地服务请求所属地区存在正常运行的后端服务单元,判断所述非本地服务请求所属地区的负载均衡单元是否正常运行;

步骤S3034,如果所述非本地服务请求所属地区存在正常运行的后端服务单元,且所述非本地服务请求所属地区的负载均衡单元存在故障,将所述非本地服务请求转发至所述非本地服务请求所属地区中正常运行的后端服务单元;

步骤S3035,如果所述非本地服务请求所属地区的负载均衡单元正常运行,且所述非本地服务请求所属地区存在正常运行的后端服务单元,则将所述非本地服务请求重定向至所述服务请求所属地区的负载均衡单元。

其中,如图4所示,所述步骤S3032可以包括:

步骤b1,如果所述非本地服务请求所属地区的后端服务单元全部存在故障,判断接收到的非本地服务请求对应的流量是否大于转发所至后端服务单元的流量处理容量;

步骤b2,当接收到的非本地服务请求对应的流量大于所述转发所至后端服务单元的流量处理容量时,判断是否存在未启动的本地备用后端服务单元;

步骤b3,如果存在未启动的本地备用后端服务单元,则启动所述本地备用后端服务单元,重新计算本地后端服务单元的流量处理容量后,返回步骤b1;

步骤b4,如果不存在未启动的本地备用后端服务单元,则对所述非本地服务请求中大于所述流量处理容量的部分,向服务请求发送方返回错误信息;

步骤b5,当接收到的所述非本地服务请求对应的流量小于或等于转发所至后端服务单元的流量处理容量时,将所述非本地服务请求转发至本地区中正常运行的后端服务单元。

其中,转发所至后端服务单元的流量处理容量,即本地后端服务单元的流量处理容量。如果所述非本地服务请求所属地区的后端服务单元全部存在故障,则将所述非本地服务请求转发至本地区中正常运行的后端服务单元,在转发之前,为了防止服务请求的流量要求大于正常运行的后端服务单元的流量处理容量时后端服务单元出错,使得服务请求不能得到正确和正常的处理,故对服务请求对应的流量大于所述流量处理容量的情况进行处理,以保护后端服务单元能够正常运行,处理方法如下:

当接收到的非本地服务请求对应的流量大于转发所至后端服务单元的流量处理容量时,先判断是否存在未启动的本地备用后端服务单元,如果存在未启动的本地备用后端服务单元,则启动所述本地备用后端服务单元,重新计算本地后端服务单元的流量处理容量后,再判断接收到的非本地服务请求对应的流量是否大于转发所至后端服务单元的流量处理容量,也就是判断本地备用后端服务单元启动后,总的流量处理容量是否足以处理所述非本地服务请求,如果不足以处理所述非本地服务请求,则继续判断是否存在未启动的本地备用后端服务单元,这是因为有可能有后续添加的本地备用后端服务单元,如果已经不存在未启动的本地备用后端服务单元,则说明总的流量处理容量确定是不足以处理所述非本地服务请求的,此时对对所述非本地服务请求中大于所述流量处理容量的部分,向服务请求发送方返回错误信息,提醒超出所述流量处理容量的部分无法响应。确定总的流量处理容量不足以处理所述非本地服务请求时,可以将所述非本地服务请求全部不转发至本地后端服务单元进行处理,只向服务请求发送方返回错误信息,也可以只对超出所述流量处理容量的部分不转发至本地后端服务单元进行处理,并向服务请求发送方返回错误信息,而将其他部分转发至本地后端服务单元进行处理。

当接收到的所述非本地服务请求对应的流量小于或等于转发所至后端服务单元的 流量处理容量时,将所述非本地服务请求转发至本地区中正常运行的后端服务单元进行处理。

需要说明的是,对于接收到的本地服务请求,也可以进行相同的处理,也就是先判断本地服务请求要求的流量是否大于本地后端服务单元的流量处理容量,根据判断结果进行后续处理。

其中,对于步骤S3034而言,与步骤S3032类似,如果所述非本地服务请求所属地区存在正常运行的后端服务单元,且所述非本地服务请求所属地区的负载均衡单元存在故障,将所述非本地服务请求转发至所述非本地服务请求所属地区中正常运行的后端服务单元之前,也可以先判断所述非本地服务请求要求的流量是否大于所述非本地服务请求所述地区中正常运行的后端服务单元的流量处理容量。因此所述步骤S3034可以包括:

步骤c1,如果所述非本地服务请求所属地区存在正常运行的后端服务单元,且所述非本地服务请求所属地区的负载均衡单元存在故障,判断接收到的非本地服务请求对应的流量是否大于转发所至后端服务单元的流量处理容量;

其中,所述转发所至后端服务单元的流量处理容量即所述非本地服务请求所属地区中后端服务单元的流量处理容量。

步骤c2,当接收到的非本地服务请求对应的流量大于转发所至后端服务单元的流量处理容量时,判断是否存在未启动的所述非本地服务请求所属地区的备用后端服务单元;

步骤c3,如果存在未启动的所述非本地服务请求所属地区的备用后端服务单元,则启动所述非本地服务请求所属地区的备用后端服务单元,重新计算所述非本地服务请求所属地区的后端服务单元的流量处理容量后,返回步骤c1;

步骤c4,如果不存在未启动的所述非本地服务请求所属地区的备用后端服务单元,则对所述非本地服务请求中大于所述流量处理容量的部分,向DNS返回错误信息;

步骤c5,当接收到的所述非本地服务请求对应的流量小于或等于转发所至后端服务单元的流量处理容量时,将所述非本地服务请求转发至所述非本地服务请求所属地区中正常运行的后端服务单元。

其中,步骤S303由请求路由单元执行,但本地请求路由单元对非本地的后端服务单元进行流量处理容量判断和计算,以及启动非本地的备用后端服务单元,相比针对本地后端服务单元的操作而言效率会较低。

步骤S304,后端服务单元将数据存储操时作消息异步发送至其他地区后端服务单元的数据存储操作复制消息队列,后端服务单元将所述数据存储操作复制消息队列中的数据存储操作应用到本地后端服务单元的数据存储服务中。

其中,后端服务单元如果发生故障,由于故障期间与其他后端服务单元的数据存储操作不同步,在处理服务请求时会由于数据过时而发生错误。因此,后端服务单元发生数据存储操作时,将数据存储操作消息发送至其他地区后端服务单元的数据存储操作复制消息队列,后端服务单元启动一个数据复制服务,以自动接收数据存储操作复制消息队列中的消息,并将消息中的数据存储操作应用到其数据存储服务中。例如,一个后端服务单元中发生对数据库的增加、修改或删除等操作,该后端服务单元将相关操作消息发送至其他后端服务单元的数据存储操作复制消息队列,其他后端服务单元根据数据存储操作复制消息队列中的消息进行相同的数据存储操作,从而各个后端服务单元中的数据能够保持一致。需要说明的是,后端服务单元的数据存储操作复制消息队列为单独的服务,不与后端服务单元对服务请求进行处理的相关服务发生联系,后端服务单元发生故障指失去对服务请求进行处理的能力。如果有后端服务单元发生故障,其恢复正常运行时,将根据数据存储操作复制消息队列来同步其他后端服务单元发生的数据操作,这样即使后端服务单元发生故障,也不会出现恢复运行后数据过时和与其他后端服务单元数据不一致的情况。

在另一种可能的实施方式中,所有后端服务单元可以共享一个数据存储操作复制消息队列,这种情况可以减少整个系统中重复的数据和操作复制,提高数据存储操作同步效率,但是如果数据存储操作复制消息队列出错,则所有后端服务单元都无法进行数据存储操作的同步。

本申请实施例提供的分布式网络系统容错方法,当一个地区的负载均衡单元发生故障或其对应的后端服务单元集群全部发生故障时,DNS可以自动将原本属于该地区的服务请求迁移至其他地区。当属于A地区的请求发送到B地区时,如果原A地区的负载均衡单元发生故障,而A地区存在正常运行的后端服务单元时,B地区将客户端服务请求转发给A地区的后端服务单元进行处理;如果A地区负载均衡单元和后端服务都发生故障,则将服务请求发送给B地区本地的后端服务单元处理;如果A地区负载均衡单元和后端服务单元都正常运行,则将服务请求重定向到A地区处理。从而消除单个地区的后端服务单元对该地区的负载均衡单元的依赖,使分布式系统能够从故障中快速地回复正常运行,提高了多地区服务的高可用性。

通过以上的方法实施例的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,并存储在一个存储介质中,包括若干指令用以使得一台智能设备执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可 以存储数据和程序代码的介质。

图5为本申请一示例性实施例示出的一种分布式网络系统容错装置的框图。如图5所示,所述装置包括:

故障检测结果获取单元U501,用于获取负载均衡单元和后端服务单元的故障检测结果;

请求路由单元U502,用于接收本地负载均衡单元转发的非本地服务请求,并根据负载均衡单元和后端服务单元的故障检测结果,将所述非本地服务请求转发至后端服务单元,所述非本地服务请求由域名系统在所述非本地服务请求对应的IP地址不可用时,转发至本地负载均衡单元,所述请求路由单元包括:

第一判断子单元U5021,用于判断所述非本地服务请求所属地区是否存在正常运行的后端服务单元,以及判断所述服务请求所属地区的负载均衡单元是否正常运行;

第一执行子单元U5022,如果所述非本地服务请求所属地区的后端服务单元全部存在故障,则将所述非本地服务请求转发至本地区中正常运行的后端服务单元;

第二执行子单元U5023,如果所述非本地服务请求所属地区存在正常运行的后端服务单元,且所述非本地服务请求所属地区的负载均衡单元存在故障,将所述非本地服务请求转发至所述服务请求所属地区中正常运行的后端服务单元;

第三执行子单元U5024,如果所述非本地服务请求所属地区的负载均衡单元正常运行,且所述非本地服务请求所属地区存在正常运行的后端服务单元,则将所述非本地服务请求重定向至所述服务请求所属地区的负载均衡单元。

其中,故障检测结果获取单元U501可以由负载均衡检测结果获取子单元和后端服务检测结果获取子单元组成,其中,负载均衡检测结果获取子单元用于获取所有负载均衡单元故障检测结果,后端服务检测结果获取子单元用于获取所有后端服务单元故障检测结果。

图6为本申请另一示例性实施例示出的一种分布式网络系统容错装置的框图。如图6所示,所述装置包括:

故障检测结果获取单元U601,用于获取负载均衡单元和后端服务单元的故障检测结果;

请求路由单元U602,用于接收本地负载均衡单元转发的非本地服务请求,并根据负载均衡单元和后端服务单元的故障检测结果,将所述非本地服务请求转发至后端服务单元,所述非本地服务请求由域名系统在所述非本地服务请求对应的IP地址不可用时,转发至本地负载均衡单元,所述请求路由单元包括:

第一判断子单元U6021,用于判断所述非本地服务请求所属地区是否存在正常运行的后端服务单元,以及判断所述服务请求所属地区的负载均衡单元是否正常运行;

第一执行子单元U6022,如果所述非本地服务请求所属地区的后端服务单元全部存在故障,则将所述非本地服务请求转发至本地区中正常运行的后端服务单元;

第二执行子单元U6023,如果所述非本地服务请求所属地区存在正常运行的后端服务单元,且所述非本地服务请求所属地区的负载均衡单元存在故障,将所述非本地服务请求转发至所述服务请求所属地区中正常运行的后端服务单元;

第三执行子单元U6024,如果所述非本地服务请求所属地区的负载均衡单元正常运行,且所述非本地服务请求所属地区存在正常运行的后端服务单元,则将所述非本地服务请求重定向至所述服务请求所属地区的负载均衡单元。

备用后端服务判断单元U603,与U6022和U6023连接,用于当接收到的服务请求对应的流量大于转发所至后端服务单元的流量处理容量时,判断是否存在未启动的备用后端服务单元;

消息返回单元U604,与U603连接,用于如果不存在未启动的备用后端服务单元,则对所述服务请求中大于所述流量处理容量的部分,向服务请求发送方返回响应错误消息;

容量扩充单元U605,与U603连接,用于如果存在未启动的备用后端服务单元,则启动所述备用后端服务单元,重新计算后端服务单元的流量处理容量后,返回所述备用后端服务判断单元U603。

其中,U6022在当接收到的所述非本地服务请求对应的流量小于或等于转发所至后端服务单元的流量处理容量时,将所述非本地服务请求转发至本地区中正常运行的后端服务单元;U6023在当接收到的所述非本地服务请求对应的流量小于或等于转发所至后端服务单元的流量处理容量时,将所述非本地服务请求转发至所述服务请求所属地区中正常运行的后端服务单元。

操作同步单元U606,与U602连接,所述操作同步单元包括:

操作消息发送子单元U6061,用于将数据存储操作消息异步发送至其他地区后端服务单元的数据存储操作复制消息队列;

操作应用子单元U6062,用于将所述数据存储操作复制消息队列中的数据存储操作应用到本地后端服务单元的数据存储服务中。

在一种可能的实施方式中,所述的分布式网络系统容错装置,还包括:

备用后端服务判断单元,用于当接收到的服务请求对应的流量大于转发所至后端服 务单元的流量处理容量时,判断是否存在未启动的备用后端服务单元;

消息返回单元,用于如果不存在未启动的备用后端服务单元,则对所述服务请求中大于所述流量处理容量的部分,向服务请求发送方返回响应错误消息;

容量扩充单元,用于如果存在未启动的备用后端服务单元,则启动所述备用后端服务单元,重新计算后端服务单元的流量处理容量后,返回所述备用后端服务判断单元。

图7为本申请一示例性实施例示出的一种容错式分布式网络系统的框图。所述装置包括域名系统U701、负载均衡单元U702和后端服务单元U704,以及如图5或图6所述的分布式网络系统容错装置U703。

需要说明的是,所述负载均衡单元、分布式网络系统容错装置和后端服务单元可以分别为单独的硬件单元,例如分别以负载均衡服务器、分布式网络系统容错服务器和后端服务器的形式存在,通过有线或无线方式连接;所述负载均衡单元、分布式网络系统容错装置和对应的后端服务单元集群也可以集成在一个硬件服务器中,分别完成各自的功能;或者负载均衡单元和分布式网络系统容错装置集成在一个硬件服务器中,后端服务单元集群则由各个后端服务器组成;又或者负载均衡单元以单独的负载均衡服务器形式存在,分布式网络系统容错装置和后端服务单元集群集成在一个硬件服务器中。

为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者逆序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、装置或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、装置或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、装置或者设备中还存在另外的相 同要素。

以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号