基于Zookeeper的节点配置方法和基于Zookeeper的节点配置系统的利记博彩app

文档序号:7822239阅读:207来源:国知局
基于Zookeeper的节点配置方法和基于Zookeeper的节点配置系统的利记博彩app
【专利摘要】本发明提供了一种基于Zookeeper的节点配置方法和一种基于Zookeeper的节点配置系统,其中,基于Zookeeper的节点配置方法包括:当检测到来自客户端的对服务的运行请求时,为所述服务在Zookeeper中建立至少一个节点;启动任一线程对所述至少一个节点的工作状态进行检测;根据检测结果,对所述至少一个节点进行处理。通过该发明的技术方案,可以在节点处于故障状态时,及时告知客户端,并为客户端移除该节点,从而保证客户端的服务质量,实现软负载均衡和高可用性,避免因某一节点中断而导致服务不可用。
【专利说明】基于Zookeeper的节点配置方法和基于Zookeeper的节点配置系统

【技术领域】
[0001]本发明涉及通信【技术领域】,具体而言,涉及一种基于Zook^per的节点配置方法和一种基于Zookeeper的节点配置系统。

【背景技术】
[0002]目前,市场上的大型企业级应用软件的主要使用编码式的开发方式或一次开发持续运行方式。其中,编码式的开发方式使得快速开发企业级应用软件的愿望难以实现,而一次开发持续运行的方式导致了软件的僵化。
[0003]现有技术中的软件不但难以适应客户需求的变化,而且每次对软件进行修改都必须在代码层上推倒重来,从而降低了工作效率,也造成了资源的浪费。除此之外,现有技术中的软件不仅工程代码繁多,不利于软件的抽象化和模块化,而且软件的性能也比较难优化。
[0004]因此需要一种新的技术方案,可以实现系统的软负载均衡和高可用性。


【发明内容】

[0005]本发明正是基于上述问题,提出了一种新的技术方案,可以实现系统的软负载均衡和高可用性。
[0006]有鉴于此,本发明的一方面提出了一种基于Zooke印er的节点配置方法,包括:当检测到来自客户端的对服务的运行请求时,为所述服务在Zookeeper中建立至少一个节点;启动任一线程对所述至少一个节点的工作状态进行检测;根据检测结果,对所述至少一个节点进行处理。
[0007]在该技术方案中,可以在客户端使用服务的过程中对客户端访问的节点的工作状态进行检测,并判断检测到的该节点的工作状态是否正常,以便在节点处于故障状态时,及时告知客户端,并为客户端移除该节点,从而保证客户端的服务质量,实现软负载均衡和高可用性,避免因某一节点中断而导致服务不可用。
[0008]在该技术方案中,优选地,所述为所述服务在Zookeeper中建立至少一个节点,具体包括:在所述Zookeeper中为所述服务确定指定路径;在确定的所述指定路径上为所述服务建立所述至少一个节点。
[0009]在该技术方案中,在服务器启动后,搭建Zookeeper集群,并可以在Zookeeper的指定路径为客户端建立可访问的节点。其中,每个服务建立3个java工程:core(接口定义包)、server (服务端包)、client (客户端包),core存放所有接口和公用bean,server为这个服务的model、dao、cache、service核心实现层,client为该服务的对外暴露接口,以及Server和Client基于socket (套接字)进行通信,Server启动后在Zookeeper指定路径建立临时节点,其value (关键字)为该服务所在的机器的网络协议。
[0010]在该技术方案中,优选地,在所述为所述服务在Zookeeper中建立至少一个节点之后,还包括:将所述客户端的网络协议注册到所述指定路径上的网络协议列表中,并将注册结果保存至所述客户端的缓存列表,以供所述客户端通过所述缓存列表访问所述节点。
[0011]在该技术方案中,Client对外提供该服务接口,需要调用该服务的系统用项目管理工具,如maven,将该client依赖进来,web (网页)容器启动时候会从特定路径读取已注册服务网络协议列表,将结果放到缓存列表,以便客户端通过缓存列表访问节点。
[0012]在该技术方案中,优选地,所述对所述至少一个节点的工作状态进行检测,具体包括:对所述至少一个节点进行绑定监听;根据监听结果,确定所述节点的工作状态,其中,所述节点的所述工作状态包括正常连接状态或连接故障状态。
[0013]在该技术方案中,利用预定的监听机制对节点绑定监听,如果监听值发生变化,说明节点的工作状态发生变化,则更新缓存列表,以保证服务的可用性。
[0014]在该技术方案中,优选地,所述根据检测结果,对所述至少一个节点进行处理,具体包括:确定所述至少一个节点中是否有节点处于所述连接故障状态;当确定所述至少一个节点中的任一节点处于所述连接故障状态时,为所述客户端移除所述任一节点;在移除所述任一节点后,更新所述客户端的所述缓存列表,以使所述客户端访问所述至少一个节点中的所述任一节点以外的其他节点。
[0015]在该技术方案中,当节点发生故障时,可以及时摘除该节点,以使客户端通过其他节点访问服务器,另外,如果节点由于网络不稳等因素导致故障或被摘除,可以立即再次注册该节点。
[0016]本发明的另一方面提出了一种基于Zookeeper的节点配置系统,包括:节点建立单元,当检测到来自客户端的对服务的运行请求时,为所述服务在Zookeeper中建立至少一个节点;节点工作状态检测单元,启动任一线程对所述至少一个节点的工作状态进行检测;处理单元,根据检测结果,对所述至少一个节点进行处理。
[0017]在该技术方案中,可以在客户端使用服务的过程中对客户端访问的节点的工作状态进行检测,并判断检测到的该节点的工作状态是否正常,以便在节点处于故障状态时,及时告知客户端,并为客户端移除该节点,从而保证客户端的服务质量,实现软负载均衡和高可用性,避免因某一节点中断而导致服务不可用。
[0018]在该技术方案中,优选地,所述节点建立单元具体用于:在所述Zookeeper中为所述服务确定指定路径,并在确定的所述指定路径上为所述服务建立所述至少一个节点。
[0019]在该技术方案中,在服务器启动后,搭建Zookeeper集群,并可以在Zookeeper的指定路径为客户端建立可访问的节点。其中,每个服务建立3个java工程:core(接口定义包)、server (服务端包)、client (客户端包),core存放所有接口和公用bean,server为这个服务的model、dao、cache、service核心实现层,client为该服务的对外暴露接口,以及Server和Client基于socket (套接字)进行通信,Server启动后在Zookeeper指定路径建立临时节点,其value (关键字)为该服务所在的机器的网络协议。
[0020]在该技术方案中,优选地,还包括:注册单元,在所述为所述服务在Zookeeper中建立至少一个节点之后,将所述客户端的网络协议注册到所述指定路径上的网络协议列表中;保存单元,将注册结果保存至所述客户端的缓存列表,以供所述客户端通过所述缓存列表访问所述节点。
[0021]在该技术方案中,Client对外提供该服务接口,需要调用该服务的系统用项目管理工具,如maven,将该client依赖进来,web (网页)容器启动时候会从特定路径读取已注册服务网络协议列表,将结果放到缓存列表,以便客户端通过缓存列表访问节点。
[0022]在该技术方案中,优选地,所述节点工作状态检测单元包括:监听单元,对所述至少一个节点进行绑定监听;以及所述节点工作状态检测单元具体用于:根据监听结果,确定所述节点的工作状态,其中,所述节点的所述工作状态包括正常通信状态、故障状态或断开状态。
[0023]在该技术方案中,利用预定的监听机制对节点绑定监听,如果监听值发生变化,说明节点的工作状态发生变化,则更新缓存列表,以保证服务的可用性。
[0024]在该技术方案中,优选地,所述处理单元包括:确定单元,确定所述至少一个节点中是否有节点处于所述连接故障状态;节点移除单元,当确定所述至少一个节点中的任一节点处于所述连接故障状态时,为所述客户端移除所述任一节点;更新单元,在移除所述任一节点后,更新所述客户端的所述缓存列表,以使所述客户端访问所述至少一个节点中的所述任一节点以外的其他节点。
[0025]在该技术方案中,当节点发生故障时,可以及时摘除该节点,以使客户端通过其他节点访问服务器,另外,如果节点由于网络不稳等因素导致故障或被摘除,可以立即再次注册该节点。
[0026]通过以上技术方案,可以在节点处于故障状态时,及时告知客户端,并为客户端移除该节点,从而保证客户端的服务质量,实现软负载均衡和高可用性,避免因某一节点中断而导致服务不可用。

【专利附图】

【附图说明】
[0027]图1示出了根据本发明的一个实施例的基于Zooke印er的节点配置方法的流程图;
[0028]图2示出了根据本发明的一个实施例的基于Zookeeper的节点配置系统的框图;
[0029]图3示出了根据本发明的一个实施例的进行节点配置的示意图。

【具体实施方式】
[0030]为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和【具体实施方式】对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
[0031]在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
[0032]图1示出了根据本发明的一个实施例的基于Zooke印er的节点配置方法的流程图。
[0033]如图1所示,根据本发明的一个实施例的基于Zooke印er的节点配置方法,包括:
[0034]步骤102,客户端的对服务的运行请求时,为服务在Zookeeper中建立至少一个节点。
[0035]步骤104,动任一线程对至少一个节点的工作状态进行检测。
[0036]步骤106,据检测结果,对至少一个节点进行处理。
[0037]在该技术方案中,可以在客户端使用服务的过程中对客户端访问的节点的工作状态进行检测,并判断检测到的该节点的工作状态是否正常,以便在节点处于故障状态时,及时告知客户端,并为客户端移除该节点,从而保证客户端的服务质量,实现软负载均衡和高可用性,避免因某一节点中断而导致服务不可用。
[0038]在该技术方案中,优选地,步骤102具体包括:在Zookeeper中为服务确定指定路径;在确定的指定路径上为服务建立至少一个节点。
[0039]在该技术方案中,在服务器启动后,搭建Zookeeper集群,并可以在Zookeeper的指定路径为客户端建立可访问的节点。其中,每个服务建立3个java工程:core(接口定义包)、server (服务端包)、client (客户端包),core存放所有接口和公用bean,server为这个服务的model、dao、cache、service核心实现层,client为该服务的对外暴露接口,以及Server和Client基于socket (套接字)进行通信,Server启动后在Zookeeper指定路径建立临时节点,其value (关键字)为该服务所在的机器的网络协议。
[0040]在该技术方案中,优选地,在步骤102之后,还包括:将客户端的网络协议注册到指定路径上的网络协议列表中,并将注册结果保存至客户端的缓存列表,以供客户端通过缓存列表访问节点。
[0041]在该技术方案中,Client对外提供该服务接口,需要调用该服务的系统用项目管理工具,如maven,将该client依赖进来,web (网页)容器启动时候会从特定路径读取已注册服务网络协议列表,将结果放到缓存列表,以便客户端通过缓存列表访问节点。
[0042]在该技术方案中,优选地,步骤104具体包括:对至少一个节点进行绑定监听;根据监听结果,确定节点的工作状态,其中,节点的工作状态包括正常连接状态或连接故障状
--τ O
[0043]在该技术方案中,利用预定的监听机制对节点绑定监听,如果监听值发生变化,说明节点的工作状态发生变化,则更新缓存列表,以保证服务的可用性。
[0044]在该技术方案中,优选地,步骤106具体包括:确定至少一个节点中是否有节点处于连接故障状态;当确定至少一个节点中的任一节点处于连接故障状态时,为客户端移除任一节点;在移除任一节点后,更新客户端的缓存列表,以使客户端访问至少一个节点中的任一节点以外的其他节点。
[0045]在该技术方案中,当节点发生故障时,可以及时摘除该节点,以使客户端通过其他节点访问服务器,另外,如果节点由于网络不稳等因素导致故障或被摘除,可以立即再次注册该节点。
[0046]图2示出了根据本发明的一个实施例的基于Zookeeper的节点配置系统的框图。
[0047]如图2所示,根据本发明的一个实施例的基于Zooke印er的节点配置系统200:节点建立单元202,当检测到来自客户端的对服务的运行请求时,为服务在Zookeeper中建立至少一个节点;节点工作状态检测单元204,启动任一线程对至少一个节点的工作状态进行检测;处理单元206,根据检测结果,对至少一个节点进行处理。
[0048]在该技术方案中,可以在客户端使用服务的过程中对客户端访问的节点的工作状态进行检测,并判断检测到的该节点的工作状态是否正常,以便在节点处于故障状态时,及时告知客户端,并为客户端移除该节点,从而保证客户端的服务质量,实现软负载均衡和高可用性,避免因某一节点中断而导致服务不可用。
[0049]在该技术方案中,优选地,节点建立单元202具体用于:在Zookeeper中为服务确定指定路径,并在确定的指定路径上为服务建立至少一个节点。
[0050]在该技术方案中,在服务器启动后,搭建Zookeeper集群,并可以在Zookeeper的指定路径为客户端建立可访问的节点。其中,每个服务建立3个java工程:core(接口定义包)、server (服务端包)、client (客户端包),core存放所有接口和公用bean,server为这个服务的model、dao、cache、service核心实现层,client为该服务的对外暴露接口,以及Server和Client基于socket (套接字)进行通信,Server启动后在Zookeeper指定路径建立临时节点,其value (关键字)为该服务所在的机器的网络协议。
[0051]在该技术方案中,优选地,还包括:注册单元208,在为服务在Zooke印er中建立至少一个节点之后,将客户端的网络协议注册到指定路径上的网络协议列表中;保存单元210,将注册结果保存至客户端的缓存列表,以供客户端通过缓存列表访问节点。
[0052]在该技术方案中,Client对外提供该服务接口,需要调用该服务的系统用项目管理工具,如maven,将该client依赖进来,web (网页)容器启动时候会从特定路径读取已注册服务网络协议列表,将结果放到缓存列表,以便客户端通过缓存列表访问节点。
[0053]在该技术方案中,优选地,节点工作状态检测单元204包括:监听单元2042,对至少一个节点进行绑定监听;以及节点工作状态检测单元204具体用于:根据监听结果,确定节点的工作状态,其中,节点的工作状态包括正常通信状态、故障状态或断开状态。
[0054]在该技术方案中,利用预定的监听机制对节点绑定监听,如果监听值发生变化,说明节点的工作状态发生变化,则更新缓存列表,以保证服务的可用性。
[0055]在该技术方案中,优选地,处理单元206包括:确定单元2062,确定至少一个节点中是否有节点处于连接故障状态;节点移除单元2064,当确定至少一个节点中的任一节点处于连接故障状态时,为客户端移除任一节点;更新单元2066,在移除任一节点后,更新客户端的缓存列表,以使客户端访问至少一个节点中的任一节点以外的其他节点。
[0056]在该技术方案中,当节点发生故障时,可以及时摘除该节点,以使客户端通过其他节点访问服务器,另外,如果节点由于网络不稳等因素导致故障或被摘除,可以立即再次注册该节点。
[0057]图3示出了根据本发明的一个实施例的进行节点配置的示意图。
[0058]如图3所示,在进行节点配置的过程中,首先要搭建Zookeeper集群,为每个服务建立3个java工程:core、server、client,其中,core存放所有接口和公用bean,server为这个服务model、dao、cache、service核心实现层,client为该服务的对外暴露接口,server和client基于socket进行通信。
[0059]server启动后可在Zookeeper指定path(路径)建立临时节点,value为该服务所在的机器IP (网络协议),同时启动一个线程扫描Zookeeper中该节点的状态,如果节点由于网络不稳等因素导致被摘除,需要立即注册该节点。
[0060]client对外提供该服务接口,需要调用该服务的系统,用maven将该client依赖进来,web容器启动时候会从特定path读取已注册服务IP列表,将结果放到jvm列表,同时利用watcher (监听)机制对该节点绑定监听,如果检测值发生变化,则更新jvm列表。
[0061]另外,在本技术方案中,还使用了重试机制,具体来讲,client向server发一个请求,根据当前时间戳和服务节点数取摸,可以定位到具体服务执行请求,如果此次请求失败,比如发生网络瞬断等状况,client会将时间戳加1,并再次执行请求,直至成功为止。
[0062]其中,负载均衡指的是对负载或流量分摊,不至于把一台机器超载导致服务终断或不可用,多台机器经常组成一个集群,共同分担压力。高可用性就是为了解决某节点故障的问题,当集群中的某节点出问题后,调用时方能及时感知server端节点发生了变化,将问题节点移除。节点动态注册指的是在server启动后,获取当前主机IP,基于applicat1ncontext.xml 动态实例化 service 对应实现 Bean Factory Aware 接口 bean,并在Zookeeper注册该节点。
[0063]在该技术方案中,应用了 Thrift框架和Zookeeper技术,基于socket进行通信传输,并使用高密度二进制协议。另外,还提供了可扩展且跨语言的服务的开发,结合了功能强大的软件堆栈和代码生成引擎,以构建在多语言间无缝结合的服务,使用非阻塞NonblockingServer方式进行高效服务处理。
[0064]在该技术方案中,使模块化开发方便地以组件方式为其他系统提供服务,并支持横向动态扩展服务节点,实现了 server集群的高可用和坏节点的自动摘除。
[0065]在该技术方案中,server端log4j支持热配置,可根据需要修改log打印配置,而在客户端请求失败时可以自动重试机制直至成功。本发明已经成功应用于搜狐博客、搜狐视频、搜狐passport、畅捷通工作圈。
[0066]以上结合附图详细说明了本发明的技术方案,通过本发明的技术方案,可以在节点处于故障状态时,及时告知客户端,并为客户端移除该节点,从而保证客户端的服务质量,实现软负载均衡和高可用性,避免因某一节点中断而导致服务不可用。
[0067]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种基于Zookeeper的节点配置方法,其特征在于,包括: 当检测到来自客户端的对服务的运行请求时,为所述服务在Zookeeper中建立至少一个节点; 启动任一线程对所述至少一个节点的工作状态进行检测; 根据检测结果,对所述至少一个节点进行处理。
2.根据权利要求1所述的基于Zookeeper的节点配置方法,其特征在于,所述为所述服务在Zookeeper中建立至少一个节点,具体包括: 在所述Zookeeper中为所述服务确定指定路径; 在确定的所述指定路径上为所述服务建立所述至少一个节点。
3.根据权利要求2所述的基于Zookeeper的节点配置方法,其特征在于,在所述为所述服务在Zookeeper中建立至少一个节点之后,还包括: 将所述客户端的网络协议注册到所述指定路径上的网络协议列表中,并将注册结果保存至所述客户端的缓存列表,以供所述客户端通过所述缓存列表访问所述节点。
4.根据权利要求3所述的基于Zookeeper的节点配置方法,其特征在于,所述对所述至少一个节点的工作状态进行检测,具体包括: 对所述至少一个节点进行绑定监听; 根据监听结果,确定所述节点的工作状态,其中, 所述节点的所述工作状态包括正常连接状态或连接故障状态。
5.根据权利要求4所述的基于Zookeeper的节点配置方法,其特征在于,所述根据检测结果,对所述至少一个节点进行处理,具体包括: 确定所述至少一个节点中是否有节点处于所述连接故障状态; 当确定所述至少一个节点中的任一节点处于所述连接故障状态时,为所述客户端移除所述任一节点; 在移除所述任一节点后,更新所述客户端的所述缓存列表,以使所述客户端访问所述至少一个节点中的所述任一节点以外的其他节点。
6.一种基于Zookeeper的节点配置系统,其特征在于,包括: 节点建立单元,当检测到来自客户端的对服务的运行请求时,为所述服务在Zookeeper中建立至少一个节点; 节点工作状态检测单元,启动任一线程对所述至少一个节点的工作状态进行检测; 处理单元,根据检测结果,对所述至少一个节点进行处理。
7.根据权利要求6所述的基于Zookeeper的节点配置系统,其特征在于,所述节点建立单元具体用于: 在所述Zookeeper中为所述服务确定指定路径,并在确定的所述指定路径上为所述服务建立所述至少一个节点。
8.根据权利要求7所述的基于Zook^per的节点配置系统,其特征在于,还包括: 注册单元,在所述为所述服务在Zookeeper中建立至少一个节点之后,将所述客户端的网络协议注册到所述指定路径上的网络协议列表中; 保存单元,将注册结果保存至所述客户端的缓存列表,以供所述客户端通过所述缓存列表访问所述节点。
9.根据权利要求8所述的基于Zookeeper的节点配置系统,其特征在于,所述节点工作状态检测单元包括: 监听单元,对所述至少一个节点进行绑定监听;以及 所述节点工作状态检测单元具体用于: 根据监听结果,确定所述节点的工作状态,其中, 所述节点的所述工作状态包括正常通信状态、故障状态或断开状态。
10.根据权利要求9所述的基于Zook^per的节点配置系统,其特征在于,所述处理单元包括: 确定单元,确定所述至少一个节点中是否有节点处于所述连接故障状态; 节点移除单元,当确定所述至少一个节点中的任一节点处于所述连接故障状态时,为所述客户端移除所述任一节点; 更新单元,在移除所述任一节点后,更新所述客户端的所述缓存列表,以使所述客户端访问所述至少一个节点中的所述任一节点以外的其他节点。
【文档编号】H04L12/24GK104486108SQ201410745771
【公开日】2015年4月1日 申请日期:2014年12月8日 优先权日:2014年12月8日
【发明者】郝学武 申请人:畅捷通信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1