《基于ZOOKEEPER的节点配置方法和基于ZOOKEEPER的节点配置系统.pdf》由会员分享,可在线阅读,更多相关《基于ZOOKEEPER的节点配置方法和基于ZOOKEEPER的节点配置系统.pdf(11页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 (43)申请公布日 (21)申请号 201410745771.3(22)申请日 2014.12.08H04L 12/24(2006.01)H04L 29/08(2006.01)(71)申请人 畅捷通信息技术股份有限公司地址 100094 北京市海淀区北清路 68 号用友软件园(72)发明人 郝学武(74)专利代理机构 北京友联知识产权代理事务所 ( 普通合伙 ) 11343代理人 尚志峰 汪海屏(54) 发明名称基于Zookeeper的节点配置方法和基于Zookeeper 的节点配置系统(57) 摘要本发明提供了一种基于 Zookeeper 的节点配置方法和一种基于 Zoo。
2、keeper 的节点配置系统,其中,基于Zookeeper的节点配置方法包括:当检测到来自客户端的对服务的运行请求时,为所述服务在 Zookeeper 中建立至少一个节点 ;启动任一线程对所述至少一个节点的工作状态进行检测;根据检测结果,对所述至少一个节点进行处理。通过该发明的技术方案,可以在节点处于故障状态时,及时告知客户端,并为客户端移除该节点,从而保证客户端的服务质量,实现软负载均衡和高可用性,避免因某一节点中断而导致服务不可用。(51)Int.Cl.(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书6页 附图2页(10)申请公布号 CN 104486108 。
3、A(43)申请公布日 2015.04.01CN 104486108 A1/2 页21.一种基于 Zookeeper 的节点配置方法,其特征在于,包括 :当检测到来自客户端的对服务的运行请求时,为所述服务在 Zookeeper 中建立至少一个节点 ;启动任一线程对所述至少一个节点的工作状态进行检测 ;根据检测结果,对所述至少一个节点进行处理。2.根据权利要求1所述的基于Zookeeper的节点配置方法,其特征在于,所述为所述服务在 Zookeeper 中建立至少一个节点,具体包括 :在所述 Zookeeper 中为所述服务确定指定路径 ;在确定的所述指定路径上为所述服务建立所述至少一个节点。3.。
4、根据权利要求2所述的基于Zookeeper的节点配置方法,其特征在于,在所述为所述服务在 Zookeeper 中建立至少一个节点之后,还包括 :将所述客户端的网络协议注册到所述指定路径上的网络协议列表中,并将注册结果保存至所述客户端的缓存列表,以供所述客户端通过所述缓存列表访问所述节点。4.根据权利要求3所述的基于Zookeeper的节点配置方法,其特征在于,所述对所述至少一个节点的工作状态进行检测,具体包括 :对所述至少一个节点进行绑定监听 ;根据监听结果,确定所述节点的工作状态,其中,所述节点的所述工作状态包括正常连接状态或连接故障状态。5.根据权利要求4所述的基于Zookeeper的节点。
5、配置方法,其特征在于,所述根据检测结果,对所述至少一个节点进行处理,具体包括 :确定所述至少一个节点中是否有节点处于所述连接故障状态 ;当确定所述至少一个节点中的任一节点处于所述连接故障状态时,为所述客户端移除所述任一节点 ;在移除所述任一节点后,更新所述客户端的所述缓存列表,以使所述客户端访问所述至少一个节点中的所述任一节点以外的其他节点。6.一种基于 Zookeeper 的节点配置系统,其特征在于,包括 :节点建立单元,当检测到来自客户端的对服务的运行请求时,为所述服务在 Zookeeper中建立至少一个节点 ;节点工作状态检测单元,启动任一线程对所述至少一个节点的工作状态进行检测 ;处理。
6、单元,根据检测结果,对所述至少一个节点进行处理。7.根据权利要求6所述的基于Zookeeper的节点配置系统,其特征在于,所述节点建立单元具体用于 :在所述 Zookeeper 中为所述服务确定指定路径,并在确定的所述指定路径上为所述服务建立所述至少一个节点。8.根据权利要求 7 所述的基于 Zookeeper 的节点配置系统,其特征在于,还包括 :注册单元,在所述为所述服务在 Zookeeper 中建立至少一个节点之后,将所述客户端的网络协议注册到所述指定路径上的网络协议列表中 ;保存单元,将注册结果保存至所述客户端的缓存列表,以供所述客户端通过所述缓存列表访问所述节点。权 利 要 求 书C。
7、N 104486108 A2/2 页39.根据权利要求8所述的基于Zookeeper的节点配置系统,其特征在于,所述节点工作状态检测单元包括 :监听单元,对所述至少一个节点进行绑定监听 ;以及所述节点工作状态检测单元具体用于 :根据监听结果,确定所述节点的工作状态,其中,所述节点的所述工作状态包括正常通信状态、故障状态或断开状态。10.根据权利要求 9 所述的基于 Zookeeper 的节点配置系统,其特征在于,所述处理单元包括 :确定单元,确定所述至少一个节点中是否有节点处于所述连接故障状态 ;节点移除单元,当确定所述至少一个节点中的任一节点处于所述连接故障状态时,为所述客户端移除所述任一节。
8、点 ;更新单元,在移除所述任一节点后,更新所述客户端的所述缓存列表,以使所述客户端访问所述至少一个节点中的所述任一节点以外的其他节点。权 利 要 求 书CN 104486108 A1/6 页4基于 Zookeeper 的节点配置方法和基于 Zookeeper 的节点配置系统技术领域0001 本发明涉及通信技术领域,具体而言,涉及一种基于 Zookeeper 的节点配置方法和一种基于 Zookeeper 的节点配置系统。背景技术0002 目前,市场上的大型企业级应用软件的主要使用编码式的开发方式或一次开发持续运行方式。其中,编码式的开发方式使得快速开发企业级应用软件的愿望难以实现,而一次开发持续。
9、运行的方式导致了软件的僵化。0003 现有技术中的软件不但难以适应客户需求的变化,而且每次对软件进行修改都必须在代码层上推倒重来,从而降低了工作效率,也造成了资源的浪费。除此之外,现有技术中的软件不仅工程代码繁多,不利于软件的抽象化和模块化,而且软件的性能也比较难优化。0004 因此需要一种新的技术方案,可以实现系统的软负载均衡和高可用性。发明内容0005 本发明正是基于上述问题,提出了一种新的技术方案,可以实现系统的软负载均衡和高可用性。0006 有鉴于此,本发明的一方面提出了一种基于 Zookeeper 的节点配置方法,包括 :当检测到来自客户端的对服务的运行请求时,为所述服务在 Zook。
10、eeper 中建立至少一个节点 ;启动任一线程对所述至少一个节点的工作状态进行检测 ;根据检测结果,对所述至少一个节点进行处理。0007 在该技术方案中,可以在客户端使用服务的过程中对客户端访问的节点的工作状态进行检测,并判断检测到的该节点的工作状态是否正常,以便在节点处于故障状态时,及时告知客户端,并为客户端移除该节点,从而保证客户端的服务质量,实现软负载均衡和高可用性,避免因某一节点中断而导致服务不可用。0008 在该技术方案中,优选地,所述为所述服务在 Zookeeper 中建立至少一个节点,具体包括 :在所述 Zookeeper 中为所述服务确定指定路径 ;在确定的所述指定路径上为所述。
11、服务建立所述至少一个节点。0009 在该技术方案中,在服务器启动后,搭建 Zookeeper 集群,并可以在 Zookeeper 的指定路径为客户端建立可访问的节点。其中,每个服务建立 3 个 java 工程 :core( 接口定义包 )、server( 服务端包 )、client( 客户端包 ),core 存放所有接口和公用 bean,server为这个服务的 model、dao、cache、service 核心实现层,client 为该服务的对外暴露接口,以及 Server 和 Client 基于 socket( 套接字 ) 进行通信,Server 启动后在 Zookeeper 指定路径建。
12、立临时节点,其 value( 关键字 ) 为该服务所在的机器的网络协议。0010 在该技术方案中,优选地,在所述为所述服务在 Zookeeper 中建立至少一个节点说 明 书CN 104486108 A2/6 页5之后,还包括 :将所述客户端的网络协议注册到所述指定路径上的网络协议列表中,并将注册结果保存至所述客户端的缓存列表,以供所述客户端通过所述缓存列表访问所述节点。0011 在该技术方案中,Client 对外提供该服务接口,需要调用该服务的系统用项目管理工具,如 maven,将该 client 依赖进来,web( 网页 ) 容器启动时候会从特定路径读取已注册服务网络协议列表,将结果放到缓。
13、存列表,以便客户端通过缓存列表访问节点。0012 在该技术方案中,优选地,所述对所述至少一个节点的工作状态进行检测,具体包括 :对所述至少一个节点进行绑定监听 ;根据监听结果,确定所述节点的工作状态,其中,所述节点的所述工作状态包括正常连接状态或连接故障状态。0013 在该技术方案中,利用预定的监听机制对节点绑定监听,如果监听值发生变化,说明节点的工作状态发生变化,则更新缓存列表,以保证服务的可用性。0014 在该技术方案中,优选地,所述根据检测结果,对所述至少一个节点进行处理,具体包括 :确定所述至少一个节点中是否有节点处于所述连接故障状态 ;当确定所述至少一个节点中的任一节点处于所述连接故。
14、障状态时,为所述客户端移除所述任一节点 ;在移除所述任一节点后,更新所述客户端的所述缓存列表,以使所述客户端访问所述至少一个节点中的所述任一节点以外的其他节点。0015 在该技术方案中,当节点发生故障时,可以及时摘除该节点,以使客户端通过其他节点访问服务器,另外,如果节点由于网络不稳等因素导致故障或被摘除,可以立即再次注册该节点。0016 本发明的另一方面提出了一种基于 Zookeeper 的节点配置系统,包括 :节点建立单元,当检测到来自客户端的对服务的运行请求时,为所述服务在 Zookeeper 中建立至少一个节点 ;节点工作状态检测单元,启动任一线程对所述至少一个节点的工作状态进行检测 。
15、;处理单元,根据检测结果,对所述至少一个节点进行处理。0017 在该技术方案中,可以在客户端使用服务的过程中对客户端访问的节点的工作状态进行检测,并判断检测到的该节点的工作状态是否正常,以便在节点处于故障状态时,及时告知客户端,并为客户端移除该节点,从而保证客户端的服务质量,实现软负载均衡和高可用性,避免因某一节点中断而导致服务不可用。0018 在该技术方案中,优选地,所述节点建立单元具体用于 :在所述 Zookeeper 中为所述服务确定指定路径,并在确定的所述指定路径上为所述服务建立所述至少一个节点。0019 在该技术方案中,在服务器启动后,搭建 Zookeeper 集群,并可以在 Zoo。
16、keeper 的指定路径为客户端建立可访问的节点。其中,每个服务建立 3 个 java 工程 :core( 接口定义包 )、server( 服务端包 )、client( 客户端包 ),core 存放所有接口和公用 bean,server为这个服务的 model、dao、cache、service 核心实现层,client 为该服务的对外暴露接口,以及 Server 和 Client 基于 socket( 套接字 ) 进行通信,Server 启动后在 Zookeeper 指定路径建立临时节点,其 value( 关键字 ) 为该服务所在的机器的网络协议。0020 在该技术方案中,优选地,还包括 :。
17、注册单元,在所述为所述服务在 Zookeeper 中建立至少一个节点之后,将所述客户端的网络协议注册到所述指定路径上的网络协议列表中 ;保存单元,将注册结果保存至所述客户端的缓存列表,以供所述客户端通过所述缓存列表访问所述节点。0021 在该技术方案中,Client 对外提供该服务接口,需要调用该服务的系统用项目管说 明 书CN 104486108 A3/6 页6理工具,如 maven,将该 client 依赖进来,web( 网页 ) 容器启动时候会从特定路径读取已注册服务网络协议列表,将结果放到缓存列表,以便客户端通过缓存列表访问节点。0022 在该技术方案中,优选地,所述节点工作状态检测单。
18、元包括 :监听单元,对所述至少一个节点进行绑定监听 ;以及所述节点工作状态检测单元具体用于 :根据监听结果,确定所述节点的工作状态,其中,所述节点的所述工作状态包括正常通信状态、故障状态或断开状态。0023 在该技术方案中,利用预定的监听机制对节点绑定监听,如果监听值发生变化,说明节点的工作状态发生变化,则更新缓存列表,以保证服务的可用性。0024 在该技术方案中,优选地,所述处理单元包括 :确定单元,确定所述至少一个节点中是否有节点处于所述连接故障状态 ;节点移除单元,当确定所述至少一个节点中的任一节点处于所述连接故障状态时,为所述客户端移除所述任一节点 ;更新单元,在移除所述任一节点后,更。
19、新所述客户端的所述缓存列表,以使所述客户端访问所述至少一个节点中的所述任一节点以外的其他节点。0025 在该技术方案中,当节点发生故障时,可以及时摘除该节点,以使客户端通过其他节点访问服务器,另外,如果节点由于网络不稳等因素导致故障或被摘除,可以立即再次注册该节点。0026 通过以上技术方案,可以在节点处于故障状态时,及时告知客户端,并为客户端移除该节点,从而保证客户端的服务质量,实现软负载均衡和高可用性,避免因某一节点中断而导致服务不可用。附图说明0027 图 1 示出了根据本发明的一个实施例的基于 Zookeeper 的节点配置方法的流程图;0028 图 2 示出了根据本发明的一个实施例的。
20、基于 Zookeeper 的节点配置系统的框图 ;0029 图 3 示出了根据本发明的一个实施例的进行节点配置的示意图。具体实施方式0030 为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。0031 在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。0032 图 1 示出了根据本发明的一个实施例的基于 Zookeeper 的节点配置方法的流程图。。
21、0033 如图 1 所示,根据本发明的一个实施例的基于 Zookeeper 的节点配置方法,包括 :0034 步骤 102,客户端的对服务的运行请求时,为服务在 Zookeeper 中建立至少一个节点。0035 步骤 104,动任一线程对至少一个节点的工作状态进行检测。说 明 书CN 104486108 A4/6 页70036 步骤 106,据检测结果,对至少一个节点进行处理。0037 在该技术方案中,可以在客户端使用服务的过程中对客户端访问的节点的工作状态进行检测,并判断检测到的该节点的工作状态是否正常,以便在节点处于故障状态时,及时告知客户端,并为客户端移除该节点,从而保证客户端的服务质量。
22、,实现软负载均衡和高可用性,避免因某一节点中断而导致服务不可用。0038 在该技术方案中,优选地,步骤 102 具体包括 :在 Zookeeper 中为服务确定指定路径 ;在确定的指定路径上为服务建立至少一个节点。0039 在该技术方案中,在服务器启动后,搭建 Zookeeper 集群,并可以在 Zookeeper 的指定路径为客户端建立可访问的节点。其中,每个服务建立 3 个 java 工程 :core( 接口定义包 )、server( 服务端包 )、client( 客户端包 ),core 存放所有接口和公用 bean,server为这个服务的 model、dao、cache、service。
23、 核心实现层,client 为该服务的对外暴露接口,以及 Server 和 Client 基于 socket( 套接字 ) 进行通信,Server 启动后在 Zookeeper 指定路径建立临时节点,其 value( 关键字 ) 为该服务所在的机器的网络协议。0040 在该技术方案中,优选地,在步骤 102 之后,还包括 :将客户端的网络协议注册到指定路径上的网络协议列表中,并将注册结果保存至客户端的缓存列表,以供客户端通过缓存列表访问节点。0041 在该技术方案中,Client 对外提供该服务接口,需要调用该服务的系统用项目管理工具,如 maven,将该 client 依赖进来,web( 网。
24、页 ) 容器启动时候会从特定路径读取已注册服务网络协议列表,将结果放到缓存列表,以便客户端通过缓存列表访问节点。0042 在该技术方案中,优选地,步骤 104 具体包括 :对至少一个节点进行绑定监听 ;根据监听结果,确定节点的工作状态,其中,节点的工作状态包括正常连接状态或连接故障状态。0043 在该技术方案中,利用预定的监听机制对节点绑定监听,如果监听值发生变化,说明节点的工作状态发生变化,则更新缓存列表,以保证服务的可用性。0044 在该技术方案中,优选地,步骤 106 具体包括 :确定至少一个节点中是否有节点处于连接故障状态 ;当确定至少一个节点中的任一节点处于连接故障状态时,为客户端移。
25、除任一节点 ;在移除任一节点后,更新客户端的缓存列表,以使客户端访问至少一个节点中的任一节点以外的其他节点。0045 在该技术方案中,当节点发生故障时,可以及时摘除该节点,以使客户端通过其他节点访问服务器,另外,如果节点由于网络不稳等因素导致故障或被摘除,可以立即再次注册该节点。0046 图 2 示出了根据本发明的一个实施例的基于 Zookeeper 的节点配置系统的框图。0047 如图 2 所示,根据本发明的一个实施例的基于 Zookeeper 的节点配置系统 200 :节点建立单元 202,当检测到来自客户端的对服务的运行请求时,为服务在 Zookeeper 中建立至少一个节点 ;节点工作。
26、状态检测单元 204,启动任一线程对至少一个节点的工作状态进行检测 ;处理单元 206,根据检测结果,对至少一个节点进行处理。0048 在该技术方案中,可以在客户端使用服务的过程中对客户端访问的节点的工作状态进行检测,并判断检测到的该节点的工作状态是否正常,以便在节点处于故障状态时,及时告知客户端,并为客户端移除该节点,从而保证客户端的服务质量,实现软负载均衡和高说 明 书CN 104486108 A5/6 页8可用性,避免因某一节点中断而导致服务不可用。0049 在该技术方案中,优选地,节点建立单元 202 具体用于 :在 Zookeeper 中为服务确定指定路径,并在确定的指定路径上为服务。
27、建立至少一个节点。0050 在该技术方案中,在服务器启动后,搭建 Zookeeper 集群,并可以在 Zookeeper 的指定路径为客户端建立可访问的节点。其中,每个服务建立 3 个 java 工程 :core( 接口定义包 )、server( 服务端包 )、client( 客户端包 ),core 存放所有接口和公用 bean,server为这个服务的 model、dao、cache、service 核心实现层,client 为该服务的对外暴露接口,以及 Server 和 Client 基于 socket( 套接字 ) 进行通信,Server 启动后在 Zookeeper 指定路径建立临时节。
28、点,其 value( 关键字 ) 为该服务所在的机器的网络协议。0051 在该技术方案中,优选地,还包括 :注册单元 208,在为服务在 Zookeeper 中建立至少一个节点之后,将客户端的网络协议注册到指定路径上的网络协议列表中 ;保存单元210,将注册结果保存至客户端的缓存列表,以供客户端通过缓存列表访问节点。0052 在该技术方案中,Client 对外提供该服务接口,需要调用该服务的系统用项目管理工具,如 maven,将该 client 依赖进来,web( 网页 ) 容器启动时候会从特定路径读取已注册服务网络协议列表,将结果放到缓存列表,以便客户端通过缓存列表访问节点。0053 在该技。
29、术方案中,优选地,节点工作状态检测单元 204 包括 :监听单元 2042,对至少一个节点进行绑定监听 ;以及节点工作状态检测单元 204 具体用于 :根据监听结果,确定节点的工作状态,其中,节点的工作状态包括正常通信状态、故障状态或断开状态。0054 在该技术方案中,利用预定的监听机制对节点绑定监听,如果监听值发生变化,说明节点的工作状态发生变化,则更新缓存列表,以保证服务的可用性。0055 在该技术方案中,优选地,处理单元 206 包括 :确定单元 2062,确定至少一个节点中是否有节点处于连接故障状态 ;节点移除单元 2064,当确定至少一个节点中的任一节点处于连接故障状态时,为客户端移。
30、除任一节点 ;更新单元 2066,在移除任一节点后,更新客户端的缓存列表,以使客户端访问至少一个节点中的任一节点以外的其他节点。0056 在该技术方案中,当节点发生故障时,可以及时摘除该节点,以使客户端通过其他节点访问服务器,另外,如果节点由于网络不稳等因素导致故障或被摘除,可以立即再次注册该节点。0057 图 3 示出了根据本发明的一个实施例的进行节点配置的示意图。0058 如图 3 所示,在进行节点配置的过程中,首先要搭建 Zookeeper 集群,为每个服务建立 3 个 java 工程 :core、server、client,其中,core 存放所有接口和公用 bean,server为这。
31、个服务 model、dao、cache、service 核心实现层,client 为该服务的对外暴露接口,server 和 client 基于 socket 进行通信。0059 server 启动后可在 Zookeeper 指定 path( 路径 ) 建立临时节点,value 为该服务所在的机器 IP( 网络协议 ),同时启动一个线程扫描 Zookeeper 中该节点的状态,如果节点由于网络不稳等因素导致被摘除,需要立即注册该节点。0060 client 对外提供该服务接口,需要调用该服务的系统,用 maven 将该 client 依赖进来,web 容器启动时候会从特定 path 读取已注册服。
32、务 IP 列表,将结果放到 jvm 列表,同时利用 watcher( 监听 ) 机制对该节点绑定监听,如果检测值发生变化,则更新 jvm 列表。0061 另外,在本技术方案中,还使用了重试机制,具体来讲,client 向 server 发一个说 明 书CN 104486108 A6/6 页9请求,根据当前时间戳和服务节点数取摸,可以定位到具体服务执行请求,如果此次请求失败,比如发生网络瞬断等状况,client 会将时间戳加 1,并再次执行请求,直至成功为止。0062 其中,负载均衡指的是对负载或流量分摊,不至于把一台机器超载导致服务终断或不可用,多台机器经常组成一个集群,共同分担压力。高可用性。
33、就是为了解决某节点故障的问题,当集群中的某节点出问题后,调用时方能及时感知 server 端节点发生了变化,将问题节点移除。节点动态注册指的是在 server 启动后,获取当前主机 IP,基于applicationcontext.xml 动态实例化 service 对应实现 Bean Factory Aware 接口 bean,并在 Zookeeper 注册该节点。0063 在该技术方案中,应用了 Thrift 框架和 Zookeeper 技术,基于 socket 进行通信传输,并使用高密度二进制协议。另外,还提供了可扩展且跨语言的服务的开发,结合了功能强大的软件堆栈和代码生成引擎,以构建在多。
34、语言间无缝结合的服务,使用非阻塞NonblockingServer 方式进行高效服务处理。0064 在该技术方案中,使模块化开发方便地以组件方式为其他系统提供服务,并支持横向动态扩展服务节点,实现了 server 集群的高可用和坏节点的自动摘除。0065 在该技术方案中,server 端 log4j 支持热配置,可根据需要修改 log 打印配置,而在客户端请求失败时可以自动重试机制直至成功。本发明已经成功应用于搜狐博客、搜狐视频、搜狐 passport、畅捷通工作圈。0066 以上结合附图详细说明了本发明的技术方案,通过本发明的技术方案,可以在节点处于故障状态时,及时告知客户端,并为客户端移除该节点,从而保证客户端的服务质量,实现软负载均衡和高可用性,避免因某一节点中断而导致服务不可用。0067 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。说 明 书CN 104486108 A1/2 页10图1图2说 明 书 附 图CN 104486108 A。