CN106936926B - 访问数据节点的方法及系统 - Google Patents

访问数据节点的方法及系统 Download PDF

Info

Publication number
CN106936926B
CN106936926B CN201710253403.0A CN201710253403A CN106936926B CN 106936926 B CN106936926 B CN 106936926B CN 201710253403 A CN201710253403 A CN 201710253403A CN 106936926 B CN106936926 B CN 106936926B
Authority
CN
China
Prior art keywords
node
data
weight
queue
data node
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
CN201710253403.0A
Other languages
English (en)
Other versions
CN106936926A (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.)
Guangzhou Cubesili Information Technology Co Ltd
Original Assignee
Guangzhou Huaduo Network Technology 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 Guangzhou Huaduo Network Technology Co Ltd filed Critical Guangzhou Huaduo Network Technology Co Ltd
Priority to CN201710253403.0A priority Critical patent/CN106936926B/zh
Publication of CN106936926A publication Critical patent/CN106936926A/zh
Application granted granted Critical
Publication of CN106936926B publication Critical patent/CN106936926B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling 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/63Routing a service request depending on the request content or context

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Telephonic Communication Services (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种访问数据节点的方法,其包括读取可用节点队列中的权重最大的数据节点;访问所述数据节点;判断访问是否成功,若否,减少可用节点队列中所述数据节点的权重;若是,判断连接所述数据节点的时延是否小于阈值,若是,增加可用节点队列中所述数据节点的权重,否则,可用节点队列中所述数据节点的权重不变。通过实时调整与客户端连接的数据节点的权重,权衡了系统的负载,自选最优的数据节点进行服务访问,自主缓冲切换健康数据服务访问,提供了更准确节点切换的运算决策,避免短期的网络异常导致切换的成本开销。此外,本发明还提供了一种访问数据节点的系统。

Description

访问数据节点的方法及系统
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种访问数据节点的方法及系统。
背景技术
目前数据层基本以异地多点部署,本机房服务优先访问本机房或最近的数据节点,当访问中的数据节点所对应的节点网络异常或系统异常的情况下,能快速切换到健康可用且最近的数据节点。如果遇到网络抖动的情况下立马切换至其它数据节点或跨机房的数据节点后,由于时延增长,反而容易导致任务堆积。
因此,业内亟需一种能解决上述问题的技术方案。
发明内容
为解决上述技术问题,本发明提出了一种访问数据节点的方法及系统,解决抖动马上切换数据节点的问题。
为了实现本发明的目的,采取了如下技术方案:
本发明提供了一种访问数据节点的方法,其包括:
读取可用节点队列中的权重最大的数据节点;
访问所述数据节点;
判断访问是否成功,若否,减少可用节点队列中所述数据节点的权重;若是,判断连接所述数据节点的时延是否小于阈值,若是,增加可用节点队列中所述数据节点的权重,否则,可用节点队列中所述数据节点的权重不变。
具体地,所述读取可用节点队列中权重最大的数据节点之前,还包括:
预设可用节点队列中的数据节点的初始权重。
具体地,所述预设可用节点队列中的数据节点的初始权重,包括:
预设可用节点队列中的本地机房的数据节点的初始权重最大,按地域与线路质量预设可用节点队列中的远程机房的数据节点的初始权重。
具体地,所述读取可用节点队列中的权重最大的数据节点之前,还包括:
接收访问数据节点的请求。
具体地,所述判断访问是否成功,若否,减少可用节点队列中所述数据节点的权重;若是,判断连接所述数据节点的时延是否小于阈值,若是,增加可用节点队列中所述数据节点的权重,否则,可用节点队列中所述数据节点的权重不变,包括:
判断访问是否成功,若否,把可用节点队列中所述数据节点的权重减少2;若是,判断连接所述数据节点的时延是否小于1s,若是,确定所述数据节点的权重不大于初始权重的2倍,把可用节点队列中所述数据节点的权重增加1;否则,可用节点队列中所述数据节点的权重不变。
具体地,所述减少可用节点队列中所述数据节点的权重之后,还包括:
根据所述权重确定出所述数据节点为不可用节点;
把所述数据节点从所述可用节点队列中删除,放入不可用节点队列中。
具体地,所述根据所述权重确定出所述数据节点为不可用节点,包括:
检测当前可用节点队列当中的数据节点的权重是否低于所述数据节点的初始权重的1/2;
若是,则确定所述数据节点为不可用节点。
具体地,还包括:
建立独立线程对不可用节点队列中的数据节点进行有效性检测。
具体地,所述建立独立线程对不可用节点队列中的数据节点进行有效性检测之后,还包括:
确定所述不可用节点队列中的数据节点满足预设的有效性的时延要求;
将所述数据节点从不可用节点队列中删除,放入可用节点队列中。
此外,本发明还相应地提供了一种访问数据节点的系统,其包括:
读取模块,用于读取可用节点队列中的权重最大的数据节点;
访问模块,用于访问所述数据节点;
判断模块,用于判断访问是否成功,若否,减少可用节点队列中所述数据节点的权重;若是,判断连接所述数据节点的时延是否小于阈值,若是,增加可用节点队列中所述数据节点的权重,否则,可用节点队列中所述数据节点的权重不变
具体地,所述读取可用节点队列中权重最大的数据节点之前,还包括:
预设模块,用于预设可用节点队列中的数据节点的初始权重。
具体地,所述预设模块,包括:
预设单元,用于预设可用节点队列中的本地机房的数据节点的初始权重最大,按地域与线路质量预设可用节点队列中的远程机房的数据节点的初始权重。
具体地,所述读取可用节点队列中的权重最大的数据节点之前,还包括:
接收模块,用于接收访问数据节点的请求。
具体地,所述判断模块被配置为:
判断访问是否成功,若否,把可用节点队列中所述数据节点的权重减少2;若是,判断连接所述数据节点的时延是否小于1s,若是,确定所述数据节点的权重不大于初始权重的2倍,把可用节点队列中所述数据节点的权重增加1;否则,可用节点队列中所述数据节点的权重不变。
具体地,所述减少可用节点队列中所述数据节点的权重之后,还包括:
第一确定模块,用于根据所述权重确定出所述数据节点为不可用节点;
第一删除模块,用于把所述数据节点从所述可用节点队列中删除,放入不可用节点队列中。
具体地,所述第一确定模块,包括:
检测单元,用于检测当前可用节点队列当中的数据节点的权重是否低于所述数据节点的初始权重的1/2;
确定单元,用于若是,则确定所述数据节点为不可用节点。
具体地,还包括:
建立模块,用于建立独立线程对不可用节点队列中的数据节点进行有效性检测。
具体地,所述建立独立线程对不可用节点队列中的数据节点进行有效性检测之后,还包括:
第二确定模块,用于确定所述不可用节点队列中的数据节点满足预设的有效性的时延要求;
第二删除模块,用于则将所述数据节点从不可用节点队列中删除,放入可用节点队列中。
相比现有技术,本发明的方案具有以下优点:
1.本发明所述访问数据节点的方法中,访问当前可用节点队列中权重最大的数据节点,根据访问是否成功与时延是否小于阈值,动态调整该数据节点的权重,该调整为缓和进行,若发生网络抖动,导致当前一次或几次访问不成功,权重逐步变小,该数据节点的权重仍是最大值,不至于马上切换数据节点;除非发生相对较长时间的网络故障,导致该数据节点的权重多次减小后,从而小于其他的数据节点权重;当网络恢复正常,在时延小于阈值情况下,权重逐步变大,为下次抖动提供冗余。本方案解决了传统的网络抖动的情况下立马切换数据节点甚至跨机房的数据节点后,时延增长所导致的任务堆积的问题。此外,根据访问数据节点是否成功以及访问数据节点的时延,实时调整该数据节点的权重,权衡了系统的负载,自选最优数据节点进行服务访问,自主缓冲切换健康的数据节点,提供了一个更准确、性能更优的切换运算决策。
2.本发明所述访问数据节点的方法中,建立独立线程对不可用节点队列中的数据节点进行有效性检测,保证了检测的同时不会影响正常的业务请求。此外,将满足条件的不可用节点队列中的数据节点重新放入可用节点队列,提高了线路资源的利用率,有效地保证了来自客户端的请求能够得到及时的响应。
3.本发明所述访问数据节点的方法中,当前可用节点队列当中的数据节点的权重低于该数据节点的初始权重的1/2时,会将所述数据节点从可用节点队列中删除,并添加到不可用节点队列进行检测,这种情况下,在网络突然波动时,不会立刻将权重减少到低优先级的数据节点,其会存在一个缓冲期。若网络的波动时间较短,不会立即切换至低优先级的数据节点,这样能保证业务能访问更低时延更高优先级的数据节点,避免任务的拥塞。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明中一种访问数据节点的方法的一种实施例的流程图 ;
图2示出了本发明中一种访问数据节点的方法的另一种实施例的流程图 ;
图3示出了本发明中一种访问数据节点的方法的又一实施例的流程图 ;
图4示出了本发明中一种访问数据节点的系统的一种实施例的结构示意图;
图5示出了本发明中一种访问数据节点的系统的另一种实施例的结构示意图;
图6示出了本发明中一种访问数据节点的系统的又一种实施例的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1,示出了本发明中一种访问数据节点的方法的实施例的结构。
本发明提供了一种访问数据节点的方法,其包括步骤S11、步骤S12和步骤S13。
其中,步骤S11:读取可用节点队列中的权重最大的数据节点。
在本发明的一种实施例中,数据层以异地多点进行部署,其对应的数据节点分布在不同的地方。当服务器需要进行数据访问时,其会从与其建立连接关系的数据节点中,读取可用节点队列中的权重最大的数据节点进行数据访问,以获取所需的数据信息。
读取可用节点队列中的权重最大的数据节点进行访问,即选择当前可用的数据节点中最优的数据节点进行服务访问,其有利于避免更多的访问请求的堆积,降低服务负载。
其中,优选地,本发明的实施例是基于数据连接池的基础上实现的。服务器在启动时,其会与数据层之间建立一定数量的池连接,并一直维持不少于此数目的池连接。也就是说,服务器会与数据层所对应的多个数据节点建立连接关系,所述基于连接关系与数据层所建立的连接的数量可根据实际的需要而进行实时动态的调整。客户端程序需要连接时,池程序会返回一个未使用的池连接并标记为忙。如果当前没有空闲连接,池驱动程序会新建一定数量的连接,新建连接的数据由配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。
同时,如图2,示出了本发明中一种访问数据节点的方法的另一种实施例。在这一实施例中,所述读取可用节点队列中的权重最大的数据节点之前,还包括步骤S10。其中,步骤S10:接收访问数据节点的请求。
在本发明中,用户在通过相关的客户端进行相关的数据访问请求的操作时,这些来自客户端的访问请求在服务器中汇集,服务器根据客户端的访问请求,访问数据层所对应的数据节点,并优先选择当前可用队列节点中的权重最大的数据节点进行数据访问,以更有效、更快速地获取相应的数据信息,并减少系统的负载及系统任务的拥塞。
此外,参见图3,其列出了本发明的又一种实施例。该实施例中,所述读取可用节点队列中权重最大的数据节点之前,还包括步骤S14。其中,步骤S14:预设可用节点队列中的数据节点的初始权重。
例如,当前的数据层其对应的可用节点队列中存在3个数据节点,分别位于广州、上海以及北京。相对于广州的服务器而言,其会优先访问本机房所在地域的数据节点,因此广州、上海及北京的数据节点的初始权重有所不同,分别预设为150、70、30。同理,相对于上海的服务器而言,广州、上海及北京的数据节点的初始权重可分别预设为100、210、80。可以理解的是,上述的举例,只是为了说明,针对不同地域的服务器访问数据节点的情形,不同的数据节点之间的权重的初始值是可以根据不同地域的服务器的实际需求进行配置,其并不能构成对本发明的限制。
所述数据节点的初始权重可根据实际的情况进行配置,一方面,有利于根据后期的运维工作、数据节点的放置以及服务器与数据节点之间的线路配置的动态调整;另一方面,也有利于根据当前的用户的请求的数据来源进行动态调整,从而提供性能更优、成本开销更低的数据节点及数据节点的切换方案。
所述数据节点的初始权重,在某种意义上,是权衡了服务器访问数据节点时的相对保留时间及整个系统负载而进行预设的。其是为了让服务器选择当前最优的数据节点进行访问或自主缓冲切换至健康的数据节点进行数据访问,以保证用户在进行业务访问的时候,能提供更低时延、更优性能的数据节点,避免任务拥塞。
因此,在本发明的更具体的方案中,所述预设可用节点队列中的数据节点的初始权重,包括:
预设可用节点队列中的本地机房的数据节点的初始权重最大,按地域与线路质量预设可用节点队列中的远程机房的数据节点的初始权重。
例如,对于广州的服务器而言,其对应的数据层的可用节点队列当中存在4个数据节点,其中,包括位于广州的两个数据节点A和B,位于上海的数据节点C以及位于北京的数据节点D。在广州的服务器与广州、北京、上海的数据节点之间的线路质量大体一致的时候,不同地域之间的距离对数据访问的速度跟质量存在较大的影响。因此,相对于广州的服务器而言,广州的数据节点A和B的优先级会高于上海的数据节点C跟北京的数据节点D,从而广州的数据节点A和B的权重比上海的数据节点C跟北京的数据节点D高。而在服务器和数据节点处于同一地域时,线路的质量对数据访问的速度跟质量存在的影响更为明显。因此,相对于广州的服务器而言,广州的数据节点A和B的线路质量越好,越有利于广州的服务器进行访问。这种情形下,相对于广州的服务器而言,其所对应的可用节点队列中的数据节点A、B、C、D的初始权重可预设为200、150、110、65。
根据地域与线路质量,权衡了数据节点对于不同地域的服务器的优先级,有利于针对不同的客户端服务器,确定不同的数据节点之间的初始权重的优先级及相应的数值。使得不同的客户端服务器选择相对于自身而言的可用节点队列中的权重最大的数据节点进行访问,能时刻保证业务能访问更低时延、更高优先级的数据节点。
步骤S12:访问所述数据节点。
在服务器接收到来自客户端的访问请求之后,服务器会根据所述访问请求去访问数据节点获取相关的数据信息。首先,服务器会读取当前的可用节点队列当中权重最大的数据节点进行访问。可以理解的是,由于线路、网络质量等原因,服务器对数据节点的访问并不必然成功。例如,在当前的网络存在波动或网络异常的情况下,服务器也存在访问不成功的情形。在网络存在波动或网络异常等情形之下,服务器是否有必要切换其连接至当前的可用节点队列当中的其它数据节点,可以根据当前可用节点队列的数据节点的实时动态的权重进行决定,以获取更好的切换方案,避免系统任务的堆积。
步骤S13:判断访问是否成功,若否,减少可用节点队列中所述数据节点的权重;若是,判断连接所述数据节点的时延是否小于阈值,若是,增加可用节点队列中所述数据节点的权重,否则,可用节点队列中所述数据节点的权重不变。
在本发明的具体实施例中,对可用节点队列当中的数据节点的权重进行动态的调整,是根据服务器访问数据节点是否成功及服务器访问成功时的时延等综合判断,对当前可用节点队列当中的数据节点的权重进行实时的调整。
在服务器访问数据节点时,首先会判断服务器对数据节点的访问是否成功,进而判断成功后的连接时延是否满足预设的阈值,从而实现对所述数据节点的权重进行调整。
例如,相对于广州的服务器而言,可用节点队列中的数据节点A的初始权重是100。广州的服务器访问广州的数据节点A,访问不成功的话,可减少该数据节点A在可用节点队列中的权重为98;若广州的服务器成功访问数据节点A,则进一步判断访问数据节点A的时延是否超过了预先设置的阈值;如果时延小于预设的阈值,则可增加数据节点A在可用节点队列中的权重为102,如果时延大于预设的阈值,则可维持数据节点A在可用节点队列中的权重100不变。
可以理解的是,服务器对数据节点的访问是高速且频繁的,其在短时间内存在大量的访问,由于每一次对数据节点的访问都会调整该数据节点的权重,因此,数据节点的调整是实时且动态的。
其中,可用节点队列中所述数据节点的权重的调整,存在一个优选的方案,其可以在动态调整可用节点队列中的数据节点的权重时,保证一个更准确、更优化的决策方案。
在本发明的一种更具体的实施例中,所述步骤S103,包括:
判断访问是否成功,若否,把可用节点队列中所述数据节点的权重减少2;若是,判断连接所述数据节点的时延是否小于1s,若是,确定所述数据节点的权重不大于初始权重的2倍,把可用节点队列中所述数据节点的权重增加1;否则,可用节点队列中所述数据节点的权重不变。
例如,相对于广州的服务器而言,可用节点队列中的数据节点A的初始权重是100。广州的服务器访问广州的数据节点A,访问不成功的话,则把该数据节点的权重A减少2,此时数据节点A的权重调整为98。在广州的服务器成功访问数据节点A的情形下,进一步判断访问数据节点A的时延。若所述时延为0.9S,小于预设的阈值1S,则进一步确定数据节点A当前的权重100不大于200后,把可用节点队列当中的数据节点A的权重增加1,从而把数据节点A的权重调整为101。若所述时延为2S,超过了预设的阈值1S,则维持所述数据节点A的权重为100不变。
具体地,所述减少可用节点队列中所述数据节点的权重之后,还包括:
根据所述权重确定出所述数据节点为不可用节点;
把所述数据节点从所述可用节点队列中删除,放入不可用节点队列中。
在本发明的实施例中所述减少可用节点队列中所述数据节点的权重之后,还需要判断此时该所述数据节点是否还满足一定的条件,以继续存留在可用节点队列当中,以便服务器的下一次访问。当可用节点队列当中的数据节点的权重下降到一定的程度,说明服务器在一定的时间内访问该数据节点不成功或访问该数据节点的时延较大,进一步说明该数据节点出现了所在的通信线路出现异常或网络波动较大或网络异常等情形。这时,该数据节点的可用性和效率性就会降低到一定的程序,可能会对服务器的访问存在一定的影响,进而导致用户的访问请求无法得到及时的响应而导致系统任务的拥塞。因此,在这种情形之下,当根据所述权重确定出所述数据节点为不可用节点时,把所述数据节点从其所在的可用节点队列中删除,放入到不可用节点队列中,以待重新确定该数据节点是否为可用数据节点,或对该数据节点进行相应的维修处理。
具体地,所述根据所述权重确定出所述数据节点为不可用节点,包括:
检测当前可用节点队列当中的数据节点的权重是否低于所述数据节点的初始权重的1/2;
若是,则确定所述数据节点为不可用节点。
在本发明的一种具体实施例中,确定一个可用节点队列当中的数据节点是否为不可用节点,需要将该数据节点当前的权重与该数据节点的初始权重的1/2进行比较。例如,一个可用节点队列中的数据节点的初始权重为100,该数据节点由于权重一直在减少,当前的权重为49。由于权重49 低于该数据节点的初始权重的1/2,也就是50,所以确定该数据节点为不可用数据节点。
由于对于同一服务器而言,不同区域的数据节点的优先级所对应的权重存在一定的数值间隔。在某一地域的网络突然波动或存在异常时,不会立刻将该地域所对应的数据节点确定为不可用节点,其会存在一定的缓冲期,避免由于短时间的网络抖动期间而立刻切换至其它地域的数据节点,从而有更多的请求堆积,把服务负载验证拉高,导致出现压力洪灾。此外,将通过对可用节点队列中的数据节点的可用性进行检测,有利于保证可用节点队列中的数据节点的高效性,能及时将存在问题的数据节点从可用节点队列删除,进而在服务器访问可用节点队列当中的数据节点时,保证权重最大的数据节点能及时响应于服务器的访问请求。
对于那些放置于不可用节点队列当中的数据节点,后期还需要进一步检测其是否可用。
具体地,还包括:
建立独立线程对不可用节点队列中的数据节点进行有效性检测。
可以理解的是,如果只是网络的短期抖动,导致了服务器在短时间内访问数据节点不成功或时延过大,导致该数据节点的权重低于一定的预设值,从而被确定为不可用节点,进而被从可用节点队列中删除。当网络重新稳定的时候,该数据节点的性能便会恢复到网络波动之前。网络波动结束之后,该数据节点的存在会对本机房或其它区域的服务器访问可用节点队列当中的数据节点产生积极的影响。换句话说,对不可用节点队列当中的数据节点进行检测,其当前是否有效,是对线路资源的有效利用,以确定高效、可用的数据节点能及时响应于来自服务器的大量请求。在本发明中,建立独立线程对不可用节点队列中的数据节点进行有效性检测,不会占用系统对业务请求的资源,从而不影响到来自服务器的业务请求。
具体地,所述建立独立线程对不可用节点队列中的数据节点进行有效性检测之后,还包括:
确定所述不可用节点队列中的数据节点满足预设的有效性的时延要求;
将所述数据节点从不可用节点队列中删除,放入可用节点队列中。
当然,对于不可用节点队列中的数据节点进行有效性的检测,当所述数据节点能满足系统预设的有效性的要求之后,说明该数据节点是可用的,能及时响应于服务器的请求。这时,则应当将该数据节点从不可用节点队列中删除,放入到当前的可用节点队列中去。这有利于提高对数据节点所对应的线路资源的利用率。
例如,如果系统所预设的有效性的时延要求是在1分钟内10次响应于来自服务器的访问请求,并且每次时延不得高于1s。当建立的线程定时或不定时检测不可用节点队列中的数据节点,当存在数据节点满足所述预设的有效性的时延要求时,则将该数据节点从不可用节点队列中删除,放入可用节点队列中。
综上,本发明中的访问数据节点的方法,访问当前可用节点队列中权重最大的数据节点,根据访问是否成功与时延是否小于阈值,动态调整该数据节点的权重,该调整为缓和进行,若发生网络抖动,导致当前一次或几次访问不成功,权重逐步变小,该数据节点的权重仍是最大值,不至于马上切换数据节点;除非发生相对较长时间的网络故障,导致该数据节点的权重多次减小后,从而小于其他的数据节点权重;当网络恢复正常,在时延小于阈值情况下,权重逐步变大,为下次抖动提供冗余。本方案解决了传统的网络抖动的情况下立马切换数据节点甚至跨机房的数据节点后,时延增长所导致的任务堆积的问题。此外,根据访问数据节点是否成功以及访问数据节点的时延,实时调整该数据节点的权重,权衡了系统的负载,自选最优数据节点进行服务访问,自主缓冲切换健康的数据节点,提供了一个更准确、性能更优的切换运算决策。
此外,如图4所示,本发明还相应地提供了一种访问数据节点的系统,其包括读取模块101、访问模块102、判断模块103。
其中,读取模块101,用于读取可用节点队列中的权重最大的数据节点。
在本发明的一种实施例中,数据层以异地多点进行部署,其对应的数据节点分布在不同的地方。当服务器需要进行数据访问时,其会从与其建立连接关系的数据节点中,读取可用节点队列中的权重最大的数据节点进行数据访问,以获取所需的数据信息。
读取可用节点队列中的权重最大的数据节点进行访问,即选择当前可用的数据节点中最优的数据节点进行服务访问,其有利于避免更多的访问请求的堆积,降低服务的负载。
其中,优选地,本发明的实施例是基于数据连接池的基础上实现的。服务器在启动时,其会与数据层之间建立一定数量的池连接,并一直维持不少于此数目的池连接。也就是说,服务器会与数据层所对应的多个数据节点建立连接关系,所述基于连接关系与数据层所建立的连接的数量可根据实际的需要而进行实时动态的调整。客户端程序需要连接时,池程序会返回一个未使用的池连接并标记为忙。如果当前没有空闲连接,池驱动程序会新建一定数量的连接,新建连接的数据由配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。
同时,如图5,示出了本发明中一种访问数据节点的系统的另一种实施例。在这一实施例中,所述读取可用节点队列中的权重最大的数据节点之前,还包括接收模块100。其中,接收模块100,用于接收访问数据节点的请求。
在本发明中,用户在通过相关的客户端进行相关的数据访问请求的操作时,这些来自客户端的访问请求在服务器中汇集,服务器根据客户端的访问请求,访问数据层所对应的数据节点,并优先选择当前可用队列节点中的权重最大的数据节点进行数据访问,以更有效、更快速地获取相应的数据信息,并减少系统的负载及系统任务的拥塞。
此外,参见图6,其列出了本发明中一种访问数据节点的系统的又一种实施例。该实施例中,所述读取可用节点队列中权重最大的数据节点之前,还包括预设模块104。其中,预设模块104,用于预设可用节点队列中的数据节点的初始权重。
例如,当前的数据层其对应的可用节点队列中存在3个数据节点,分别位于广州、上海以及北京。相对于广州的服务器而言,其会优先访问本机房所在地域的数据节点,因此广州、上海及北京的数据节点的初始权重有所不同,分别预设为150、70、30。同理,相对于上海的服务器而言,广州、上海及北京的数据节点的初始权重可分别预设为100、210、80。可以理解的是,上述的举例,只是为了说明,针对不同地域的服务器访问数据节点的情形,不同的数据节点之间的权重的初始值是可以根据不同地域的服务器的实际需求进行配置,其并不能构成对本发明的限制。
所述数据节点的初始权重可根据实际的情况进行配置,一方面,有利于根据后期的运维工作、数据节点的放置以及服务器与数据节点之间的线路配置的动态调整;另一方面,也有利于根据当前的用户的请求的数据来源进行动态调整,从而提供性能更优、成本开销更低的数据节点及数据节点的切换方案。
所述数据节点的初始权重,在某种意义上,是权衡了服务器访问数据节点时的相对保留时间及整个系统负载而进行预设的。其是为了让服务器选择当前最优的数据节点进行访问或自主缓冲切换至健康的数据节点进行数据访问,以保证用户在进行业务访问的时候,能提供更低时延、更优性能的数据节点,避免任务拥塞。
因此,在本发明的更具体的方案中,所述预设模块104,包括:
预设单元,用于预设可用节点队列中的本地机房的数据节点的初始权重最大,按地域与线路质量预设可用节点队列中的远程机房的数据节点的初始权重。
例如,对于广州的服务器而言,其对应的数据层的可用节点队列当中存在4个数据节点,其中,包括位于广州的两个数据节点A和B,位于上海的数据节点C以及位于北京的数据节点D。在广州的服务器与广州、北京、上海的数据节点之间的线路质量大体一致的时候,不同地域之间的距离对数据访问的速度跟质量存在较大的影响。因此,相对于广州的服务器而言,广州的数据节点A和B的优先级会高于上海的数据节点C跟北京的数据节点D,从而广州的数据节点A和B的权重比上海的数据节点C跟北京的数据节点D高。而在服务器和数据节点处于同一地域时,线路的质量对数据访问的速度跟质量存在的影响更为明显。因此,相对于广州的服务器而言,广州的数据节点A和B的线路质量越好,越有利于广州的服务器进行访问。这种情形下,相对于广州的服务器而言,其所对应的可用节点队列中的数据节点A、B、C、D的初始权重可预设为200、150、110、65。
根据地域与线路质量,权衡了数据节点对于不同地域的服务器的优先级,有利于针对不同的客户端服务器,确定不同的数据节点之间的初始权重的优先级及相应的数值。使得不同的客户端服务器选择相对于自身而言的可用节点队列中的权重最大的数据节点进行访问,能时刻保证业务能访问更低时延、更高优先级的数据节点。
访问模块102,用于访问所述数据节点。
在服务器接收到来自客户端的访问请求之后,服务器会根据所述访问请求去访问数据节点获取相关的数据信息。首先,服务器会读取当前的可用节点队列当中权重最大的数据节点进行访问。可以理解的是,由于线路、网络质量等原因,服务器对数据节点的访问并不必然成功。例如,在当前的网络存在波动或网络异常的情况下,服务器也存在访问不成功的情形。在网络存在波动或网络异常等情形之下,服务器是否有必要切换其连接至当前的可用节点队列当中的其它数据节点,可以根据当前可用节点队列的数据节点的实时动态的权重进行决定,以获取更好的切换方案,避免系统任务的堆积。
判断模块103,用于判断访问是否成功,若否,减少可用节点队列中所述数据节点的权重;若是,判断连接所述数据节点的时延是否小于阈值,若是,增加可用节点队列中所述数据节点的权重,否则,可用节点队列中所述数据节点的权重不变。
在本发明的具体实施例中,对可用节点队列当中的数据节点的权重进行动态的调整,是根据服务器访问数据节点是否成功及服务器访问成功时的时延等综合判断,对当前可用节点队列当中的数据节点的权重进行实时的调整。
在服务器访问数据节点时,首先会判断服务器对数据节点的访问是否成功,进而判断成功后的连接时延是否满足预设的阈值,从而实现对所述数据节点的权重进行调整。
例如,相对于广州的服务器而言,可用节点队列中的数据节点A的初始权重是100。广州的服务器访问广州的数据节点A,访问不成功的话,可减少该数据节点A在可用节点队列中的权重为98;若广州的服务器成功访问数据节点A,则进一步判断访问数据节点A的时延是否超过了预先设置的阈值;如果时延小于预设的阈值,则可增加数据节点A在可用节点队列中的权重为102,如果时延大于预设的阈值,则可维持数据节点A在可用节点队列中的权重100不变。
可以理解的是,服务器对数据节点的访问是高速且频繁的,其在短时间内存在大量的访问,由于每一次对数据节点的访问都会调整该数据节点的权重,因此,数据节点的调整是实时且动态的。
其中,可用节点队列中所述数据节点的权重的调整,存在一个优选的方案,其可以在动态调整可用节点队列中的数据节点的权重时,保证一个更准确、更优化的决策方案。
在本发明的一种更具体的实施例中,所述判断模块103被配置为:
判断访问是否成功,若否,把可用节点队列中所述数据节点的权重减少2;若是,判断连接所述数据节点的时延是否小于1s,若是,确定所述数据节点的权重不大于初始权重的2倍,把可用节点队列中所述数据节点的权重增加1;否则,可用节点队列中所述数据节点的权重不变。
例如,相对于广州的服务器而言,可用节点队列中的数据节点A的初始权重是100。广州的服务器访问广州的数据节点A,访问不成功的话,则把该数据节点的权重A减少2,此时数据节点A的权重调整为98。在广州的服务器成功访问数据节点A的情形下,进一步判断访问数据节点A的时延。若所述时延为0.9S,小于预设的阈值1S,则进一步确定数据节点A当前的权重100不大于200后,把可用节点队列当中的数据节点A的权重增加1,从而把数据节点A的权重调整为101。若所述时延为2S,超过了预设的阈值1S,则维持所述数据节点A的权重为100不变。
具体地,所述减少可用节点队列中所述数据节点的权重之后,还包括:
第一确定模块,用于根据所述权重确定出所述数据节点为不可用节点;
第一删除模块,用于把所述数据节点从所述可用节点队列中删除,放入不可用节点队列中。
在本发明的实施例中,所述减少可用节点队列中所述数据节点的权重之后,还需要判断此时该所述数据节点是否还满足一定的条件,以继续存留在可用节点队列当中,以便服务器的下一次访问。当可用节点队列当中的数据节点的权重下降到一定的程度,说明服务器在一定的时间内访问该数据节点不成功或访问该数据节点的时延较大,进一步说明该数据节点出现了所在的通信线路出现异常或网络波动较大或网络异常等情形。这时,该数据节点的可用性和效率性就会降低到一定的程序,可能会对服务器的访问存在一定的影响,进而导致用户的访问请求无法得到及时的响应而导致系统任务的拥塞。因此,在这种情形之下,当根据所述权重确定出所述数据节点为不可用节点时,把所述数据节点从其所在的可用节点队列中删除,放入到不可用节点队列中,以待重新确定该数据节点是否为可用数据节点,或对该数据节点进行相应的维修处理。
具体地,所述第一确定模块,包括:
检测单元,用于检测当前可用节点队列当中的数据节点的权重是否低于所述数据节点的初始权重的1/2;
确定单元,用于若是,则确定所述数据节点为不可用节点。
在本发明的一种具体实施例中,确定一个可用节点队列当中的数据节点是否为不可用节点,需要将该数据节点当前的权重与该数据节点的初始权重的1/2进行比较。例如,一个可用节点队列中的数据节点的初始权重为100,该数据节点由于权重一直在减少,当前的权重为49。由于权重49 低于该数据节点的初始权重的1/2,也就是50,所以确定该数据节点为不可用数据节点。
由于对于同一服务器而言,不同区域的数据节点的优先级所对应的权重存在一定的数值间隔。在某一地域的网络突然波动或存在异常时,不会立刻将该地域所对应的数据节点确定为不可用节点,其会存在一定的缓冲期,避免由于短时间的网络抖动期间而立刻切换至其它地域的数据节点,从而有更多的请求堆积,把服务负载验证拉高,导致出现压力洪灾。此外,将通过对可用节点队列中的数据节点的可用性进行检测,有利于保证可用节点队列中的数据节点的高效性,能及时将存在问题的数据节点从可用节点队列删除,进而在服务器访问可用节点队列当中的数据节点时,保证权重最大的数据节点能及时响应于服务器的访问请求。
对于那些放置于不可用节点队列当中的数据节点,后期还需要进一步检测其是否可用。
具体地,还包括:
建立模块,用于建立独立线程对不可用节点队列中的数据节点进行有效性检测。
可以理解的是,如果只是网络的短期抖动,导致了服务器在短时间内访问数据节点不成功或时延过大,导致该数据节点的权重低于一定的预设值,从而被确定为不可用节点,进而被从可用节点队列中删除。当网络重新稳定的时候,该数据节点的性能便会恢复到网络波动之前。网络波动结束之后,该数据节点的存在会对本机房或其它区域的服务器访问可用节点队列当中的数据节点产生积极的影响。换句话说,对不可用节点队列当中的数据节点进行检测,其当前是否有效,是对线路资源的有效利用,以确定高效、可用的数据节点能及时响应于来自服务器的大量请求。在本发明中,建立独立线程对不可用节点队列中的数据节点进行有效性检测,不会占用系统对业务请求的资源,从而不影响到来自服务器的业务请求。
具体地,所述建立独立线程对不可用节点队列中的数据节点进行有效性检测之后,还包括:
第二确定模块,用于确定所述不可用节点队列中的数据节点满足预设的有效性的时延要求;
第二删除模块,用于则将所述数据节点从不可用节点队列中删除,放入可用节点队列中。
当然,对于不可用节点队列中的数据节点进行有效性的检测,当所述数据节点能满足系统预设的有效性的要求之后,说明该数据节点是可用的,能及时响应于服务器的请求。这时,则应当将该数据节点从不可用节点队列中删除,放入到当前的可用节点队列中去。这有利于提高对数据节点所对应的线路资源的利用率。
例如,如果系统所预设的有效性的时延要求是在1分钟内10次响应于来自服务器的访问请求,并且每次时延不得高于1s。当建立的线程定时或不定时检测不可用节点队列中的数据节点,当存在数据节点满足所述预设的有效性的时延要求时,则将该数据节点从不可用节点队列中删除,放入可用节点队列中。
综上,本发明中的访问数据节点的系统,访问当前可用节点队列中权重最大的数据节点,根据访问是否成功与时延是否小于阈值,动态调整该数据节点的权重,该调整为缓和进行,若发生网络抖动,导致当前一次或几次访问不成功,权重逐步变小,该数据节点的权重仍是最大值,不至于马上切换数据节点;除非发生相对较长时间的网络故障,导致该数据节点的权重多次减小后,从而小于其他的数据节点权重;当网络恢复正常,在时延小于阈值情况下,权重逐步变大,为下次抖动提供冗余。本方案解决了传统的网络抖动的情况下立马切换数据节点甚至跨机房的数据节点后,时延增长所导致的任务堆积的问题。此外,根据访问数据节点是否成功以及访问数据节点的时延,实时调整该数据节点的权重,权衡了系统的负载,自选最优数据节点进行服务访问,自主缓冲切换健康的数据节点,提供了一个更准确、性能更优的切换运算决策。
以上对本发明所提供的一种访问数据节点的方法及系统进行了详细介绍,对于本领域的一般技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种访问数据节点的方法,其特征在于,包括:
读取可用节点队列中的权重最大的数据节点;
访问所述数据节点;
判断访问是否成功,若否,减少可用节点队列中所述数据节点的权重;若是,判断连接所述数据节点的时延是否小于阈值,若是,增加可用节点队列中所述数据节点的权重,否则,可用节点队列中所述数据节点的权重不变。
2.根据权利要求1所述的访问数据节点的方法,其特征在于,所述读取可用节点队列中权重最大的数据节点之前,还包括:
预设可用节点队列中的数据节点的初始权重。
3.根据权利要求2所述的访问数据节点的方法,其特征在于,所述预设可用节点队列中的数据节点的初始权重,包括:
预设可用节点队列中的本地机房的数据节点的初始权重最大,按地域与线路质量预设可用节点队列中的远程机房的数据节点的初始权重。
4.根据权利要求1所述的访问数据节点的方法,其特征在于,所述读取可用节点队列中的权重最大的数据节点之前,还包括:
接收访问数据节点的请求。
5.根据权利要求1所述的访问数据节点的方法,其特征在于,所述增加可用节点队列中所述数据节点的权重,包括:
确定所述数据节点的权重不大于初始权重的2倍,把可用节点队列中所述数据节点的权重增加1。
6.根据权利要求1所述的访问数据节点的方法,其特征在于,所述减少可用节点队列中所述数据节点的权重之后,还包括:
根据所述权重确定出所述数据节点为不可用节点;
把所述数据节点从所述可用节点队列中删除,放入不可用节点队列中。
7.根据权利要求6所述的访问数据节点的方法,其特征在于,所述根据所述权重确定出所述数据节点为不可用节点,包括:
检测当前可用节点队列当中的数据节点的权重是否低于所述数据节点的初始权重的1/2;
若是,则确定所述数据节点为不可用节点。
8.根据权利要求6所述的访问数据节点的方法,其特征在于,还包括:
建立独立线程对不可用节点队列中的数据节点进行有效性检测。
9.根据权利要求8所述的访问数据节点的方法,其特征在于,所述建立独立线程对不可用节点队列中的数据节点进行有效性检测之后,还包括:
确定所述不可用节点队列中的数据节点满足预设的有效性的时延要求;
将所述数据节点从不可用节点队列中删除,放入可用节点队列中。
10.一种访问数据节点的系统,其特征在于,包括:
读取模块,用于读取可用节点队列中的权重最大的数据节点;
访问模块,用于访问所述数据节点;
判断模块,用于判断访问是否成功,若否,减少可用节点队列中所述数据节点的权重;若是,判断连接所述数据节点的时延是否小于阈值,若是,增加可用节点队列中所述数据节点的权重,否则,可用节点队列中所述数据节点的权重不变。
CN201710253403.0A 2017-04-18 2017-04-18 访问数据节点的方法及系统 Active CN106936926B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710253403.0A CN106936926B (zh) 2017-04-18 2017-04-18 访问数据节点的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710253403.0A CN106936926B (zh) 2017-04-18 2017-04-18 访问数据节点的方法及系统

Publications (2)

Publication Number Publication Date
CN106936926A CN106936926A (zh) 2017-07-07
CN106936926B true CN106936926B (zh) 2020-05-15

Family

ID=59438284

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710253403.0A Active CN106936926B (zh) 2017-04-18 2017-04-18 访问数据节点的方法及系统

Country Status (1)

Country Link
CN (1) CN106936926B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108111599B (zh) * 2017-12-19 2021-01-05 深圳马可孛罗科技有限公司 一种不稳定网络环境下的数据请求方法及系统
CN109101344B (zh) * 2018-06-29 2022-04-12 上海瀚之友信息技术服务有限公司 一种数据分配方法
CN109710433B (zh) * 2018-12-30 2021-04-27 浙江蓝卓工业互联网信息技术有限公司 基于元数据驱动的数据处理方法、装置及系统
CN110572453A (zh) * 2019-09-06 2019-12-13 杭州涂鸦信息技术有限公司 一种同可用区加权负载均衡的方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719793A (zh) * 2009-12-07 2010-06-02 浙江工业大学 基于优先级动态调整的单向光总线网络访问控制系统
CN105100152A (zh) * 2014-05-14 2015-11-25 腾讯科技(深圳)有限公司 应用服务器的选取方法和系统、应用客户端
CN105207818A (zh) * 2015-09-23 2015-12-30 杭州数梦工场科技有限公司 一种节点的控制方法和装置
CN105282259A (zh) * 2015-11-13 2016-01-27 深圳联友科技有限公司 用于后台集群服务的负载均衡分配方法、代理及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6765905B2 (en) * 2002-04-18 2004-07-20 Motorola, Inc. Method for reducing packet data delay variation in an internet protocol network

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101719793A (zh) * 2009-12-07 2010-06-02 浙江工业大学 基于优先级动态调整的单向光总线网络访问控制系统
CN105100152A (zh) * 2014-05-14 2015-11-25 腾讯科技(深圳)有限公司 应用服务器的选取方法和系统、应用客户端
CN105207818A (zh) * 2015-09-23 2015-12-30 杭州数梦工场科技有限公司 一种节点的控制方法和装置
CN105282259A (zh) * 2015-11-13 2016-01-27 深圳联友科技有限公司 用于后台集群服务的负载均衡分配方法、代理及系统

Also Published As

Publication number Publication date
CN106936926A (zh) 2017-07-07

Similar Documents

Publication Publication Date Title
CN106936926B (zh) 访问数据节点的方法及系统
JP6671468B2 (ja) クラウドモニタリングに基づく負荷分散の最適化方法および装置
US8073952B2 (en) Proactive load balancing
US20190182351A1 (en) Route selection method and system, network acceleration node, and network acceleration system
CN108712464A (zh) 一种面向集群微服务高可用的实现方法
EP2883329B1 (en) Computer information system and dynamic disaster recovery method therefor
US9532359B2 (en) Resource allocation method and device
US10389801B2 (en) Service request processing method, related apparatus, and system
US11316792B2 (en) Method and system of limiting traffic
CN108173698B (zh) 网络服务管理方法、装置、服务器及存储介质
CN110858843B (zh) 业务请求处理方法、装置及计算机可读存储介质
CN102891868A (zh) 一种分布式系统的负载均衡方法及装置
JP2015510201A (ja) クラウドネットワークにおける迅速な災害回復準備のための方法および装置
CN108134814B (zh) 一种业务数据处理方法及装置
CN105516347A (zh) 一种流媒体服务器的负载均衡调配的方法及装置
CN110809060B (zh) 一种应用服务器集群的监控系统及监控方法
WO2015077117A1 (en) Method and system for adjusting heavy traffic loads between personal electronic devices and external services
KR19990037569A (ko) 분산 실시간 시스템용 통합 과부하 제어
CN106656533A (zh) 一种集群系统的负荷处理监控方法及装置
CN114125055A (zh) 多协议自动适配云原生网关系统控制方法、系统、设备及应用
CN102984184A (zh) 一种分布式系统的服务负载均衡方法及装置
CN111723024A (zh) 数据处理方法、装置、系统、客户端服务器及存储服务器
US20150381498A1 (en) Network system and its load distribution method
CN102571383B (zh) 一种接入控制方法及系统
CN111510958A (zh) 一种消息接入负载均衡方法及系统

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20210115

Address after: 511442 3108, 79 Wanbo 2nd Road, Nancun Town, Panyu District, Guangzhou City, Guangdong Province

Patentee after: GUANGZHOU CUBESILI INFORMATION TECHNOLOGY Co.,Ltd.

Address before: 511442 29 floor, block B-1, Wanda Plaza, Huambo business district, Panyu District, Guangzhou, Guangdong.

Patentee before: GUANGZHOU HUADUO NETWORK TECHNOLOGY Co.,Ltd.

EE01 Entry into force of recordation of patent licensing contract
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20170707

Assignee: GUANGZHOU HUADUO NETWORK TECHNOLOGY Co.,Ltd.

Assignor: GUANGZHOU CUBESILI INFORMATION TECHNOLOGY Co.,Ltd.

Contract record no.: X2021440000053

Denomination of invention: Method and system of accessing data node

Granted publication date: 20200515

License type: Common License

Record date: 20210208