CN103078805B - 使Zookeeper的读性能支持水平扩展的系统和方法 - Google Patents

使Zookeeper的读性能支持水平扩展的系统和方法 Download PDF

Info

Publication number
CN103078805B
CN103078805B CN201210590098.1A CN201210590098A CN103078805B CN 103078805 B CN103078805 B CN 103078805B CN 201210590098 A CN201210590098 A CN 201210590098A CN 103078805 B CN103078805 B CN 103078805B
Authority
CN
China
Prior art keywords
read access
zookeeper
read
access server
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210590098.1A
Other languages
English (en)
Other versions
CN103078805A (zh
Inventor
张永成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201210590098.1A priority Critical patent/CN103078805B/zh
Publication of CN103078805A publication Critical patent/CN103078805A/zh
Application granted granted Critical
Publication of CN103078805B publication Critical patent/CN103078805B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

一种使Zookeeper的读性能支持水平扩展的系统及方法。所述方法包括:包括两个或更多个读访问服务器的读访问服务器集群,用于完成客户端对Zookeeper的读数据请求的响应;以及Zookeeper服务集群,用于通过Watcher机制将修改内容推送到所述读访问服务器集群中的所述两个或更多个读访问服务器。

Description

使Zookeeper的读性能支持水平扩展的系统和方法
技术领域
本发明涉及使Zookeeper的读性能支持水平扩展的系统和方法。
背景技术
Zookeeper是一种可靠存储状态的分布式发布系统,在需要提供可靠的状态存储时,通常需要使用Zookeeper。
然而,Zookeeper不是一种可以水平扩展的系统,存在性能瓶颈。因此,Zookeeper无法支持大量的读数据请求。
所以,期望提供一种能使Zookeeper的读性能支持水平扩展的系统和方法。
发明内容
为了解决现有技术中的上述缺点和问题而提出本发明。
根据一个方面,本发明提出一种使Zookeeper的读性能支持水平扩展的系统,包括:包括两个或更多个读访问服务器的读访问服务器集群,用于完成客户端对Zookeeper的读数据请求的响应;以及Zookeeper服务集群,用于通过Watcher机制将修改内容推送到所述读访问服务器集群中的所述两个或更多个读访问服务器。
可选地,所述读访问服务器集群中的所述两个或更多个读访问服务器与所述Zookeeper保持长连接。
可选地,当客户端发出读请求时,根据预置规则将所述读请求转发给所述两个或更多个读访问服务器中的一个,当该读访问服务器与所述Zookeeper的长连接存在时,该读访问服务器基于所述读请求查找信息并返回查询内容;当该读访问服务器与所述Zookeeper的长连接不存在时,将所述读请求转发给所述两个或更多个读访问服务器中的其他读访问服务器。
可选地,所述系统进一步包括负载均衡器,当客户端发出读请求时,所述负载均衡器将所述读请求分配给所述两个或更多个读访问服务器中的一个,当该读访问服务器与所述Zookeeper的长连接存在时,该读访问服务器基于所述读请求查找信息并返回查询内容;当该读访问服务器与所述Zookeeper的长连接不存在时,所述负载均衡器将所述读请求重新分配给所述两个或更多个读访问服务器中的一个读访问服务器。
可选地,当Zookeeper发生内容添加或更新时,Zookeeper将所添加或更新的内容发布给所述两个或更多个读访问服务器。
可选地,当读访问服务器与Zookeeper服务集群之间的长连接断接时,该读访问服务器重新与所述Zookeeper服务集群建立长连接,并从所述Zookeeper服务集群下载全部内容或断接期间的更新内容。
根据另一个方面,提出一种使Zookeeper的读性能支持水平扩展的方法,包括:客户端发出读请求;将所述读请求转发给两个或更多个读访问服务器中的一个;确定该读访问服务器与Zookeeper的长连接是否存在;当所述长连接存在时,该读访问服务器基于所述读请求查找信息,并且将查询内容返回给所述客户端;以及当所述长连接不存在时,将所述读请求转发给所述两个或更多个读访问服务器中的其他读访问服务器。
可选地,将所述读请求转发给两个或更多个读访问服务器中的一个是通过负载均衡器来完成的。
可选地,当Zookeeper服务集群发生内容添加或更新时,所述Zookeeper服务集群将所添加或更新的内容发布给所述两个或更多个读访问服务器。
可选地,当读访问服务器与Zookeeper服务集群之间的长连接断接时,该读访问服务器重新与所述Zookeeper服务集群建立长连接,并从所述Zookeeper服务集群下载全部内容或断接期间的更新内容。
附图说明
通过下面结合附图进行的描述,本发明一些示范性实施例的上述和其他方面、特征和优点对于本领域技术人员来说将变得显而易见,其中:
图1是根据本发明的使Zookeeper的读性能支持水平扩展的系统的框图;
图2是根据本发明的使Zookeeper的读性能支持水平扩展的方法的一个实现方式的流程图,其示出了无负载均衡器的情况;
图3是根据本发明的使Zookeeper的读性能支持水平扩展的方法的另一个实现方式的流程图,其示出了有负载均衡器的情况;
图4示出了对Zookeeper服务集群添加或更新内容时的过程的流程图;
图5示出了恢复读访问服务器与Zookeeper服务集群之间的长连接的一个实现方式的处理流程,其示出了无负载均衡器的情况;以及
图6示出了恢复读访问服务器与Zookeeper服务集群之间的长连接的一个实现方式的处理流程,其示出了有负载均衡器的情况。
具体实施方式
提供参考附图的下面描述以帮助全面理解本发明的示范性实施例。其包括各种细节以助于理解,而应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,省略了对公知功能和结构的描述。
下面将参考附图详细描述本发明。
图1是根据本发明的使Zookeeper的读性能支持水平扩展的系统的框图。
如图1中所示,该系统包括读访问服务器集群110和Zookeeper服务集群120。
读访问服务器集群110也可称作前置服务器集群,其包括两个或更多个读访问服务器或前置服务器,在图中作为示例图示了三个读访问服务器110-1、110-2、110-3。
读访问服务器集群110用于完成客户端对Zookeeper的读数据请求的响应。也就是说,当客户端发出对Zookeeper的读数据请求时,客户端不访问Zookeeper,而是访问读访问服务器集群。优选地,读访问服务器集群为了完成客户端对Zookeeper的读数据请求的响应,其与Zookeeper服务集群保持长连接。
具体地,当客户端发出读请求时,根据预置规则(例如可以在客户端保存所有读访问服务器的列表,采用随机访问或者顺序访问的方式访问读服务器;或者可以通过域名和负载均衡服务器,将请求转发给读访问服务器)将所述读请求转发给读访问服务器集群中的一个读访问服务器。该读访问服务器确定其与Zookeeper的长连接是否存在。当该读访问服务器与所述Zookeeper的长连接不存在时,该读访问服务器基于所述读请求查找信息并返回查询内容给客户端。另一方面,当该读访问服务器与Zookeeper的长连接不存在时,将所述读请求转发给其他读访问服务器直到没有可用的读访问服务器为止,以由其他读访问服务器返回查询内容。
替选地,当客户端发出读请求时,由负载均衡器将所述读请求转发给读访问服务器集群中的一个读访问服务器。该读访问服务器确定其与Zookeeper的长连接是否存在。当该读访问服务器与所述Zookeeper的长连接不存在时,该读访问服务器基于所述读请求查找信息并返回查询内容给客户端。如果该读访问服务器与Zookeeper的长连接不存在,则负载均衡器重新将所述读请求分配给读访问服务器直到达到预设的最大重复次数为止。
例如,读访问服务器可以包括读数据接口来接收来自客户端的读请求。
Zookeeper服务集群120用于通过Watcher机制将修改内容推送到所述读访问服务器集群中的所述两个或更多个读访问服务器。
具体地,当一个客户端向Zookeeper服务集群发出添加或更新请求时,Zookeeper服务集群基于添加或更新请求来添加或更新内容。在Zookeeper服务集群添加或更新内容之后,Zookeeper服务集群将所添加或更新的内容发布给所述两个或更多个读访问服务器。
而且,每当读访问服务器与Zookeeper服务集群之间的长连接断接时,读访问服务器处于不能提供服务状态。于是,该读访问服务器尝试与所述Zookeeper服务集群建立长连接。在成功建立与Zookeeper服务集群的长连接之后,读访问服务器从Zookeeper服务集群下载全部内容或断接期间的更新内容。然后,读访问服务器变为可提供服务状态。
图2是根据本发明的使Zookeeper的读性能支持水平扩展的方法的一个实现方式的流程图,其示出了无负载均衡器的情况。
在步骤210中,客户端发出读请求。
在步骤220中,根据设定规则将所述读请求转发给两个或更多个读访问服务器中的一个。
在步骤230中,确定该读访问服务器与Zookeeper服务集群的长连接是否存在。
在步骤240中,当所述长连接存在时,该读访问服务器基于所述读请求查找信息,并且将查询内容返回给所述客户端。
在步骤250中,当所述长连接不存在时,将所述读请求转发给所述两个或更多个读访问服务器中的其他读访问服务器直到没有可用的读访问服务器为止。
图3是根据本发明的使Zookeeper的读性能支持水平扩展的方法的另一个实现方式的流程图,其示出了有负载均衡器的情况。
在步骤310中,客户端发出读请求。
在步骤320中,负载均衡器将所述读请求分配给两个或更多个读访问服务器中的一个。
在步骤330中,确定该读访问服务器与Zookeeper服务集群的长连接是否存在。
在步骤340中,当所述长连接存在时,该读访问服务器基于所述读请求查找信息,并且将查询内容返回给所述客户端。
在步骤350中,当所述长连接不存在时,负载均衡器将所述读请求重新分配给所述两个或更多个读访问服务器中的其他读访问服务器直到达到预设的最大重复次数为止。
图4示出了对Zookeeper服务集群添加或更新内容时的过程的流程图。
在步骤410中,客户端提交添加或更新请求。
在步骤420中,Zookeeper服务集群添加或更新所请求的内容。
在步骤430中,Zookeeper将所添加或更新的内容发布给读访问服务器。例如,通过Watcher机制将所添加或更新的内容推送到读访问服务器。
在步骤440中,读访问服务器接收所添加或更新的内容。
此外,客户端也可以将添加或更新请求发送给读访问服务器,然后读访问服务器将该添加或更新请求转发给Zookeeper服务集群。此后,可以重复步骤420-440的过程。
图5示出了恢复读访问服务器与Zookeeper服务集群之间的长连接的一个实现方式的处理流程,其示出了无负载均衡器的情况。
如图5中所示,读访问服务器发现其与Zookeeper之间的长连接断接。于是,读访问服务器将其自身设置不能提供服务状态,并尝试连接Zookeeper服务集群。在连接成功之后,获取Zookeeper的数据(例如全部数据,或断接期间的添加或更新内容)。之后,读访问服务器处于可提供服务状态。
图6示出了恢复读访问服务器与Zookeeper服务集群之间的长连接的一个实现方式的处理流程,其示出了有负载均衡器的情况。
如图6中所示,读访问服务器发现其与Zookeeper之间的长连接断接。于是,读访问服务器向负载均衡器通知以将该读访问服务器从服务提供者中去除,然后将其自身设置不能提供服务状态,并尝试连接Zookeeper服务集群。在连接成功之后,获取Zookeeper的数据(例如全部数据,或断接期间的添加或更新内容)。之后,读访问服务器向负载均衡器通知以将该读访问服务器添加到服务提供者中,然后读访问服务器处于可提供服务状态。
应指出的是,上面分别对本发明的装置和方法实施例分别进行了描述,但是对一个实施例描述的细节也可应用于另一个实施例。
以上结合具体实施例描述了本发明的基本原理,但是,需要指出的是,对本领域的普通技术人员而言,能够理解本发明的方法和系统的全部或者任何步骤或者部件可以以软件、硬件、固件或者它们的组合加以实现,这是本领域普通技术人员在阅读了本发明的说明的情况下运用他们的基本编程技能就能实现的。
因此,本发明的目的还可以通过在任何计算装置上运行一个软件模块或者一组软件模块来实现。所述计算装置可以是公知的通用装置。因此,本发明的目的也可以仅仅通过提供包含实现所述方法或者装置的程序代码的程序产品来实现。也就是说,这样的程序产品也构成本发明,并且存储有这样的程序产品的存储介质也构成本发明。显然,所述存储介质可以是任何公知的存储介质或者将来所开发出来的任何存储介质。
虽然本说明书包含许多特定实施方式细节,但是不应当将这些细节解释为对任何发明或可以主张的内容的范围的限制,而应当解释为对可以特定于特定发明的特定实施例的特征的描述。还可以将在本说明书中在分离的实施例的情境中描述的某些特征组合在单个实施例中实现。相反地,也可以将在单个实施方式的情境中描述的各个特征分离地在多个实施方式中实现或在任何适当的子组合中实现。此外,尽管可能在上面将特征描述为在某些组合中起作用,甚至最初主张如此,但是可以在一些情况下将来自所主张的组合的一个或多个特征从组合中删去,并且可以将所主张的组合指向子组合或者子组合的变体。
类似地,虽然在附图中以特定次序描绘了操作,但是不应当将这理解为需要以所示的特定次序或者以连续次序执行这样的操作、或者需要执行所有图示的操作才能达到期望的结果。在某些情况下,多任务以及并行处理可以是有利的。此外,不应当将在上述实施例中的各种系统组件的分离理解为在所有实施例中均需要这样的分离,而应当理解的是,通常可以将所描述的程序组件和系统集成到一起成为单个软件产品或封装为多个软件产品。
计算机程序(也称作程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言编写,所述编程语言包括编译或解释语言、或者说明性或过程语言,并且其可以以任何形式部署,包括作为独立程序或作为模块、组件、子程序或适于在计算环境中使用的其它单元。计算机程序没有必要对应于文件系统中的文件。可以将程序存储在保持其它程序或数据的文件(例如,存储在标记语言文档中的一个或多个脚本)的一部分、专用于讨论中的程序的单个文件或者多个协调文件(例如,存储一个或多个模块、子程序或部分代码的文件)中。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (9)

1.一种使Zookeeper的读性能支持水平扩展的系统,包括:
包括两个或更多个读访问服务器的读访问服务器集群,用于完成客户端对Zookeeper的读数据请求的响应;以及
Zookeeper服务集群,用于通过Watcher机制将修改内容推送到所述读访问服务器集群中的所述两个或更多个读访问服务器,
其中,当客户端发出读请求时,根据预置规则将所述读请求转发给所述两个或更多个读访问服务器中的一个,
当该读访问服务器与所述Zookeeper的长连接存在时,该读访问服务器基于所述读请求查找信息并返回查询内容;
当该读访问服务器与所述Zookeeper的长连接不存在时,将所述读请求转发给所述两个或更多个读访问服务器中的其他读访问服务器。
2.根据权利要求1所述的系统,其中,所述读访问服务器集群中的所述两个或更多个读访问服务器与所述Zookeeper保持长连接。
3.根据权利要求1所述的系统,其中,所述系统进一步包括负载均衡器,
当客户端发出读请求时,所述负载均衡器将所述读请求分配给所述两个或更多个读访问服务器中的一个,
当该读访问服务器与所述Zookeeper的长连接存在时,该读访问服务器基于所述读请求查找信息并返回查询内容;
当该读访问服务器与所述Zookeeper的长连接不存在时,所述负载均衡器将所述读请求重新分配给所述两个或更多个读访问服务器中的一个读访问服务器。
4.根据权利要求1所述的系统,其中,当Zookeeper发生内容添加或更新时,Zookeeper将所添加或更新的内容发布给所述两个或更多个读访问服务器。
5.根据权利要求1所述的系统,其中,当读访问服务器与Zookeeper服务集群之间的长连接断接时,该读访问服务器重新与所述Zookeeper服务集群建立长连接,并从所述Zookeeper服务集群下载全部内容或断接期间的更新内容。
6.一种使Zookeeper的读性能支持水平扩展的方法,包括:
客户端发出读请求;
将所述读请求转发给两个或更多个读访问服务器中的一个;
确定该读访问服务器与Zookeeper的长连接是否存在;
当所述长连接存在时,该读访问服务器基于所述读请求查找信息,并且将查询内容返回给所述客户端;以及
当所述长连接不存在时,将所述读请求转发给所述两个或更多个读访问服务器中的其他读访问服务器。
7.根据权利要求6所述的方法,其中,将所述读请求转发给两个或更多个读访问服务器中的一个是通过负载均衡器来完成的。
8.根据权利要求6所述的方法,其中,当Zookeeper服务集群发生内容添加或更新时,所述Zookeeper服务集群将所添加或更新的内容发布给所述两个或更多个读访问服务器。
9.根据权利要求6所述的方法,其中,当读访问服务器与Zookeeper服务集群之间的长连接断接时,该读访问服务器重新与所述Zookeeper服务集群建立长连接,并从所述Zookeeper服务集群下载全部内容或断接期间的更新内容。
CN201210590098.1A 2012-12-31 2012-12-31 使Zookeeper的读性能支持水平扩展的系统和方法 Active CN103078805B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210590098.1A CN103078805B (zh) 2012-12-31 2012-12-31 使Zookeeper的读性能支持水平扩展的系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210590098.1A CN103078805B (zh) 2012-12-31 2012-12-31 使Zookeeper的读性能支持水平扩展的系统和方法

Publications (2)

Publication Number Publication Date
CN103078805A CN103078805A (zh) 2013-05-01
CN103078805B true CN103078805B (zh) 2015-08-05

Family

ID=48155214

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210590098.1A Active CN103078805B (zh) 2012-12-31 2012-12-31 使Zookeeper的读性能支持水平扩展的系统和方法

Country Status (1)

Country Link
CN (1) CN103078805B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103595781B (zh) * 2013-11-11 2016-08-17 华为技术有限公司 一种基于zookeeper的服务提供方法、第一服务器及系统
CN105306514A (zh) * 2014-07-30 2016-02-03 北京信威通信技术股份有限公司 基于Zookeeper的录音文件分布存储方法和系统
CN106209943A (zh) * 2015-05-07 2016-12-07 中兴通讯股份有限公司 通讯节点的选择方法及装置
CN106485514A (zh) * 2016-11-01 2017-03-08 安徽拾穗谷生态科技有限公司 一种农产品质量安全追溯大数据处理方法
CN108228581B (zh) * 2016-12-09 2022-06-28 阿里云计算有限公司 Zookeeper兼容通信方法、服务器及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8005917B2 (en) * 2008-09-30 2011-08-23 Yahoo! Inc. Consensus-based reliable messaging
CN102662992A (zh) * 2012-03-14 2012-09-12 北京搜狐新媒体信息技术有限公司 一种海量小文件的存储、访问方法及装置
CN102739775A (zh) * 2012-05-29 2012-10-17 宁波东冠科技有限公司 物联网数据采集服务器集群的监控和管理方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8005917B2 (en) * 2008-09-30 2011-08-23 Yahoo! Inc. Consensus-based reliable messaging
CN102662992A (zh) * 2012-03-14 2012-09-12 北京搜狐新媒体信息技术有限公司 一种海量小文件的存储、访问方法及装置
CN102739775A (zh) * 2012-05-29 2012-10-17 宁波东冠科技有限公司 物联网数据采集服务器集群的监控和管理方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Pepper: An Elastic Web Server Farm for Cloud based on Hadoop;Subramaniam Krishnan;《Cloud Computing Technology and Science(CloudCom),2010 IEEE Second International Conference on 》;20101203;741-747 *

Also Published As

Publication number Publication date
CN103078805A (zh) 2013-05-01

Similar Documents

Publication Publication Date Title
US10726518B2 (en) Capacity reservation for virtualized graphics processing
JP6463393B2 (ja) テナント移行にわたるテナント・データのリカバリ
CN103078805B (zh) 使Zookeeper的读性能支持水平扩展的系统和方法
US9560165B2 (en) BT offline data download system and method, and computer storage medium
JP5898685B2 (ja) ドキュメント編集コマンドのシリアル化
JP6506412B2 (ja) アプリケーションロード方法及び装置
CN109831540B (zh) 分布式存储方法、装置、电子设备及存储介质
CN111414389B (zh) 一种数据处理方法、装置、电子设备及存储介质
US9483493B2 (en) Method and system for accessing a distributed file system
US8856365B2 (en) Computer-implemented method, computer system and computer readable medium
CN112929401B (zh) 一种注册方法及装置
KR20220038827A (ko) 데이터 저장소를 파티셔닝하고 리밸런싱하는 기법
US9218140B2 (en) System and method for selectively utilizing memory available in a redundant host in a cluster for virtual machines
CN105450759A (zh) 一种系统镜像的管理方法和装置
US10298656B2 (en) Extending representational state transfer application program interface (REST API) functionality
CN108875035B (zh) 分布式文件系统的数据存储方法及相关设备
CN107646105B (zh) 云计算基础架构
US8516480B1 (en) Enabling offline work in a virtual data center
US9201609B2 (en) Efficient replication of changes to a byte-addressable persistent memory over a network
CN103369002A (zh) 一种资源下载的方法及系统
CN103595808A (zh) 一种文件更新信息推送方法及装置
CN106354435A (zh) Raid初始化的方法及装置
US9092292B2 (en) Shared application binary storage
CN110692043A (zh) 用于对备份数据进行负载平衡的系统和方法
CN111428114A (zh) Elasticsearch搜索引擎的索引创建方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant