CN109510867B - 数据请求处理的方法、装置、存储介质及电子设备 - Google Patents
数据请求处理的方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN109510867B CN109510867B CN201811289701.6A CN201811289701A CN109510867B CN 109510867 B CN109510867 B CN 109510867B CN 201811289701 A CN201811289701 A CN 201811289701A CN 109510867 B CN109510867 B CN 109510867B
- Authority
- CN
- China
- Prior art keywords
- node
- data
- cluster
- couchbase
- read
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/63—Routing a service request depending on the request content or context
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/06—Management of faults, events, alarms or notifications
- H04L41/0654—Management of faults, events, alarms or notifications using network fault recovery
- H04L41/0663—Performing the actions predefined by failover planning, e.g. switching to standby network elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种数据请求处理的方法、装置、存储介质及电子设备,实现在Couchbase集群中的节点失效时,客户端在备份节点上读取对应的数据副本,从而保证上层业务连续性。而且,在Couchbase集群中新增节点后,在该新增节点响应超时时,重建与Couchbase集群的连接,获取到当前的数据与节点的映射关系,并基于当前的数据与节点的映射关系向新增节点发起数据访问请求。对于Couchbase集群恢复阶段的Rebalance操作可能引发部分数据访问异常,通过连接重建策略保证数据服务可用,对Rebalance可能导致的部分数据服务不可用问题进行了轻量化修复。确保集群恢复阶段Rebalance操作触发数据访问异常时连接重建策略能快速响应,避免影响到上层业务。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种数据请求处理的方法、装置、存储介质及电子设备。
背景技术
Couchbase是一个具有高性能、可扩展性和可用性强的数据库引擎。它可以让开发人员通过NoSQL的键值存储(二进制或者JSON)或者使用N1QL的形式对数据进行操作(N1QL是非常类似于SQL的一种语法操作JSON数据的方式)。以现在整体架构来看,Couchbase是往分布式数据库的方向发展下去。
和其他高可用NoSQL产品一样,Couchbase有一套FailOver机制以保证集群的高可用。用户可以通过控制台设置自动FailOver的触发时间,当被认为宕机的节点失效时间到达该触发时间后,FailOver机制启动。FailOver完成后,Couchbase集群的数据服务功能完全恢复,失效节点被移除。此后可以选择人工干预的方式定位并解决节点宕机的问题后,运维人员将修复后的节点重新添加回Couchbase集群,也可以直接使用新节点替换失效节点,以恢复恢复集群容量。图1是本发明提供的现有技术中的集群和节点的状态变化的流程图。
相关技术中,节点失效阶段主要依赖于用户设置,即用户设置的自动FailOver触发时间越短,集群出现部分数据不可用的时间也越短。但随着FailOver的触发时间降低,出现误判的几率也逐渐增大,比如短暂性的网络抖动发生时集群可能误认为节点宕机,尤其是Couchbase集群高负荷工作时,由于数据访问服务压力过大,集群监控可能将忙碌节点误判为失效节点,并在极短的时间间隔后触发FailOver移除忙碌节点,外部请求压力不变的情况下减少了集群容量,让集群陷入更不稳定的状态。
在所述背景技术部分公开的上述信息仅用于加强对本发明的背景的理解,因此它可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
有鉴于此,本发明提供一种数据请求处理的方法、装置、存储介质及电子设备,保证了Failover执行前的空档里业务层面的数据服务可用。
根据本发明的第一方面,提供一种数据请求处理的方法,应用于包括多个节点的Couchbase集群,其中,所述方法包括:
向所述Couchbase集群中的第一节点发起待读取数据的数据访问请求;
若所述第一节点响应超时,向所述Couchbase集群中的第二节点发起所述待读取数据的数据访问请求;或者
若所述第一节点响应超时,向所述Couchbase集群中新增的第三节点发起数据访问请求;判断所述第三节点响应是否超时;若超时,重建与所述Couchbase集群的连接,以获取到所述Couchbase集群的当前的数据与节点的映射关系;基于所述当前的数据与节点的映射关系向所述第三节点发起数据访问请求。
根据一些实施例,向所述Couchbase集群中的第一节点发起待读取数据的数据访问请求,包括:
基于主数据与节点的映射关系,查找到所述待读取数据对应的主节点,所述主节点为所述第一节点,向所述第一节点发起所述待读取数据的数据访问请求。
根据一些实施例,向所述Couchbase集群中的第二节点发起所述待读取数据的数据访问请求,包括:
根据备份数据与节点的映射关系,查找到所述待读取数据对应的备份节点,所述备份节点为所述第二节点,向所述第二节点发起所述待读取数据的数据访问请求。
根据一些实施例,所述方法还包括:
当所述Couchbase集群移除所述第一节点后,增加所述第三节点。
根据本发明的第二方面,提供一种数据请求处理的装置,应用于包括多个节点的Couchbase集群,其中,所述装置包括:
第一发起模块,用于向所述Couchbase集群中的第一节点发起待读取数据的数据访问请求;
第二发起模块,用于若所述第一节点响应超时,向所述Couchbase集群中的第二节点发起所述待读取数据的数据访问请求;或者
第三发起模块,用于若所述第一节点响应超时,向所述Couchbase集群中新增的第三节点发起数据访问请求;判断所述第三节点响应是否超时;若超时,重建与所述Couchbase集群的连接,以获取到所述Couchbase集群的当前的数据与节点的映射关系;基于所述当前的数据与节点的映射关系向所述第三节点发起数据访问请求。
根据一些实施例,所述第一发起模块,配置为基于主数据与节点的映射关系,查找到所述待读取数据对应的主节点,所述主节点为所述第一节点,向所述第一节点发起所述待读取数据的数据访问请求。
根据一些实施例,所述第二发起模块,配置为根据备份数据与节点的映射关系,查找到所述待读取数据对应的备份节点,所述备份节点为所述第二节点,向所述第二节点发起所述待读取数据的数据访问请求。
根据一些实施例,所述第三发起模块配置为当所述Couchbase集群移除所述第一节点后,增加所述第三节点。
根据本发明的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现如第一方面所述的方法步骤。
根据本发明的第四方面,提供一种电子设备,其中,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如第一方面所述的方法步骤。
本发明上述实施例中,实现在Couchbase集群中的节点失效时,客户端在备份节点上读取对应的数据副本,从而保证上层业务连续性。而且,在Couchbase集群中新增节点后,在该新增节点响应超时时,重建与Couchbase集群的连接,获取到当前的数据与节点的映射关系,并基于当前的数据与节点的映射关系向新增节点发起数据访问请求。对于Couchbase集群恢复阶段的Rebalance操作可能引发部分数据访问异常,通过连接重建策略保证数据服务可用,对Rebalance可能导致的部分数据服务不可用问题进行了轻量化修复。确保集群恢复阶段Rebalance操作触发数据访问异常时连接重建策略能快速响应,避免影响到上层业务。
附图说明
通过参照附图详细描述其示例实施例,本发明的上述和其它目标、特征及优点将变得更加显而易见。
图1是本发明提供的现有技术中的集群和节点的状态变化的流程图;
图2是根据一示例性实施例示出的一种数据请求处理的方法的流程图;
图3是本发明实施例中提出的一种客户端与Couchbase集群之间数据交互的示意图;
图4是本发明实施例提供的另一种数据请求处理的方法的流程图;
图5是根据图3得到的Failover处理的流程图;
图6是本发明实施例中提出的另一种客户端与Couchbase集群之间的数据交互的示意图;
图7是根据一示例性实施例示出的一种数据请求处理的装置的结构图;
图8是根据一示例性实施例示出的一种电子设备的结构示意图。
具体实施方式
现在将参考附图更全面地描述示例实施例。然而,示例实施例能够以多种形式实施,且不应被理解为限于在此阐述的实施例;相反,提供这些实施例使得本发明将全面和完整,并将示例实施例的构思全面地传达给本领域的技术人员。在图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本发明的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本发明的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
需要说明,虽然本发明实施例中采用第一/第二/第三等术语来描述节点,但这些术语仅用于将节点区分开。
根据本发明实施例,当第一节点对客户端发起的待读取数据的数据访问请求响应超时时,可以从备份节点(第二节点)读取数据副本,或者,从新增的第三节点中读取数据。
下面结合具体的首先对从第二节点读取数据副本的方法进行详细的说明。
图2是根据一示例性实施例示出的一种数据请求处理的方法的流程图。该方法应用于包括多个节点的Couchbase集群。
如图2所示,该方法可以包括但不限于以下步骤:
在S210中,向Couchbase集群中的第一节点发起待读取数据的数据访问请求。
根据本发明实施例,客户端与Couchbase集群初始化建立连接时,Couchbase集群会向客户端推送该Couchbase集群的数据与节点的映射关系。该数据与节点的映射关系包括:主数据与节点的映射关系以及备份数据与节点的映射关系。例如,可以用vBucket来存储主数据以及备份数据与节点的映射关系。
需要说明的是,Couchbase集群中每个节点均包含两部分:主数据以及备份数据。每个节点的主数据可以备份到至少一个其他节点的备份数据中。客户端访问节点的主数据时,可以对该主数据进行读写,而访问节点的备份数据时,仅能够对该备份数据进行读取。
根据本发明实施例,客户端可以基于主数据与节点的映射关系,查找到待读取数据对应的主节点,该主节点为第一节点,并向该第一节点发起该待读取数据的数据访问请求。
在S220中,若第一节点响应超时,向Couchbase集群中的第二节点发起所述待读取数据的数据访问请求,以从所述第二节点获取该待读取数据。
根据本发明实施例,若客户端判断出第一节点响应超时,则可以根据备份数据与节点的映射关系,查找到待读取数据对应的备份节点,该备份节点为所述第二节点,并向所述第二节点发起所述待读取数据的数据访问请求。
需要说明的是,第一节点响应超时可以是由于网络抖动,节点宕机等状况,在这种情况下,Couchbase集群认为第一节点失效,但是未达到Failover的触发时间。
需要说明的是,第二节点为待读取数据的备份节点,客户端仅能够读取该待读取数据,在接收第二节点返回的待读取数据后,基于该待读取数据进行处理。
本发明上述实施例中,向所述Couchbase集群中的第一节点发起待读取数据的数据访问请求;若所述第一节点响应超时,向所述Couchbase集群中的第二节点发起所述待读取数据的数据访问请求以从所述第二节点获取该待读取数据。实现了在Couchbase集群中的节点失效时,客户端在备份节点上读取对应的数据副本,从而保证上层业务连续性。
需要说明的是,本发明实施例中采用了从备份节点读取数据副本的策略,但是,本发明实施例不仅限于此,例如,也可以根据实际情况选择从持久化存储中读取数据备份。
下面结合具体的应用场景对本发明实施例中提出的从备份节点读取数据副本的方法进行详细的说明。
图3是本发明实施例中提出的一种客户端与Couchbase集群之间数据交互的示意图。
如图3所示,该方法可以包括以下流程:
S301、客户端(client)向节点Server2发起data1的数据访问请求。
需要说明的是,客户端根据本地存储的主数据与节点的映射关系,获取到在主数据中存储该待读取数据data1的节点为Server2,向Server2发起data1的数据访问请求。
S302、客户端获取到Server2响应超时。
例如,当客户端在预设时间段内未接收到Server2的响应,则判断出Server2响应超时。
需要说明的是,该预设时间段一般情况下要小于Couchbase集群启动Failover的触发时间,从而客户端能够在启动Failover之前从Couchbase集群中获取到待读取数据的备份数据。
S303、客户端根据vBucket映射关系定位到data1的备份数据位于节点Server1,并向Server1发起data1的数据访问请求。
S304、客户端接收到Server1返回的data1的备份数据。
S305、客户端利用data1的备份数据正常处理业务请求。
本发明实施例中,实现了在Failover执行前的空档里业务层面的数据服务可用,保证Couchbase集群在FailOver前后的持续高可用。
下面结合具体的实施例对从新增的第三节点中读取数据的方法进行详细的说明。
图4是本发明实施例提供的另一种数据请求处理的方法的流程图,该方法可以包括以下步骤:
S410、向所述Couchbase集群中的第一节点发起待读取数据的数据访问请求。
S420、若所述第一节点响应超时,向Couchbase集群中新增的第三节点发起数据访问请求。
根据本发明实施例,可以在Couchbase集群移除该响应超时的第一节点后,增加该新的第三节点。但本发明并不限于此,例如,如果服务器充足,也可以直接向集群添加一个备用节点(第三节点)。本发明实施例中推荐在节点失效后Faiover触发前添加该新节点(可以在集群上挂载一个常备节点),这样Faiover自动执行后集群容量就会恢复,且整个过程只触发一次Rebalance即数据重分布,可以节约服务器资源并缩短集群不稳定时间。该新增的节点为第三节点。
需要说明的是,基于前述的实施例中,若节点Server1的失效时间达到Failover的触发时间,则Couchbase集群触发Failover机制,移除该Server1。而此时外部请求压力不变,移除节点减小了Couchbase集群的容量,让Couchbase集群陷入不稳定的状态。此时可以选择人工干预的方式定位并解决该节点宕机的问题后,运维人员将修复后的节点重新添加回Couchbase集群,也可以直接使用新节点替换失效节点,以恢复集群容量。在增加第三节点后,Couchbase集群将当前集群的数据与节点的映射关系推送到客户端。客户端可以根据该数据与节点的映射关系向Couchbase集群中的第三节点发起数据访问请求。例如,客户端根据主数据与节点的映射关系,获取到第三节点的主数据存储有待读取数据,则向第三节点发送待读取数据的数据访问请求。
S430、判断所述第三节点响应是否超时。
根据本发明实施例,该客户端的代码块会对请求超时进行捕获,从而判断第三节点响应是否超时。
需要说明的是,当集群新增节点后,Rebalance(参见图1)操作可能导致的部分数据访问异常,在低版本SDK(软件开发工具包)对接高版本Couchbase Server时最有可能出现,现有方案主要为同步升级SDK和Couchbase Server,但由于依赖于第三方软件变更,无论是Couchbase-SDK还是Couchbase-Server的变更,都需要消耗很多开发,测试和运维资源且可能引入其他潜在风险,无法保证现有系统稳定。如果不同步升级SDK和CouchbaseServer,Couchbase集群增加第三节点后,由于Rebalance阶段异常会导致第三节点不可达。例如,SDK为2.1.x或者2.2.x版本以及service为4.x版本及以上的Couchbase集群最容易出现这种情况,导致面向第三节点数据访问请求常常出现超时。
需要说明的是,该第三节点不可达是指第三节点对客户端响应超时,但是,此时Couchbase集群内的节点与第三节点之间可以存在数据交互,因此,Couchbase集群不会监控到第三节点的不可达,因此不会启动Failover机制。
需要指出的是,经过反复的实验,本发明实施例得到新增节点后一般都会存在新增节点相对于客户端不可达的情况,本发明实施例中,客户端的代码块会对请求超时进行捕获,在判断第三节点响应超时时,重建与Couchbase集群的连接,此过程不需要用户参与,用户只需要在客户端的代码块中编写好相关的代码,就能够实现客户端自动重建与Couchbase集群的连接。
S440、若超时,重建与Couchbase集群的连接,以获取到所述Couchbase集群的当前的数据与节点的映射关系。
根据本发明实施例,当客户端捕获到第三节点响应超时,则会重建与Couchbase集群的连接,以接收到Couchbase集群推送的当前的数据与节点的映射关系。其中该数据与节点的映射关系包括主数据与节点的映射关系以及备份数据与节点的映射关系。
根据本发明实施例,客户端新建与Couchbase集群交互的bucket连接对象之后,将数据访问请求逐步迁移至当前的连接对象,最后关闭之前客户端与Couchbase集群之间的异常连接对象,释放资源。
S450、基于所述当前的数据与节点的映射关系向所述第三节点发起数据访问请求。
根据本发明实施例,客户端在重建与Couchbase集群的连接后,可以基于Couchbase集群推送的当前的数据与节点的映射关系向所述Couchbase集群中的节点发送的数据访问请求,关闭基于原来的数据与节点的映射关系与所述Couchbase集群中的节点建立的连接。
本发明实施例中,在Couchbase集群中新增节点后,在该新增节点响应超时时,重建与Couchbase集群的连接,获取到当前的数据与节点的映射关系,并基于当前的数据与节点的映射关系向新增节点发起数据访问请求。对于Couchbase集群恢复阶段的Rebalance操作可能引发部分数据访问异常,通过连接重建策略保证数据服务可用,对Rebalance可能导致的部分数据服务不可用问题进行了轻量化修复。确保集群恢复阶段Rebalance操作触发数据访问异常时连接重建策略能快速响应,避免影响到上层业务。且以上方案不依赖Couchbase的版本变更,仅仅需要极少量的客户端代码调整,因此能够快速轻量化的修复线上系统的高可用隐患。
需要说明的是,由Rebalance操作导致的数据访问异常,本发明实施例中不仅可以通过连接重建来完全修复,也可以继续通过读取数据副本策略临时修复。
下面结合具体的应用场景,对本发明实施例中提出的数据请求处理方法进行详细的说明。
图5是根据图3得到的Failover处理的流程图。需要说明的是,本发明实施例中是以对Server2进行Failover处理为例进行说明,对Server1进行Failover处理也可以参见此流程。
如图5所示,该方法可以包括以下步骤:
S501、节点Server2失效时间达到Failover触发时间,触发Failover机制,Couchbase集群移除节点Server2,备份数据被激活。
S502、Couchbase集群向客户端推送此时的集群拓扑(数据与节点的映射关系)。
S503、客户端检查新的集群拓扑,发现data1映射到节点Server1,于是直接向节点Server1请求data1。
需要说明的是,在Server2未被移除之前,客户端要访问Server2中的主数据,均需要先向Server2发送数据访问请求,在Server2响应超时后,才会向Server1发送备份数据的数据访问请求,而当Server2被移除,备份数据被激活后,客户端若要访问原本Server2存储的主数据,可以直接向存储该主数据的备份数据的节点发起数据访问请求。
下面结合具体的应用场景对本发明实施例中提出的从新增的第三节点中读取数据的方法进行详细的说明。
图6是本发明实施例中提出的另一种客户端与Couchbase集群之间的数据交互的示意图。
如图6所示,该方法可以包括以下步骤:
S601、当Server1响应超时时,客户端向Couchbase集群的节点Server3发起data1的数据访问请求。
其中,节点Server3为新增节点,在增加该节点后,Couchbase集群向客户端推送此时的集群拓扑,从而客户端根据集群拓扑向Server3发起data1的数据访问请求。
S602、客户端捕获到Server3响应超时。
根据本发明实施例,该客户端的代码块会对请求超时进行捕获,从而判断第三节点响应是否超时。本发明实施例中以Server3响应超时为例说明。
S603、客户端重建与Couchbase集群的连接。
客户端新建与Couchbase集群交互的bucket连接对象之后,将数据访问请求逐步迁移至当前的连接对象,最后关闭之前客户端与Couchbase集群之间的异常连接对象,释放资源。
S604、客户端在新建连接上向Server3发起data1的数据访问请求。
S605、Server3返回data1的信息。
本发明实施例中,在Couchbase集群中新增节点后,在该新增节点响应超时时,重建与Couchbase集群的连接,获取到当前的数据与节点的映射关系,并基于当前的数据与节点的映射关系向新增节点发起数据访问请求。对于Couchbase集群恢复阶段的Rebalance操作可能引发部分数据访问异常,通过连接重建策略保证数据服务可用,对Rebalance可能导致的部分数据服务不可用问题进行了轻量化修复。确保集群恢复阶段Rebalance操作触发数据访问异常时连接重建策略能快速响应,避免影响到上层业务。且以上方案不依赖Couchbase的版本变更,仅仅需要极少量的客户端代码调整,因此能够快速轻量化的修复线上系统的高可用隐患。
应清楚地理解,本发明描述了如何形成和使用特定示例,但本发明的原理不限于这些示例的任何细节。相反,基于本发明公开的内容的教导,这些原理能够应用于许多其它实施例。
下述为本发明装置实施例,可以用于执行本发明方法实施例。在下文对装置的描述中,与前述方法相同的部分,将不再赘述。
图7是根据一示例性实施例示出的一种数据请求处理的装置的结构图。如图7所示,该装置700包括:
第一发起模块710,用于向所述Couchbase集群中的第一节点发起待读取数据的数据访问请求。
第二发起模块720,用于若所述第一节点响应超时,向所述Couchbase集群中的第二节点发起所述待读取数据的数据访问请求。
第三发起模块730,用于若所述第一节点响应超时,向所述Couchbase集群中新增的第三节点发起数据访问请求;判断所述第三节点响应是否超时;若超时,重建与所述Couchbase集群的连接,以获取到所述Couchbase集群的当前的数据与节点的映射关系;基于所述当前的数据与节点的映射关系向所述第三节点发起数据访问请求。
根据一些实施例,所述第一发起模块710,配置为基于主数据与节点的映射关系,查找到所述待读取数据对应的主节点,所述主节点为所述第一节点,向所述第一节点发起所述待读取数据的数据访问请求。
根据一些实施例,所述第二发起模块720,配置为根据备份数据与节点的映射关系,查找到所述待读取数据对应的备份节点,所述备份节点为所述第二节点,向所述第二节点发起所述待读取数据的数据访问请求。
根据一些实施例,所述第三发起模块配置为当所述Couchbase集群移除所述第一节点后,增加所述第三节点。
本发明上述实施例中,实现在Couchbase集群中的节点失效时,客户端在备份节点上读取对应的数据副本,从而保证上层业务连续性。而且,在Couchbase集群中新增节点后,在该新增节点响应超时时,重建与Couchbase集群的连接,获取到当前的数据与节点的映射关系,并基于当前的数据与节点的映射关系向新增节点发起数据访问请求。对于Couchbase集群恢复阶段的Rebalance操作可能引发部分数据访问异常,通过连接重建策略保证数据服务可用,对Rebalance可能导致的部分数据服务不可用问题进行了轻量化修复。确保集群恢复阶段Rebalance操作触发数据访问异常时连接重建策略能快速响应,避免影响到上层业务。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备可以执行:向所述Couchbase集群中的第一节点发起待读取数据的数据访问请求;若所述第一节点响应超时,向所述Couchbase集群中的第二节点发起所述待读取数据的数据访问请求;或者,若所述第一节点响应超时,向所述Couchbase集群中新增的第三节点发起数据访问请求;判断所述第三节点响应是否超时;若超时,重建与所述Couchbase集群的连接,以获取到所述Couchbase集群的当前的数据与节点的映射关系;基于所述当前的数据与节点的映射关系向所述第三节点发起数据访问请求。
图8是根据一示例性实施例示出的一种电子设备的结构示意图。需要说明的是,图8示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图8所示,计算机系统800包括中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM 803中,还存储有系统800操作所需的各种程序和数据。CPU801、ROM 802以及RAM 803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本申请的终端中限定的上述功能。
需要说明的是,本申请所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括第一发起模块、第二发起模块和第三发起模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定。
以上具体示出和描述了本发明的示例性实施例。应可理解的是,本发明不限于这里描述的详细结构、设置方式或实现方法;相反,本发明意图涵盖包含在所附权利要求的精神和范围内的各种修改和等效设置。
Claims (10)
1.一种数据请求处理的方法,应用于包括多个节点的Couchbase集群,其特征在于,所述方法包括:
向所述Couchbase集群中的第一节点发起待读取数据的数据访问请求;
若所述第一节点响应超时,根据vBucket映射关系向所述Couchbase集群中的第二节点发起所述待读取数据的数据访问请求,其中,若所述第一节点响应超时具体包括:客户端在预设时间内未接收到所述第一节点的响应,判断出所述第一节点响应超时,所述预设时间小于或等于所述Couchbase集群启动Failover的触发时间;或者
若所述第一节点响应超时,向所述Couchbase集群中新增的第三节点发起数据访问请求;所述Couchbase集群基于所述第三节点进行数据重分布Rebalance操作,并在Rebalance操作阶段判断所述第三节点响应是否超时;若超时,重建与所述Couchbase集群的连接,以获取到所述Couchbase集群的当前的数据与节点的映射关系;基于所述当前的数据与节点的映射关系向所述第三节点发起数据访问请求。
2.如权利要求1所述的方法,其特征在于,向所述Couchbase集群中的第一节点发起待读取数据的数据访问请求,包括:
基于主数据与节点的映射关系,查找到所述待读取数据对应的主节点,所述主节点为所述第一节点,向所述第一节点发起所述待读取数据的数据访问请求。
3.如权利要求1所述的方法,其特征在于,向所述Couchbase集群中的第二节点发起所述待读取数据的数据访问请求,包括:
根据备份数据与节点的映射关系,查找到所述待读取数据对应的备份节点,所述备份节点为所述第二节点,向所述第二节点发起所述待读取数据的数据访问请求。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述Couchbase集群移除所述第一节点后,增加所述第三节点。
5.一种数据请求处理的装置,应用于包括多个节点的Couchbase集群,其特征在于,所述装置包括:
第一发起模块,用于向所述Couchbase集群中的第一节点发起待读取数据的数据访问请求;
第二发起模块,用于若所述第一节点响应超时,根据vBucket映射关系向所述Couchbase集群中的第二节点发起所述待读取数据的数据访问请求,其中,若所述第一节点响应超时具体包括:客户端在预设时间内未接收到所述第一节点的响应,判断出所述第一节点响应超时,所述预设时间小于或等于所述Couchbase集群启动Failover的触发时间;或者
第三发起模块,用于若所述第一节点响应超时,向所述Couchbase集群中新增的第三节点发起数据访问请求;所述Couchbase集群基于所述第三节点进行数据重分布Rebalance操作,并在Rebalance操作阶段判断所述第三节点响应是否超时;若超时,重建与所述Couchbase集群的连接,以获取到所述Couchbase集群的当前的数据与节点的映射关系;基于所述当前的数据与节点的映射关系向所述第三节点发起数据访问请求。
6.如权利要求5所述的装置,其特征在于,
所述第一发起模块,配置为基于主数据与节点的映射关系,查找到所述待读取数据对应的主节点,所述主节点为所述第一节点,向所述第一节点发起所述待读取数据的数据访问请求。
7.如权利要求5所述的装置,其特征在于,
所述第二发起模块,配置为根据备份数据与节点的映射关系,查找到所述待读取数据对应的备份节点,所述备份节点为所述第二节点,向所述第二节点发起所述待读取数据的数据访问请求。
8.如权利要求5所述的装置,其特征在于,所述第三发起模块配置为当所述Couchbase集群移除所述第一节点后,增加所述第三节点。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-4任一项所述的方法步骤。
10.一种电子设备,其特征在于,包括:一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1-4中任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811289701.6A CN109510867B (zh) | 2018-10-31 | 2018-10-31 | 数据请求处理的方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811289701.6A CN109510867B (zh) | 2018-10-31 | 2018-10-31 | 数据请求处理的方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109510867A CN109510867A (zh) | 2019-03-22 |
CN109510867B true CN109510867B (zh) | 2021-11-12 |
Family
ID=65747289
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811289701.6A Active CN109510867B (zh) | 2018-10-31 | 2018-10-31 | 数据请求处理的方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109510867B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112887432B (zh) * | 2021-03-31 | 2023-07-18 | 中国工商银行股份有限公司 | 分布式系统重建运维方法、运维节点及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033912A (zh) * | 2010-11-25 | 2011-04-27 | 北京北纬点易信息技术有限公司 | 一种分布式数据库访问方法及系统 |
CN103973424A (zh) * | 2014-05-22 | 2014-08-06 | 乐得科技有限公司 | 缓存系统中的故障解决方法和设备 |
CN107818027A (zh) * | 2017-10-17 | 2018-03-20 | 北京京东尚科信息技术有限公司 | 名字节点主备切换的方法、装置和分布式系统 |
CN107872517A (zh) * | 2017-10-23 | 2018-04-03 | 北京奇艺世纪科技有限公司 | 一种数据处理方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9607071B2 (en) * | 2014-03-07 | 2017-03-28 | Adobe Systems Incorporated | Managing a distributed database across a plurality of clusters |
US9584593B2 (en) * | 2014-06-27 | 2017-02-28 | Amazon Technologies, Inc. | Failure management in a distributed strict queue |
-
2018
- 2018-10-31 CN CN201811289701.6A patent/CN109510867B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033912A (zh) * | 2010-11-25 | 2011-04-27 | 北京北纬点易信息技术有限公司 | 一种分布式数据库访问方法及系统 |
CN103973424A (zh) * | 2014-05-22 | 2014-08-06 | 乐得科技有限公司 | 缓存系统中的故障解决方法和设备 |
CN107818027A (zh) * | 2017-10-17 | 2018-03-20 | 北京京东尚科信息技术有限公司 | 名字节点主备切换的方法、装置和分布式系统 |
CN107872517A (zh) * | 2017-10-23 | 2018-04-03 | 北京奇艺世纪科技有限公司 | 一种数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109510867A (zh) | 2019-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107480014B (zh) | 一种高可用设备切换方法及装置 | |
US8495618B1 (en) | Updating firmware in a high availability enabled computer system | |
CN105830033B (zh) | 用于在分布式数据网格中支持持久存储装置版本化和完整性的系统和方法 | |
CN108984349B (zh) | 主节点选举方法及装置、介质和计算设备 | |
EP3550436A1 (en) | Method and apparatus for detecting and recovering fault of virtual machine | |
CN106657167B (zh) | 管理服务器、服务器集群、以及管理方法 | |
CN115562911B (zh) | 虚拟机数据备份方法及装置、系统、电子设备、存储介质 | |
CN104036043A (zh) | 一种mysql高可用的方法及管理节点 | |
CN106130763A (zh) | 服务器集群及适用于该集群的数据库资源组切换控制方法 | |
CN111538585A (zh) | 一种基于node.js的服务器进程调度方法、系统和装置 | |
CN105068894A (zh) | 基于LVM镜像实现Linux系统存储设备高可用的方法和装置 | |
CN111209265A (zh) | 一种数据库切换方法和终端设备 | |
CN115658390A (zh) | 容器容灾方法、系统、装置、设备及计算机可读存储介质 | |
CN115629785A (zh) | 升级方法、电子设备及存储介质 | |
CN109510867B (zh) | 数据请求处理的方法、装置、存储介质及电子设备 | |
US20150278293A1 (en) | Asynchronous image repository functionality | |
CN115543393B (zh) | 升级方法、电子设备及存储介质 | |
US9880855B2 (en) | Start-up control program, device, and method | |
CN112269693B (zh) | 一种节点自协调方法、装置和计算机可读存储介质 | |
CN114265605A (zh) | 一种业务系统功能组件的版本回退方法和装置 | |
US9535806B1 (en) | User-defined storage system failure detection and failover management | |
CN113760862A (zh) | 一种增量数据断点续传方法、装置、设备及存储介质 | |
CN116436768B (zh) | 基于交叉心跳监测的自动备援方法、系统、设备及介质 | |
JP2020177489A (ja) | 制御方法、制御プログラム、および情報処理装置 | |
US11714631B2 (en) | Method, electronic device, and computer program product for managing operating system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |