CN103078805A - 使Zookeeper的读性能支持水平扩展的系统和方法 - Google Patents
使Zookeeper的读性能支持水平扩展的系统和方法 Download PDFInfo
- Publication number
- CN103078805A CN103078805A CN 201210590098 CN201210590098A CN103078805A CN 103078805 A CN103078805 A CN 103078805A CN 201210590098 CN201210590098 CN 201210590098 CN 201210590098 A CN201210590098 A CN 201210590098A CN 103078805 A CN103078805 A CN 103078805A
- Authority
- CN
- China
- Prior art keywords
- read access
- zookeeper
- read
- access server
- long
- 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.)
- Granted
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
- Stored Programmes (AREA)
Abstract
一种使Zookeeper的读性能支持水平扩展的系统及方法。所述方法包括:包括两个或更多个读访问服务器的读访问服务器集群,用于完成客户端对Zookeeper的读数据请求的响应;以及Zookeeper服务集群,用于通过Watcher机制将修改内容推送到所述读访问服务器集群中的所述两个或更多个读访问服务器。
Description
技术领域
本发明涉及使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 (10)
1.一种使Zookeeper的读性能支持水平扩展的系统,包括:
包括两个或更多个读访问服务器的读访问服务器集群,用于完成客户端对Zookeeper的读数据请求的响应;以及
Zookeeper服务集群,用于通过Watcher机制将修改内容推送到所述读访问服务器集群中的所述两个或更多个读访问服务器。
2.根据权利要求1所述的系统,其中,所述读访问服务器集群中的所述两个或更多个读访问服务器与所述Zookeeper保持长连接。
3.根据权利要求1所述的系统,其中,当客户端发出读请求时,根据预置规则将所述读请求转发给所述两个或更多个读访问服务器中的一个,
当该读访问服务器与所述Zookeeper的长连接存在时,该读访问服务器基于所述读请求查找信息并返回查询内容;
当该读访问服务器与所述Zookeeper的长连接不存在时,将所述读请求转发给所述两个或更多个读访问服务器中的其他读访问服务器。
4.根据权利要求1所述的系统,其中,所述系统进一步包括负载均衡器,
当客户端发出读请求时,所述负载均衡器将所述读请求分配给所述两个或更多个读访问服务器中的一个,
当该读访问服务器与所述Zookeeper的长连接存在时,该读访问服务器基于所述读请求查找信息并返回查询内容;
当该读访问服务器与所述Zookeeper的长连接不存在时,所述负载均衡器将所述读请求重新分配给所述两个或更多个读访问服务器中的一个读访问服务器。
5.根据权利要求1所述的系统,其中,当Zookeeper发生内容添加或更新时,Zookeeper将所添加或更新的内容发布给所述两个或更多个读访问服务器。
6.根据权利要求1所述的系统,其中,当读访问服务器与Zookeeper服务集群之间的长连接断接时,该读访问服务器重新与所述Zookeeper服务集群建立长连接,并从所述Zookeeper服务集群下载全部内容或断接期间的更新内容。
7.一种使Zookeeper的读性能支持水平扩展的方法,包括:
客户端发出读请求;
将所述读请求转发给两个或更多个读访问服务器中的一个;
确定该读访问服务器与Zookeeper的长连接是否存在;
当所述长连接存在时,该读访问服务器基于所述读请求查找信息,并且将查询内容返回给所述客户端;以及
当所述长连接不存在时,将所述读请求转发给所述两个或更多个读访问服务器中的其他读访问服务器。
8.根据权利要求7所述的方法,其中,将所述读请求转发给两个或更多个读访问服务器中的一个是通过负载均衡器来完成的。
9.根据权利要求7所述的方法,其中,当Zookeeper服务集群发生内容添加或更新时,所述Zookeeper服务集群将所添加或更新的内容发布给所述两个或更多个读访问服务器。
10.根据权利要求7所述的方法,其中,当读访问服务器与Zookeeper服务集群之间的长连接断接时,该读访问服务器重新与所述Zookeeper服务集群建立长连接,并从所述Zookeeper服务集群下载全部内容或断接期间的更新内容。
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 true CN103078805A (zh) | 2013-05-01 |
CN103078805B 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) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103595781A (zh) * | 2013-11-11 | 2014-02-19 | 华为技术有限公司 | 一种基于zookeeper的服务提供方法、第一服务器及系统 |
CN105306514A (zh) * | 2014-07-30 | 2016-02-03 | 北京信威通信技术股份有限公司 | 基于Zookeeper的录音文件分布存储方法和系统 |
WO2016177130A1 (zh) * | 2015-05-07 | 2016-11-10 | 中兴通讯股份有限公司 | 通讯节点的选择方法及装置 |
CN106485514A (zh) * | 2016-11-01 | 2017-03-08 | 安徽拾穗谷生态科技有限公司 | 一种农产品质量安全追溯大数据处理方法 |
CN108228581A (zh) * | 2016-12-09 | 2018-06-29 | 阿里巴巴集团控股有限公司 | Zookeeper兼容通信方法、服务器及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8005917B2 (en) * | 2008-09-30 | 2011-08-23 | Yahoo! Inc. | Consensus-based reliable messaging |
CN102662992B (zh) * | 2012-03-14 | 2014-10-08 | 北京搜狐新媒体信息技术有限公司 | 一种海量小文件的存储、访问方法及装置 |
CN102739775B (zh) * | 2012-05-29 | 2017-11-07 | 宁波东冠科技有限公司 | 物联网数据采集服务器集群的监控和管理方法 |
-
2012
- 2012-12-31 CN CN201210590098.1A patent/CN103078805B/zh active Active
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103595781A (zh) * | 2013-11-11 | 2014-02-19 | 华为技术有限公司 | 一种基于zookeeper的服务提供方法、第一服务器及系统 |
CN103595781B (zh) * | 2013-11-11 | 2016-08-17 | 华为技术有限公司 | 一种基于zookeeper的服务提供方法、第一服务器及系统 |
CN105306514A (zh) * | 2014-07-30 | 2016-02-03 | 北京信威通信技术股份有限公司 | 基于Zookeeper的录音文件分布存储方法和系统 |
WO2016177130A1 (zh) * | 2015-05-07 | 2016-11-10 | 中兴通讯股份有限公司 | 通讯节点的选择方法及装置 |
CN106485514A (zh) * | 2016-11-01 | 2017-03-08 | 安徽拾穗谷生态科技有限公司 | 一种农产品质量安全追溯大数据处理方法 |
CN108228581A (zh) * | 2016-12-09 | 2018-06-29 | 阿里巴巴集团控股有限公司 | Zookeeper兼容通信方法、服务器及系统 |
CN108228581B (zh) * | 2016-12-09 | 2022-06-28 | 阿里云计算有限公司 | Zookeeper兼容通信方法、服务器及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103078805B (zh) | 2015-08-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10719510B2 (en) | Tiering with pluggable storage system for parallel query engines | |
US8832028B2 (en) | Database cloning | |
CN103544153B (zh) | 一种基于数据库的数据更新方法和系统 | |
JP6140145B2 (ja) | テナント移行にわたるテナント・データのリカバリ | |
JP6506412B2 (ja) | アプリケーションロード方法及び装置 | |
US10956667B2 (en) | Operational transformations proxy for thin clients | |
CN103078805A (zh) | 使Zookeeper的读性能支持水平扩展的系统和方法 | |
CN103209223A (zh) | 分布式应用会话信息共享方法、系统和应用服务器 | |
CN104735098A (zh) | 会话信息的控制方法和控制系统 | |
KR101962301B1 (ko) | 구조화 문서의 페이지렛의 캐싱 | |
US9483493B2 (en) | Method and system for accessing a distributed file system | |
EP2603867B1 (en) | Sharing data on mobile devices | |
EP3519987B1 (en) | Intents and locks with intent | |
CN111209120A (zh) | 微服务的数据同步方法、装置及计算机可读存储介质 | |
CN109145053B (zh) | 数据处理方法和装置、客户端、服务器 | |
CN103369002A (zh) | 一种资源下载的方法及系统 | |
CN111338834B (zh) | 数据存储方法和装置 | |
CN103581229A (zh) | 分布式文件系统、文件访问方法以及客户端 | |
CN104735137A (zh) | 一种实现客户端与服务器端异步交互的方法和系统 | |
CN103595808A (zh) | 一种文件更新信息推送方法及装置 | |
JP5603843B2 (ja) | データベースの負荷分散装置 | |
US9600271B2 (en) | System, method, and computer-readable medium | |
CN110096295B (zh) | 基于ReactNative的多模块移动应用的热更新方法及系统 | |
CN111159179A (zh) | 表分区方法及相关设备、计算机可读存储介质 | |
CN104219277A (zh) | 重排服务器响应 |
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 |