首页> 中国专利> 分布式系统及分布式系统中配置信息的更新方法

分布式系统及分布式系统中配置信息的更新方法

摘要

本发明公开了一种分布式系统及分布式系统中配置信息的更新方法。所述系统包括配置客户端、服务器集群、配置信息的更新装置和至少一个订阅客户端;服务器集群用于存储配置信息;其中配置信息的更新装置用于对服务器集群进行监听,判断服务器集群中是否发生配置信息改变事件;在发生配置信息改变事件时,从服务器集群中获取更新的配置信息;并向各订阅客户端发送包括更新的配置信息的消息;且还用于确认各订阅客户端是否成功收到更新的配置信息。本发明通过配置信息的更新装置来确认订阅客户端是否成功收到更新的配置信息,能够及时地确定订阅客户端是否能够成功更新配置信息,克服现有技术中的缺陷,有效地提高分布式系统中配置信息更新的可靠性。

著录项

  • 公开/公告号CN104092718A

    专利类型发明专利

  • 公开/公告日2014-10-08

    原文格式PDF

  • 申请/专利权人 腾讯数码(天津)有限公司;

    申请/专利号CN201310687405.2

  • 发明设计人 易小华;洪坤乾;张文郁;

    申请日2013-12-12

  • 分类号H04L29/08(20060101);H04L12/24(20060101);

  • 代理机构11138 北京三高永信知识产权代理有限责任公司;

  • 代理人江崇玉

  • 地址 300000 天津市塘沽区经济技术开发区第四大街80号天大科技园软件大厦北楼2层202室

  • 入库时间 2023-12-17 02:19:08

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-10-24

    授权

    授权

  • 2014-10-29

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20131212

    实质审查的生效

  • 2014-10-08

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域,特别涉及一种分布式系统及分布式系统中配 置信息的更新方法。

背景技术

在分布式系统如分布式实时计算系统中,各分布式组件往往分布在不同的 服务器节点中,为了各分布式组件之间能够正确的协作,往往需要共享一些配 置信息,并需要配置信息能够被动态的修改和快速同步。

现有的分布式系统中,各分布式组件同步配置信息的技术一般借用 ZooKeeper提供的高可用性和事件通知机制实现。ZooKeeper是一个针对大型分 布式系统的可靠协调系统,提供的功能包括配置维护、名字服务、分布式同步 以及组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易 用的接口和性能高效、功能稳定的系统提供给用户。图1为现有的分布式计算 系统中采用ZooKeeper更新配置信息的场景图。通过一个客户端(Client)连接 ZooKeeper集群将配置信息存放在ZooKeeper集群的一个节点服务器(service) 或者多个节点服务器(service)上,如图1所示,以ZooKeeper集群包括三个节 点服务器A、服务器B和服务器C,包括六个客户端(Client)客户端A、客户端 B、客户端C、客户端D、客户端E和客户端F为例,描述配置信息的更新流程。 具体可以包括如下步骤:1、客户端E作为配置客户端将配置信息写入至 ZooKeeper集群中服务器B和服务器C中。2、需要配置信息的分布式组件客户 端A、客户端B、客户端C、客户端D和客户端F分别作为订阅客户端连接 ZooKeeper集群去读取并订阅这个配置信息,所谓订阅也就是利用ZooKeeper 本身提供的事件通知机制监听存储了配置信息的ZooKeeper集群中的服务器B 和服务器C节点中配置信息的改变。3、当配置信息更改的时候相应订阅配置信 息的组件会接收到一个节点配置信息改变事件,订阅者可以根据这个事件,去 ZooKeeper上获取最新的节点数据也就是配置信息。4、得到新的配置信息的客 户端会及时更新和同步最新的配置信息,然后做出相应的改变。各客户端 (Client)与ZooKeeper集群中的服务器节点是通过ZooKeeper提供的心跳机制 保持连接的。

在实现本发明的过程中,发明人发现现有技术至少存在以下问题:上述现 有技术的分布式系统中配置信息的更新过程中,ZooKeeper的通知机制是一次性 的,通知一次后,订阅的客户端会被取消,而订阅的客户端是否收到通知以及 更新配置信息成功与否均得不到保证。而只有当订阅客户端长时间未接收到通 知,此时需要订阅的客户端再次去订阅,也就是再次向ZooKeeper相应的配置 节点服务器注册事件监听。因此,现有的分布式系统中配置信息的更新方案可 靠性较低。

发明内容

为了解决现有技术的问题,本发明实施例提供了一种分布式系统及分布式 系统中配置信息的更新方法。所述技术方案如下:

一方面,提供了一种分布式系统,所述系统包括配置客户端、服务器集群、 配置信息的更新装置和至少一个订阅客户端;所述服务器集群,用于存储配置 信息;所述服务器集群中包括至少一台服务器;

所述配置客户端,与所述服务器集群中的各所述服务器进行通信,用于更 新所述服务器集群中的所述配置信息;

所述配置信息的更新装置,用于对所述服务器集群进行监听,判断所述服 务器集群中是否发生配置信息改变事件;

所述配置信息的更新装置,还用于当发生配置信息改变事件时,从所述服 务器集群中获取更新的配置信息;

所述配置信息的更新装置,还用于向各所述订阅客户端发送包括所述更新 的配置信息的消息;

所述配置信息的更新装置,还用于确认各所述订阅客户端是否成功收到所 述更新的配置信息;

各所述订阅客户端,分别与所述配置信息的更新装置连接,用于接收所述 配置信息的更新装置发送的包括所述更新的配置信息的消息。

另一方面,提供了一种分布式系统中配置信息的更新方法,所述分布式系 统包括配置客户端、服务器集群、配置信息的更新装置和至少一个订阅客户端; 所述方法包括:

所述配置客户端更新所述服务器集群中的配置信息;

所述配置信息的更新装置对所述服务器集群进行监听,判断所述服务器集 群中是否发生配置信息改变事件;

当发生配置信息改变事件时,所述配置信息的更新装置从所述服务器集群 中获取更新的配置信息;

所述配置信息的更新装置向各所述订阅客户端发送包括所述更新的配置信 息的消息;

所述配置信息的更新装置确认各所述订阅客户端是否成功收到所述更新的 配置信息。

本发明实施例的分布式系统及分布式系统中配置信息的更新方法,当配置 客户端更新服务器集群中的配置信息,由配置信息的更新装置对服务器集群进 行监听,判断服务器集群中是否发生配置信息改变事件;当发生配置信息改变 事件时,配置信息的更新装置从服务器集群中获取更新的配置信息;向各订阅 客户端发送包括更新的配置信息的消息;并确认订阅客户端是否成功收到更新 的配置信息。本发明实施例的技术方案中,配置信息的更新装置还用来确认订 阅客户端是否成功收到更新的配置信息,从而能够及时地确定订阅客户端是否 能够成功更新配置信息,克服了现有技术中的缺陷,有效地提高分布式系统中 配置信息更新的可靠性。

附图说明

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

图1为现有的分布式计算系统中采用ZooKeeper更新配置信息的场景图。

图2为本发明一实施例提供的分布式系统的结构示意图。

图3为本发明另一实施例提供的分布式系统的结构示意图。

图4为本发明再一实施例提供的分布式系统的结构示意图。

图5为本发明实施例提供的分布式系统中配置信息更新过程示意图。

图6为本发明一实施例提供的分布式系统中配置信息的更新方法的流程图。

图7为本发明另一实施例提供的分布式系统中配置信息的更新方法的流程 图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明 实施方式作进一步地详细描述。

图2为本发明一实施例提供的分布式系统的结构示意图。如图2所示,本 实施例的分布式系统具体可以包括配置客户端20、服务器集群30、配置信息的 更新装置40和至少一个订阅客户端50。

其中服务器集群30用于存储配置信息;服务器集群中30包括至少一台服 务器;配置客户端20与服务器集群30中的各服务器进行通信,用于更新服务 器集群30中的配置信息;例如可以更新服务器集群30中每一台或者多台服务 器中的配置信息。本实施例中的更新可以包括新写入或者修改等等操作。

配置信息的更新装置40与服务器集群30连接,对服务器集群30进行监控, 判断服务器集群30中是否发生配置信息改变事件;具体地,配置信息的更新装 置40与服务器集群30中的各服务器通信,对服务器集群30中的各服务器31 进行监控,判断各服务器中是否发生配置信息改变事件。在发生配置信息改变 事件时,配置信息的更新装置40从发生配置信息改变事件的服务器集群30中 的服务器中获取更新的配置信息,并向各订阅客户端50发送包括更新的配置信 息的消息。

对应地,各订阅客户端50与配置信息的更新装置40连接,各订阅客户端 50用于接收配置信息的更新装置40发送的包括更新的配置信息的消息。配置信 息的更新装置40与各订阅客户端50连接,配置信息的更新装置40确认订阅客 户端50是否成功收到配置信息的更新装置40发送的更新的配置信息。本实施 例中的各订阅客户端50相当于分布式系统中的分布式组件,各分布式组件进行 业务处理时,需要及时获取到更新的配置信息,因此也可以被称为分布式系统 中的计算组件或者处理组件。

本实施例的分布式系统,当配置客户端更新服务器集群中的配置信息,由 配置信息的更新装置对服务器集群进行监听,判断服务器集群中是否发生配置 信息改变事件;当发生配置信息改变事件时,配置信息的更新装置从服务器集 群中获取更新的配置信息;向各订阅客户端发送包括更新的配置信息的消息; 并确认订阅客户端是否成功收到更新的配置信息。本实施例的技术方案中,配 置信息的更新装置还用来确认订阅客户端是否成功收到更新的配置信息,从而 能够及时地确定订阅客户端是否能够成功更新配置信息,克服了现有技术中的 缺陷,有效地提高分布式系统中配置信息更新的可靠性。

可选地,配置信息的更新装置40,还用于在从发生配置信息改变事件的服 务器中获取更新的配置信息后,并生成配置信息标识,该配置信息标识用于唯 一标识向该订阅客户端50发送的配置信息。此时配置信息的更新装置40,具体 用于向订阅客户端50发送包括更新的配置信息和配置信息标识的消息,并在自 身内部建立配置信息标识和订阅客户端50的标识的映射关系。

对应地,在订阅客户端50侧,订阅客户端50,用于接收配置信息的更新装 置40发送的包括更新的配置信息和配置信息标识的消息,并根据消息中的更新 的配置信息更新自身的配置信息,并从消息中获取配置信息标识,然后向配置 信息的更新装置40发送包括配置信息标识和该订阅客户端50的标识的响应消 息。

进一步可选地,配置信息的更新装置40,还用于接收订阅客户端50发送包 括配置信息标识和该订阅客户端50的标识的响应消息。并根据响应消息中的订 阅客户端50的标识找到对应的配置信息标识和订阅客户端50的标识的映射关 系,从中获取配置信息标识;然后将本地存储的映射关系中的配置信息标识和 订阅客户端50发送的配置信息标识进行比较,判断两者是否相同,若相同,确 定订阅客户端50更新配置信息成功,否则确定订阅客户端50更新配置信息不 成功。若确定订阅客户端50更新配置信息不成功,此时配置信息的更新装置40, 还用于重新向订阅客户端50发送包括更新的配置信息和配置信息标识的消息。 即本实施例的分布式系统提供有重发机制。

进一步可选地,配置信息的更新装置40,还用于若在预设时间段内未接收 订阅客户端50反馈的响应消息时,确定订阅客户端50未成功接收到配置信息; 此时配置信息的更新装置40,还用于重新向订阅客户端50发送包括更新的配置 信息和配置信息标识的消息。即本实施例的分布式系统提供有延迟并重发的方 案。

下述实施例在分布式系统的一种具体的工作流程中详细介绍分布式系统工 作原理,该实施例中以向一个订阅客户端50发送更新的配置信息为例来说明本 发明的技术方案。

配置客户端20对服务器集群30中的各个服务器进行监控,判断各服务器 中是否发生配置信息改变事件。在发生配置信息改变事件时,配置信息的更新 装置40从发生配置信息改变事件的服务器中获取更新的配置信息,并生成配置 信息标识,该配置信息标识用于唯一标识向该订阅客户端50发送的配置信息; 然后配置信息的更新装置40向订阅客户端50发送包括更新的配置信息和配置 信息标识的消息。配置信息的更新装置40建立配置信息标识和订阅客户端50 的标识的映射关系。

当订阅客户端50收到配置信息的更新装置40发送的包括更新的配置信息 和配置信息标识的消息时,根据消息中的更新的配置信息更新自身的配置信息, 并从消息中获取配置信息标识,然后向配置信息的更新装置40发送包括配置信 息标识和该订阅客户端50的标识的响应消息。配置信息的更新装置40根据响 应消息中的订阅客户端50的标识找到对应的配置信息标识和订阅客户端50的 标识的映射关系,从中获取配置信息标识;然后将本地存储的映射关系中的配 置信息标识和订阅客户端50发送的配置信息标识进行比较,判断两者是否相同, 若相同,确定订阅客户端50更新配置信息成功,否则确定订阅客户端50更新 配置信息不成功。若确定订阅客户端50更新配置信息不成功,此时配置信息的 更新装置40重新向订阅客户端50发送包括更新的配置信息和配置信息标识的 消息。由此可知,本实施例的分布式系统在更新配置信息的过程中提供了配置 信息的重发机制,提高了更新配置信息的效率。

而且配置信息的更新装置40若在预设时间段内未接收订阅客户端50反馈 的响应消息时,确定订阅客户端50未成功接收到配置信息;此时配置信息的更 新装置40重新向订阅客户端50发送包括更新的配置信息和配置信息标识的消 息。由于可知,本实施例的分布式系统提供了延迟并重发的方案,提高了更新 配置信息的效率。

本实施例的分布式系统,通过配置信息的更新装置来确认订阅客户端是否 成功收到更新的配置信息,从而能够及时地确定订阅客户端是否能够成功更新 配置信息,克服了现有技术中的缺陷,有效地提高分布式系统中配置信息更新 的可靠性。而且在更新配置信息的过程中提供了配置信息的重发机制,能够在 确定订阅客户端未成功收到更新的配置信息时,重新向订阅客户端发生更新的 配置信息,而不用订阅客户端重新去订阅,减少了订阅客户端更新配置信息的 复杂性,提高了更新配置信息的效率。进一步地,还在更新配置信息方案中提 供了延迟方案,在预设时间段过后,若未收到响应消息,重新向订阅客户端发 送包括更新的配置信息和配置信息标识的消息,减少了订阅客户端更新配置信 息的复杂性,提高了更新配置信息的效率。

而且现有技术中,当订阅者过多时,会对造成对一个节点的数据大量的监 听和读写,很容易导致配置信息更新延迟或者失败的情况发生,而本发明实施 例中的配置组件和确认组件可以分离,并各自还可以进行线性分布式扩展,从 而能够分散工作,避免将监听以及读写工作负载在同一个节点上,能够及时有 效地对配置信息进行更新。

图3为本发明另一实施例提供的分布式系统的结构示意图。如图3所示, 本实施例的分布式系统在上所述图2所示实施例的基础上,对配置信息的更新 装置进行进一步更加具体的说明。如图3所示的本实施例的配置信息的更新装 置40中包括配置组件10和确认组件11。配置组件10用于对服务器集群30进 行监听,判断服务器集群30中是否发生配置信息改变事件;配置组件10还用 于当发生配置信息改变事件时,从服务器集群30中获取更新的配置信息;配置 组件10还用于向订阅客户端50发送包括更新的配置信息的消息;确认组件11 用于确认订阅客户端50是否成功收到配置组件10发送的更新的配置信息。

需要说明的是,为了增加处理效率,配置信息的更新装置40中也可以包括 多个配置组件10和多个确认组件11,本实施例中均以一个为例来说明。而且如 图3所示,本实施例的以分布式系统的服务器集群30中包括至少一台服务器31; 为例,配合客户端20与各服务器31连接,可以对各服务器31中的配置信息进 行更新。本实施例的分布式系统中,其中配置信息的更新装置40中配置组件10 对分布式系统中存储配置信息的服务器集群30进行监听,该服务器集群30中 可以包括一台或者多台服务器31。具体地,配置组件10与服务器集群30中的 每台服务器31连接,配置组件10可以对服务器集群30中的每台服务器31进 行监听,以判断服务器集群30中是否发生配置信息改变事件,其中配置信息改 变事件也就是判断服务器集群30中的配置信息是否发生变化,发生变化即为配 置信息改变事件。当发生配置信息改变事件时,配置组件10从服务器集群30 中发生配置信息改变事件的服务器31中获取更新的配置信息;并向订阅客户端 50发送包括更新的配置信息的消息。本实施例中的订阅客户端50即为分布式系 统中的各个分布式组件,各分布式组件即订阅客户端50在业务处理中需要及时 更新该配置信息,并进行业务计算,因此也可以计算组件或者处理组件。因此, 当配置信息发生改变时,需要该配置组件及时向订阅客户端50发送更新的配置 信息,以供订阅客户端50及时更新自身中的配置信息。

本实施例中的确认组件11可以与订阅客户端通50信,对订阅客户端50进 行追踪,确认订阅客户端50是否成功收到配置组件10发送的更新的配置信息。 例如确认组件11可以询问订阅客户端50,确认其是否成功接收到配置组件10 发送的更新的配置信息。或者也可以与订阅客户端50约定,在订阅客户端50 成功接收到配置组件10发送的更新的配置信息时。向确认组件11发送一个确 认信息,以告知确认组件11订阅客户端成功接收到配置组件10发送的更新的 配置信息。或者确认组件11也可以采用方式实现对订阅客户端50的跟踪,确 认订阅客户端50是否成功收到配置组件10发送的更新的配置信息,在此不再 赘述。

