一种节点访问方法和系统、客户端代理和客户端的制作方法_3

文档序号:8318949阅读:来源:国知局
f:: getBatchConf ($key, $idc = NULL)接口获取a的下一级子节点的名称为:b和C,同时还可以获取b和c的值。
[0092]在本发明的一种可选实施例中,所述方法可以还包括:在所述第二查询失败时,所述客户端将对应子节点的信息写入所述消息队列。本可选实施例能够使得客户端代理从消息队列中获取最新的子节点的信息,从服务端获取所述最新的子节点的信息对应的值并写入共享内存,从而保证客户端在共享内存中成功查询得到所述最新的子节点的信息对应的值。
[0093]对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0094]参照图6,示出了根据本发明一个实施例的一种客户端代理的结构示意图,具体可以包括如下模块:
[0095]信息获取模块601,用于从消息队列中获取批量节点的信息;其中,所述批量节点具体可以包括多个子节点;
[0096]事件注册模块602,用于在服务端上注册所述子节点的监视事件;其中,所述子节点的监视事件至少可以包括:子节点的增删事件;
[0097]事件接收模块603,用于接收所述服务端通知的所述子节点的监视事件及对应的事件内容;
[0098]序列生成模块604,用于依据所述子节点的增删事件对应的事件内容,生成包含所述批量节点的信息与子节点集合的映射关系的序列;以及
[0099]序列写入模块605,用于将所述序列写入共享内存。
[0100]在实际应用中,客户端代理可以与zookeeper等服务端保持长连接,以保证从服务端顺利接收所述服务端通知的所述子节点的监视事件及对应的事件内容;同时,客户端代理还需要监视消息队列的变化,以从中获取最新的批量节点的信息。
[0101]针对刚批量节点的功能初步上线时共享内存空白,大量批量节点的信息被扔到消息队列中,而客户端代理从服务端取值相对慢,消息队列积压最终被写满的现象,客户端代理可以创建独立线程,该独立线程负责将批量节点的信息从消息队列里读到内存中。
[0102]在实际应用中,所述消息队列中批量节点的信息可以为客户端在第一查询失败时写入的信息,其中,所述第一查询为依据批量节点的信息在共享内存中进行第一查询以得到批量节点的信息对应的子节点集合。
[0103]在本发明的一种可选实施例中,所述事件注册模块602,可具体用于向所述服务端发送事件注册请求,所述事件注册请求中携带有所述子节点的监视事件、以及回调参数的指针,以使在所述服务端在所述子节点的监视事件发生时,使用所述指针调用所述回调函数进行所述子节点的监视事件及对应的事件内容的通知。
[0104]在本发明的另一种可选实施例中,所述子节点的监视事件还可以包括:子节点对应值的变化事件;
[0105]则所述客户端代理还可以包括:
[0106]更新模块,用于代理依据所述子节点对应值的变化事件对应的事件内容,得到所述子节点的最新值;
[0107]值写入模块,用于将所述子节点的最新值写入所述共享内存。
[0108]对于客户端代理实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0109]参照图7,示出了根据本发明一个实施例的一种客户端的结构示意图,具体可以包括如下模块:
[0110]第一查询模块701,用于依据批量节点的信息在共享内存中进行第一查询,以得到批量节点的信息对应的子节点集合;其中,所述共享内存中存储有包含所述批量节点的信息与子节点集合的映射关系的序列;以及
[0111]第一写入模块702,用于在所述第一查询失败时,所述客户端将所述批量节点的信息写入消息队列。
[0112]在本发明的一种可选实施例中,所述客户端还可以包括:
[0113]第二查询模块,用于依据所述子节点集合中各子节点在所述共享内存进行第二查询,以得到所述子节点集合中各子节点的值。
[0114]在本发明的另一种可选实施例中,所述客户端还可以包括:
[0115]第二写入模块,用于在在所述第二查询失败时,所述客户端将对应子节点的信息写入所述消息队列。
[0116]对于客户端实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0117]本发明还提供了一种节点访问系统,其具体可以包括:服务端、前述的客户端代理和前述的客户端。
[0118]参照图8,示出了根据本发明一个实施例的一种节点访问系统的结构示意图,其具体可以包括:服务端801、客户端代理802和客户端803 ;
[0119]其中,所述客户端代理802具体可以包括如下模块:
[0120]信息获取模块821,用于从消息队列中获取批量节点的信息;其中,所述批量节点具体可以包括多个子节点;
[0121]事件注册模块822,用于在服务端上注册所述子节点的监视事件;其中,所述子节点的监视事件至少可以包括:子节点的增删事件;
[0122]事件接收模块823,用于接收所述服务端通知的所述子节点的监视事件及对应的事件内容;
[0123]序列生成模块824,用于依据所述子节点的增删事件对应的事件内容,生成包含所述批量节点的信息与子节点集合的映射关系的序列;以及
[0124]序列写入模块825,用于将所述序列写入共享内存;
[0125]所述客户端803具体可以包括如下模块:
[0126]第一查询模块831,用于依据批量节点的信息在共享内存中进行第一查询,以得到批量节点的信息对应的子节点集合;其中,所述共享内存中存储有包含所述批量节点的信息与子节点集合的映射关系的序列;以及
[0127]第一写入模块832,用于在所述第一查询失败时,所述客户端将所述批量节点的信息写入消息队列。
[0128]在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
[0129]在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0130]类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0131]本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0132]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0133]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的节点访问方法和系统、客户端代理和客户端中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网平台上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0134]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”或“包括”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1