本实施例中,配置组件10用于向订阅客户端50发送更新的配置信息,确 认组件11用于对订阅客户端50进行追踪,确认订阅客户端50是否成功收到配 置组件10发送的更新的配置信息,配置组件10和确认组件11可以分布式同时 工作,提高配置信息更新装置的工作效率。

本实施例的分布式系统配置信息的更新装置,通过由配置信息的更新装置 的配置组件对服务器集群进行监听,判断服务器集群中是否发生配置信息改变 事件;当发生配置信息改变事件时,配置组件从服务器集群中获取更新的配置 信息;配置组件向订阅客户端发送包括更新的配置信息的消息;确认组件确认 订阅客户端是否成功收到配置组件发送的更新的配置信息。本实施例的技术方 案中,通过配置信息的更新装置的确认组件来确认订阅客户端是否成功收到更 新的配置信息,从而能够及时地确定订阅客户端是否能够成功更新配置信息, 克服了现有技术中的缺陷,有效地提高分布式系统中配置信息更新的可靠性。

而且现有技术中,当订阅者过多时,会对造成对一个节点的数据大量的监 听和读写,很容易导致配置信息更新延迟或者失败的情况发生,而本发明实施 例中的配置组件和确认组件可以分离,并各自还可以进行线性分布式扩展,从 而能够分散工作,避免将监听以及读写工作负载在同一个节点上,能够及时有 效地对配置信息进行更新。

进一步可选地,在上述实施例的技术方案的基础上,配置组件10还用于生 成配置信息标识,配置信息标识用于唯一标识向订阅客户端50发送的配置信息; 配置组件10具体用于向订阅客户端50发送包括更新的配置信息和配置信息标 识的消息。

配置组件10在获取配置信息之后,向订阅客户端50发送配置信息之前, 可以先为向该订阅客户端50发送的该配置信息生成一个配置信息标识,该配置 信息标识可以根据实际需求设置长度,例如可以为64位,或者32位或者其他 长度等等。这样配置组件10发送的该更新的配置信息就是唯一的。

进一步可选地,在上述实施例的技术方案的基础上,配置组件10与确认组 件11连接,配置组件10还用于向确认组件11发送包括配置信息标识。这样, 确认组件11可以根据该唯一标识向该订阅客户端50发送的更新的配置信息的 配置信息标识来跟踪该订阅客户端50,确认该订阅客户端50是否成功接收到配 置组件110发送的该更新的配置信息。

需要说明的是,为了提高处理效率,图3所示的分布式系统中的配置信息 的更新装置40中的配置组件10也可以是多个,这样,配置组件10还需要向确 认组件11发送配置组件10的标识,这样,当后续确认组件11向配置组件10 反馈响应消息时,可以向该配置组件10的标识对应的配置组件发送响应消息即 可。

进一步可选地,确认组件11还用于接收订阅客户端50发送的包括配置信 息标识的响应消息,订阅客户端50发送的配置信息标识为订阅客户端50从接 收配置组件发送的消息中获取的;确认组件11具体用于根据配置组件10发送 的配置信息标识和订阅客户端50发送的配置信息标识,确认订阅客户端50是 否成功收到更新的配置信息。

例如根据上述记载可知,当订阅客户端50接收到配置组件10发送的包括 更新的配置信息和配置信息标识的消息之后,可以获取到该配置信息标识,然 后向确认组件11反馈包括该配置信息标识的响应消息。这样确认组件11就接 收到两个配置信息标识,一个是配置组件10发送的,另一个是订阅客户端50 发送的,此时确认组件11可以根据接收到的这两个配置信息标识来判断订阅客 户端50是否成功接收到更新的配置信息。例如确认组件11具体用于判断配置 组件10发送的配置信息标识和订阅客户端50发送的配置信息标识是否相同, 若相同,确定订阅客户端50成功收到配置组件发送的更新的配置信息;否则, 则确定订阅客户端50未成功收到配置组件发送的更新的配置信息。

进一步地,确认组件11判断配置组件10发送的配置信息标识和订阅客户 端50发送的配置信息标识是否相同时,具体可以采用如下方式:

确认组件11对配置组件10发送的配置信息标识和订阅客户端50发送的配 置信息标识进行异或(exclusive OR;简写为XOR)操作,得到确认值,并判 断确认值是否为0,若为0,确定配置组件10发送的消息中的配置信息标识和 订阅客户端50发送的返回的配置信息标识相同,此时订阅客户端50成功更新 配置信息;否则不相同,此时订阅客户端50未成功更新配置信息。

需要说明的是,当多个订阅客户端50同时订阅配置信息时,此时配置组件 10时需要对各个订阅客户端50进行追踪,此时配置组件10除了向确认组件11 发送配置信息标识和配置组件10的标识之外,还向确认组件10发送用于接收 该更新的配置信息的订阅客户端50的标识,便于确认组件11跟踪该订阅客户 端50。在确认组件11中配置信息标识、确认组件11的标识以及订阅客户端的 50标识可以采用映射的方式存储。当订阅客户端50向确认组件11反馈的响应 消息中除了包括配置信息标识之外,也还包括订阅客户端50的标识,这样,在 确认组件11中可以根据订阅客户端50的标识以及存储的配置信息标识、确认 组件11的标识以及订阅客户端50的标识映射,获取到配置组件10发送的配置 信息的标识,然后再对配置组件10发送的配置信息标识和订阅客户端50发送 的配置信息标识进行判断处理。

进一步可选地,在上述实施例的技术方案的基础上,其中确认组件11还用 于在确定订阅客户端50成功收到配置组件发送的更新的配置信息时,向配置组 件10发送订阅客户端50成功接收到配置信息的响应消息。这样配置组件10便 可以得知发送给订阅客户端50的更新的配置信息已经发送成功,订阅客户端50 也已经更新成功,提高了分布式系统中更新配置信息的可靠性。

或者可选地,在上述实施例的技术方案的基础上,确认组件11还用于确定 订阅客户端50未成功收到配置组件发送的更新的配置信息时,向配置组件10 发送订阅客户端50未成功接收到配置信息的响应消息;此时对应地,配置组件 10还用于在接收到确认组件11发送的订阅客户端50未成功接收到配置信息的 响应消息后,重新向订阅客户端50发送包括更新的配置信息和配置信息标识的 消息。例如确认组件11对配置组件10发送的配置信息标识和订阅客户端50发 送的配置信息标识进行XOR操作得到确认值不为0时,可以向配置组件10发 送订阅客户端50未成功接收到配置信息的响应消息;此时对应地,配置组件10 重新向订阅客户端50发送包括更新的配置信息和配置信息标识的消息。

现有技术的分布式系统中配置信息的更新过程中,ZooKeeper的通知机制是 一次性的,通知一次后,订阅的客户端会被取消,而订阅的客户端是否收到通 知以及更新配置信息成功与否均得不到保证。而只有当订阅客户端长时间未接 收到通知,此时需要订阅的客户端再次去订阅,也就是再次向ZooKeeper相应 的配置节点服务器注册事件监听。由此可知,现有的配置信息的更新方案中, 通知机制是一次性的,当订阅客户端第一次未成功接收到更新的配置信息时, 不支持重发,而需要订阅客户端重新订阅过程非常复杂,效率较低。而采用上 述实施例的技术方案,在更新配置信息的过程中提供了配置信息的重发机制, 能够在确定订阅客户端未成功收到配置组件发送的更新的配置信息时,重新向 订阅客户端发生更新的配置信息,而不用订阅客户端重新去订阅,减少了订阅 客户端更新配置信息的复杂性,提高了更新配置信息的效率。

进一步可选地,在上述实施例的技术方案的基础上,其中配置组件10还用 于若在预设时间段内未接收到确认组件11发送的订阅客户端50成功或者未成 功接收到配置信息的响应消息时,确定订阅客户端50未成功接收到配置信息; 此时配置组件10还用于重新向订阅客户端50发送包括更新的配置信息和配置 信息标识的消息。

通过采用上述方案,本发明提供的更新配置信息方案还提供了延迟方案, 若配置组件在预设时间段内未接收到确认组件发送的订阅客户端成功或者未成 功接收到配置信息的响应消息时,确定订阅客户端未成功接收到配置信息;此 时配置组件重新向订阅客户端发送包括更新的配置信息和配置信息标识的消 息。与现有技术相比,也不需要订阅客户端重新订阅配置信息,而直接在预设 时间段过后,若未收到响应消息,重新向订阅客户端发送包括更新的配置信息 和配置信息标识的消息,减少了订阅客户端更新配置信息的复杂性,提高了更 新配置信息的效率。

上述实施例的所有技术方案可以采用可以结合的方式任意组合,形成本发 明的可选实施例,在此不再一一举例说明。

上述实施例的技术方案,通过确认组件来确认订阅客户端是否成功收到更 新的配置信息,从而能够及时地确定订阅客户端是否能够成功更新配置信息, 克服了现有技术中的缺陷,有效地提高分布式系统中配置信息更新的可靠性。 而且在更新配置信息的过程中提供了配置信息的重发机制,能够在确定订阅客 户端未成功收到配置组件发送的更新的配置信息时,重新向订阅客户端发生更 新的配置信息,而不用订阅客户端重新去订阅,减少了订阅客户端更新配置信 息的复杂性,提高了更新配置信息的效率。进一步地,还在更新配置信息方案 中提供了延迟方案,在预设时间段过后,若未收到响应消息,重新向订阅客户 端发送包括更新的配置信息和配置信息标识的消息,减少了订阅客户端更新配 置信息的复杂性,提高了更新配置信息的效率。

而且现有技术中,当订阅者过多时,会对造成对一个节点的数据大量的监 听和读写,很容易导致配置信息更新延迟或者失败的情况发生,而本发明实施 例中的配置组件和确认组件可以分离,并各自还可以进行线性分布式扩展,从 而能够分散工作,避免将监听以及读写工作负载在同一个节点上,能够及时有 效地对配置信息进行更新。

图4为本发明再一实施例提供的分布式系统的结构示意图。如图4所示, 本实施例的分布式系统在上述图2及图3所示实施例的基础上,以一个具体地 应用场景介绍本发明的技术方案。

如图4所示,本实施例的服务器集群30可以采用ZooKeeper集群30’来实 现,该ZooKeeper集群30’是一个高可用的分布式数据管理与系统协调框架。基 于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,只要不 超过半数的服务器当机(如果正常服务的服务器数目不足一半,那么原有的集 群将可能被划分成两个信息无法一致的zookeeper服务),该服务就能正常运行, 因此利用Zookeeper保证了配置信息的可靠存储。此时对应地,用户可以通过配 置客户端20将配置信息写入ZooKeeper上存储配置信息的服务器节点,或者更 改存储在这个服务器节点上的配置信息。

本实施例中的配置信息的更新装置40可以利用Storm流式计算平台来实 现,Storm流式计算平台提供的Spout接口(也就是数据源读取接口)实现一个 ConfigSpout组件10’用于实现配置组件10的功能,用于监听ZooKeeper集群中 存储配置信息的节点的数据改变事件,并实时的读取最新的配置信息并把配置 信息包装为一个可序化的对象,然后利用Storm流式计算平台提供的流式数据 接口,将配置信息作为名为config_stream的流发送出去,例如该config_stream 中包括配置信息和配置信息标识。确认组件11可以采用Storm流式计算平台中 设计Acker组件11’来实现,负责配置信息更新成功的确认以及当更新失败时通 知ConfigSpout组件10’把配置信息进行超时重发,订阅客户端50可以采用Storm 流式计算平台中设计的Bolt组件50’来实现,图4中以包括三个Bolt组件50’ 为例来说明本发明的技术方案。Bolt组件50’为订阅配置信息的分布式计算组件, Storm流式计算平台负责ConfigSpout组件10’,Acker组件11’和Bolt组件50’ 等的容错和分布式功能。

配置信息的Bolt组件50’(分布式计算组件接口)以AllGrouping(广播)的方式 订阅ConfigSpout组件10’的config_stream,并利用Storm流式计算平台提供的 ConfigSpout组件10’到Bolt组件50’的实时转发功能使得订阅者实时的得到最新 的配置信息并及时的更新自己的配置。

由于ConfigSpout组件10’,Bolt组件50’以及Acker组件11’都是Storm流 式计算平台中标准的组件,因此都是可以分布式线性扩展的,再通过Storm流 式计算平台提供的心跳机制。而且Storm流式计算平台中还有其处理器,用于 当某个组件停止提供服务时,Storm流式计算平台中的该处理器会相应的重新拉 起这个组件,从而进行容错处理。

当Bolt组件50’更新完成配置时,需要给Acker组件11’发送一条确认更 新成功的响应消息,该响应消息中可以包括配置信息标识。Acker组件11’会按 照一定的算法进行确认信息的计算,当Acker组件11’收到了Bolt组件50’更 新完成配置的确认信息时,会通知ConfigSpout组件10’当前发送的配置信息, Bolt组件50’已经更新完成,如果在可配置的一段时间内,ConfigSpout组件10’ 一直没有收到Acker组件11’发送过来的配置更新成功信息,则ConfigSpout 组件10’会将最新的配置信息重新发送一份。

本实施例中,ConfigSpout组件10’可以向多个Bolt组件50’发送配置信息, 就像一个Tuple树的结构。以图5所示的分布式系统中配置信息更新过程示意图 为例,图5以ConfigSpout组件10’向三个Bolt组件50’发送配置信息为例。本 实施例中Acker组件11’负责跟踪ConfigSpout组件10’发出的每一个包含配置 信息的Tuple。当一个tuple被ConfigSpout组件10’创建时,它可以被赋予一个 64位的spout-tuple-id即配置信息标识也携带在Tuple中发送给Bolt组件50’。 同时ConfigSpout组件10’将64位的spout-tuple-id发送给Acker组件11’,Acker 组件11’就是利用这个spout-tuple-id去跟踪与这个包含配置信息的Tuple相关 联的Bolt组件50’,由于Bolt组件50’在更新配置信息完成后会给Acker组件11’ 发送一个响应信息,并在响应消息中携带接收ConfigSpout组件10’发送的消息 中的64位的spout-tuple-id。

需要说明的是,ConfigSpout组件10’还要将该ConfigSpout组件10’的标识 也发送给Acker组件11’,这样在Acker组件11’中可以存储了一个spout-tuple-id 到一对值的一个映射。这对值的第一个值是创建这个tuple的ConfigSpout组件 10’的id,这个是用来在完成处理tuple的时候发送消息用的,其中对一个订阅 客户端50配置信息进行更新的过程为一个tuple。第二个值是一个64位的ack val”,ack val是整个tuple的状态的一个表示,它只是简单地把spout-tuple-id对应 的Bolt组件50’回复的tupleidspout-tuple-id即配置信息标识和ConfigSpout组件 10’发送的tupleidspout-tuple-id即配置信息标识一起异或(XOR)。当Acker组件 11’发现ack val变成0了,Acker组件11’确定spout-tuple-id对应的配置信息 Tuple已经被Bolt组件50’处理完成了,Acker组件11’就可以通知Config Spout  组件10’spout-tuple-id对应的Bolt组件50’已经更新配置信息成功。当处理完后, Acker组件11’发现ack val不为0了,Acker组件11’可以通知Config Spout 组件10’spout-tuple-id对应的Bolt组件50’更新配置信息不成功,ConfigSpout 组件10’将最新的配置信息重新发送给Bolt组件50’一份。即本实施例方案中支 持重发配置信息的机制。ConfigSpout组件10’还用于在预设时间段内未收到 Acker组件11’的任何消息时,将最新的配置信息重新发送给Bolt组件50’一份。 即本实施例方案中支持延迟并重发配置信息的机制。

本实施例的分布式系统,通过配置信息的更新装置中的确认组件来确认订 阅客户端是否成功收到更新的配置信息,从而能够及时地确定订阅客户端是否 能够成功更新配置信息,克服了现有技术中的缺陷,有效地提高分布式系统中 配置信息更新的可靠性。而且在更新配置信息的过程中提供了配置信息的重发 机制,能够在确定订阅客户端未成功收到配置组件发送的更新的配置信息时, 重新向订阅客户端发生更新的配置信息,而不用订阅客户端重新去订阅,减少 了订阅客户端更新配置信息的复杂性,提高了更新配置信息的效率。进一步地, 还在更新配置信息方案中提供了延迟方案,在预设时间段过后,若未收到响应 消息,重新向订阅客户端发送包括更新的配置信息和配置信息标识的消息,减 少了订阅客户端更新配置信息的复杂性,提高了更新配置信息的效率。而且现 有技术中,当订阅者过多时,会对造成对一个节点的数据大量的监听和读写, 很容易导致配置信息更新延迟或者失败的情况发生,而本发明实施例中的配置 组件和确认组件可以分离,并各自还可以进行线性分布式扩展,从而能够分散 工作,避免将监听以及读写工作负载在同一个节点上,能够及时有效地对配置 信息进行更新。

图6为本发明一实施例提供的分布式系统中配置信息的更新方法的流程图。 本实施例的分布式系统包括配置客户端、服务器集群、配置信息的更新装置和 至少一个订阅客户端,具体可以参考上述图2-图4任一所述的分布式系统。如 图6所示,本实施例的分布式系统中配置信息的更新方法,具体可以包括如下 步骤:

100、配置客户端更新服务器集群中的配置信息;

本实施例中的更新包括修改服务器集群中的配置信息,或者在服务器集群 中写入新的配置信息。

101、配置信息的更新装置对服务器集群进行监听,判断服务器集群中是否 发生配置信息改变事件;

本实施例的分布式系统中配置信息的更新方法,用于对分布式系统中的各 个分布式组件如本实施例中的订阅客户端进行配置信息的更新与同步。其中配 置信息的更新装置具体对服务器集群中的所有服务器进行监听,判断服务器集 群中任一台服务器中是否发生配置信息改变事件。本实施例中的配置信息改变 事件即指的是配置信息发送改变,具体可以为新写入配置信息或者配置信息发 生修改等等改变。

102、当发生配置信息改变事件时,配置信息的更新装置从服务器集群中获 取更新的配置信息;

当配置信息发送改变时,配置信息的更新装置从服务器集群中发生配置信 息改变的服务器中获取更新的配置信息。

103、配置信息的更新装置向各订阅客户端发送包括更新的配置信息的消 息;

本实施例中的订阅客户端即为分布式系统中的分布式组件,各分布式组件 进行实际业务处理时,需要及时获取到最新的配置信息。因此当当配置信息发 送改变时,配置信息的更新装置获取到更新的配置信息之后,需要及时向订阅 客户端发送包括更新的配置信息的消息。

104、配置信息的更新装置确认各订阅客户端是否成功收到更新的配置信 息。

本实施例的配置信息的更新方法,通过采用上述方法实现配置信息的更新 与上述相关装置实施例实现配置信息的更新的实现机制相同,详细可以参考上 述实施例的记载,在此不再赘述。

本实施例的配置信息的更新方法,通过由配置信息的更新装置对服务器集 群进行监听,判断服务器集群中是否发生配置信息改变事件;当发生配置信息 改变事件时,配置信息的更新装置从服务器集群中获取更新的配置信息;配置 信息的更新装置向订阅客户端发送包括更新的配置信息的消息;并确认订阅客 户端是否成功收到更新的配置信息。本实施例的技术方案中,通过配置信息的 更新装置来确认订阅客户端是否成功收到更新的配置信息,从而能够及时地确 定订阅客户端是否能够成功更新配置信息,克服了现有技术中的缺陷,有效地 提高分布式系统中配置信息更新的可靠性。

可选地,在上述实施例的技术方案的基础上,其中配置信息的更新装置包 括配置组件和确认组件。对应地,上述实施例中的步骤101“配置信息的更新装 置对服务器集群进行监听,判断服务器集群中是否发生配置信息改变事件”,具 体可以包括:配置组件对服务器集群进行监听,判断服务器集群中是否发生配 置信息改变事件。

对应地,步骤102“当发生配置信息改变事件时,配置信息的更新装置从服 务器集群中获取更新的配置信息”,具体可以包括:当发生配置信息改变事件时, 配置组件从服务器集群中获取更新的配置信息。

进一步对应地,步骤103“配置信息的更新装置向各订阅客户端发送包括更 新的配置信息的消息“,具体可以包括:配置组件向各订阅客户端发送包括更 新的配置信息的消息”。

进一步对应地,步骤1034“配置信息的更新装置确认各订阅客户端是否成 功收到配置组件发送的更新的配置信息,具体可以包括:配置组件确认各订阅 客户端是否成功收到配置组件发送的更新的配置信息。

进一步可选地,在上述实施例的技术方案的基础上,其中步骤“配置组件 向订阅客户端发送包括更新的配置信息的消息”之前,还可以包括:配置组件 生成配置信息标识,配置信息标识用于唯一标识向订阅客户端发送的配置信息。

此时对应地,步骤“配置组件向订阅客户端发送包括更新的配置信息的消 息”,具体可以包括配置组件向订阅客户端发送包括更新的配置信息和配置信息 标识的消息。

进一步可选地,在上述实施例的技术方案的基础上,步骤“配置组件生成 配置信息标识”之后,还可以包括:配置组件向确认组件发送包括配置信息标 识。

进一步可选地,在上述实施例的技术方案的基础上,步骤“配置组件向订 阅客户端发送包括更新的配置信息和配置信息标识的消息”之后,还可以包括 如下步骤:

(1)确认组件接收订阅客户端发送的包括配置信息标识的响应消息,该订 阅客户端发送的配置信息标识为订阅客户端从接收配置组件发送的消息中获取 的;

(2)确认组件根据配置组件发送的配置信息标识和订阅客户端发送的配置 信息标识,确认订阅客户端是否成功收到更新的配置信息。

例如确认组件具体可以判断配置组件发送的配置信息标识和订阅客户端发 送的配置信息标识是否相同,若相同,确定订阅客户端成功收到配置组件发送 的更新的配置信息;否则,则确定订阅客户端未成功收到配置组件发送的更新 的配置信息。

进一步地,在上述实施例的技术方案的基础上,还可以包括如下两种情况:

第一、若确认组件确定订阅客户端成功收到配置组件发送的更新的配置信 息时,确认组件向配置组件发送订阅客户端成功接收到配置信息的响应消息;

第二、若确认组件确定订阅客户端未成功收到配置组件发送的更新的配置 信息时,向配置组件发送订阅客户端未成功接收到配置信息的响应消息;

此时对应地,配置组件在接收到确认组件发送的订阅客户端未成功接收到 配置信息的响应消息后,重新向订阅客户端发送包括更新的配置信息和配置信 息标识的消息。

上述第一种情况和第二种情况时并列的两种情况。上述第二种情况提供了 配置信息的重发机制,提高了配置信息更新的效率。

进一步地,在上述实施例的技术方案的基础上,上述实施例的方案还可以 包括如下步骤:

(a)若配置组件在预设时间段内未接收到确认组件发送的订阅客户端成功 或者未成功接收到配置信息的响应消息时,确定订阅客户端未成功接收到配置 信息;

(b)配置组件重新向订阅客户端发送包括更新的配置信息和配置信息标识 的消息。

上述方案提供了配置信息的延迟并重发机制,提高了配置信息的更新效率。

上述所有可选技术方案,可以采用任意可以结合的方式任意组合,形成本 发明的可选实施例,在此不再一一赘述。

上述实施例的配置信息的更新方法,通过采用上述方法实现配置信息的更 新与上述相关装置实施例实现配置信息的更新的实现机制相同,详细可以参考 上述实施例的记载,在此不再赘述。

上述实施例的配置信息的更新方法,通过配置信息的更新装置中的确认组 件来确认订阅客户端是否成功收到更新的配置信息,从而能够及时地确定订阅 客户端是否能够成功更新配置信息,克服了现有技术中的缺陷,有效地提高分 布式系统中配置信息更新的可靠性。而且在更新配置信息的过程中提供了配置 信息的重发机制,能够在确定订阅客户端未成功收到配置组件发送的更新的配 置信息时,重新向订阅客户端发生更新的配置信息,而不用订阅客户端重新去 订阅,减少了订阅客户端更新配置信息的复杂性,提高了更新配置信息的效率。 进一步地,还在更新配置信息方案中提供了延迟方案,在预设时间段过后,若 未收到响应消息,重新向订阅客户端发送包括更新的配置信息和配置信息标识 的消息,减少了订阅客户端更新配置信息的复杂性,提高了更新配置信息的效 率。

图7为本发明另一实施例提供的分布式系统中配置信息的更新方法的流程 图。如图7所示,本实施例的分布式系统中配置信息的更新方法将上述图5及 其后续可选实施例的配置信息的更新方法应用在分布式系统中,具体来介绍本 发明实施例的技术方案。如图6所示,本实施例的分布式系统中配置信息的更 新方法,具体可以包括如下步骤:

200、配置客户端更新服务器集群中的配置信息;

其中服务器集群中包括至少一台服务器;配置客户端可以更新服务器集群 中每一台或者多台服务器中的配置信息。本实施例中的更新可以包括新写入或 者修改等等操作。

201、配置组件对服务器集群进行监控,判断服务器集群中是否发生配置信 息改变事件;当发生配置信息改变事件时,执行步骤202;否则继续监控;

本实施例中,配置组件具体可以对服务器集群中的各服务器进行监控,判 断各服务器中是否发生配置信息改变事件。

202、配置组件从服务器集群中获取更新的配置信息;执行步骤203;

具体地,配置组件可以从监控到的发生配置信息改变事件的服务器中获取 更新的配置信息。

203、配置组件为要发送给订阅客户端的配置信息生成配置信息标识;执行 步骤204;

本实施例中,该配置信息标识用于唯一标识向该订阅客户端发送的配置信 息。该配置信息标识根据实际需求可以设置为64位或者32位或者16位等等。

204、配置组件向订阅客户端发送包括更新的配置信息以及配置信息标识的 消息;执行步骤205;

205、配置组件向确认组件发送配置组件标识、配置信息标识和该订阅客户 端的标识;执行步骤206;

该订阅客户端的标识和配置信息标识用于对订阅客户端进行追踪,以确定 订阅客户端是否成功收到配置信息,并成功更新配置信息。配置组件标识为了 便于后续确认组件向对应的配置组件反馈响应消息。

其中步骤205和步骤204可以没有先后顺序限制。

206、确认组件建立配置组件标识、配置信息标识和订阅客户端的标识的映 射关系;执行步骤207;

需要说明的是,当只有一个订阅客户端订阅配置信息时,配置组件可以不 向确认组件发送订阅客户端的标识,因为只有一个订阅客户端不会存在不知道 哪个订阅客户端后续向确认组件反馈消息。因为为了提高处理效率,当有多个 订阅客户端时,可以按照步骤205和206执行。

207、订阅客户端收到配置组件发送的包括更新的配置信息以及配置信息标 识的消息时,根据消息中的更新的配置信息更新自身的配置信息,并向确认组 件发送包括配置信息标识以及订阅客户端标识的配置信息的反馈信息;执行 208;

208、确认组件根据订阅客户端标识找到对应的配置组件标识、配置信息标 识和订阅客户端的标识的映射关系,并获取映射关系中对应的配置组件发送的 配置信息标识,并从订阅客户端的反馈信息中获取配置信息标识;执行步骤209;

209、确认组件判断配置组件发送的配置信息标识和订阅客户端反馈的配置 信息标识是否相同,若相同时,执行步骤210;否则若不相同时,执行步骤211;

210、确认组件确定订阅客户端更新配置信息成功,执行步骤212;

211、确认组件确定订阅客户端更新配置信息不成功,执行步骤213;

212、确认组件根据映射关系中配置组件标识向对应的配置组件发送订阅客 户端更新配置信息成功,结束。

213、确认组件根据映射关系中配置组件标识向对应的配置组件发送订阅客 户端更新配置信息不成功,执行步骤214;

214、配置组件重新向订阅客户端发送包括更新的配置信息以及配置信息标 识的消息,执行步骤207。

上述实施例中还包括:若配置组件在预设时间段内未接收到确认组件发送的 订阅客户端成功或者未成功接收到配置信息的响应消息时,确定订阅客户端未 成功接收到配置信息;此时配置组件重新向订阅客户端发送包括更新的配置信 息和配置信息标识的消息。由于可知,本实施例的分布式系统的配置信息更新 方案中还提供了延迟并重发的方案,提高了更新配置信息的效率。

本实施例的分布式系统中配置信息的更新方法,通过配置信息的更新装置 中的确认组件来确认订阅客户端是否成功收到更新的配置信息,从而能够及时 地确定订阅客户端是否能够成功更新配置信息,克服了现有技术中的缺陷,有 效地提高分布式系统中配置信息更新的可靠性。而且在更新配置信息的过程中 提供了配置信息的重发机制,能够在确定订阅客户端未成功收到配置组件发送 的更新的配置信息时,重新向订阅客户端发生更新的配置信息,而不用订阅客 户端重新去订阅,减少了订阅客户端更新配置信息的复杂性,提高了更新配置 信息的效率。进一步地,还在更新配置信息方案中提供了延迟方案,在预设时 间段过后,若未收到响应消息,重新向订阅客户端发送包括更新的配置信息和 配置信息标识的消息,减少了订阅客户端更新配置信息的复杂性,提高了更新 配置信息的效率。

需要说明的是:上述实施例提供的配置信息的更新装置在更新配置信息时, 仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上 述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模 块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的配置信息 的更新装置与配置信息的更新方法实施例属于同一构思,其具体实现过程详见 方法实施例,这里不再赘述。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过 硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于 一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或 光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的 精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的 保护范围之内。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号