一种分布式自增计数的实现方法、装置及系统.pdf

上传人:Y0****01 文档编号:4335244 上传时间:2018-09-14 格式:PDF 页数:14 大小:535.25KB
返回 下载 相关 举报
摘要
申请专利号:

CN201110160425.5

申请日:

2011.06.15

公开号:

CN102833281A

公开日:

2012.12.19

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):H04L 29/08申请日:20110615|||公开

IPC分类号:

H04L29/08

主分类号:

H04L29/08

申请人:

中兴通讯股份有限公司

发明人:

陈典强; 郭斌; 韩银俊

地址:

518057 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法务部

优先权:

专利代理机构:

北京同达信恒知识产权代理有限公司 11291

代理人:

黄志华

PDF下载: PDF下载
内容摘要

本发明涉及云计算领域,公开了一种分布式自增计数的实现方法、装置及系统,用以提高分布式自增计数的执行效率,提升计数结果的准确性。该方法为:在云计算领域分布式缓存系统中,针对一个自增计数器在多个服务器上保存其计数结果的副本,每次执行自增计数操作时,在各服务器上针对同一自增计数器保存的计数结果中选取出最新的计数结果执行自增计数操作,从而有效保证了计数结果的准确性,同时,只需确认计数结果备份成功的服务器的数目达到设定阈值,便可确定当前自增计数操作成功,从而在一定程度上提高了自增计数操作的执行效率。

权利要求书

1.一种分布式自增计数的实现方法,其特征在于,包括:第一服务器接收服务终端发送的自增计数请求消息,该自增计数请求消息中携带用于指示操作内容的标识信息;第一服务器根据所述标识信息,获取本地对应该标识信息存储的计数结果,以及获取各第二服务器上对应该标识信息存储的计数结果,其中,第一服务器和第二服务器互为备份;第一服务器根据获得的各计数结果中更新时间距当前时间的时长最小的计数结果执行自增计数操作,获得更新后的计数结果;第一服务器将所述更新后的计数结果发往各第二服务器进行备份,并在确认超过设定数目的第二服务器备份成功时,确定当前自增计数操作成功。2.如权利要求1所述的方法,其特征在于,若第一服务器接收到至少两个服务终端发送的携带同一标识信息的自增计数请求消息,则第一服务器将所述至少两个自增计数请求消息指示的自增数目进行合并后,再进行后续操作。3.如权利要求1所述的方法,其特征在于,第一服务器根据所述标识信息,获取各第二服务器上对应该标识信息存储的计数结果,包括:第一服务器向所述标识信息对应的各第二服务器,发送携带该标识信息的副本获取请求消息,令每一个接收到所述标识信息的第二服务器,向第一服务器返回所述标识信息及第二服务器本地对应该标识信息保存的计数结果;或者,第一服务器向所述标识信息对应的各第二服务器,发送携带该标识信息及第一服务器对应该标识信息保存的计数结果的副本获取请求消息,令每一个接收到所述标识信息和计数结果的第二服务器,在确定第二服务器本地对应所述标识信息保存的计数结果的更新时间距当前时间的时长,小于接收的计数结果的更新时间距当前时间的时长时,向第一服务器返回所述标识信息及第二服务器本地对应该标识信息保存的计数结果。4.如权利要求3所述的方法,其特征在于,第一服务器发送副本获取请求消息后,确定针对该副本获取请求消息进行反馈的副本服务器的数目达到预设门限值时,根据获得的各计数结果中更新时间距当前时间的时长最小的计数结果执行自增计数操作。5.如权利要求1-4任一项所述的方法,其特征在于,第一服务器根据获得的各计数结果中更新时间距当前时间的时长最小的计数结果执行自增计数操作,包括:第一服务器根据获得的各计数结果中,时间截指示时间最晚的计数结果执行自增计数操作;或者,第一服务器根据获得的各计数结果中,版本号最大的计数结果执行自增计数操作。6.如权利要求5所述的方法,其特征在于,若服务终端确定协同服务器发生故障,则根据针对各副本服务器预设的优先级,选择优先级符合条件的一个副本服务器作为新的协同服务器。7.一种分布式自增计数的实现装置,其特征在于,包括:第一通信单元,用于接收服务终端发送的自增计数请求消息,该自增计数请求消息中携带用于指示操作内容的标识信息;获取单元,用于根据所述标识信息,获取本地对应该标识信息存储的计数结果,以及获取各第二服务器上对应该标识信息存储的计数结果,其中,本装置和第二服务器互为备份;执行单元,用于根据获得的各计数结果中更新时间距当前时间的时长最小的计数结果执行自增计数操作,获得更新后的计数结果;第二通信单元,用于将所述更新后的计数结果发往各第二服务器进行备份,并在确认超过设定数目的第二服务器备份成功时,确定当前自增计数操作成功。8.如权利要求7所述的装置,其特征在于,若所述第一通信单元接收到至少两个服务终端发送的携带同一标识信息的自增计数请求消息,则所述第一通信单元将所述至少两个自增计数请求消息指示的自增数目进行合并后,再进行后续操作。9.如权利要求7所述的装置,其特征在于,所述获取单元根据所述标识信息,获取各第二服务器上对应该标识信息存储的计数结果,包括:所述获取单元通过所述第二通信单元向所述标识信息对应的各第二服务器,发送携带该标识信息的副本获取请求消息,令每一个接收到所述标识信息的第二服务器,向本装置返回所述标识信息及第二服务器本地对应该标识信息保存的计数结果;或者,所述获取单元通过所述第二通信单元向所述标识信息对应的各第二服务器,发送携带该标识信息及本装置对应该标识信息保存的计数结果的副本获取请求消息,令每一个接收到所述标识信息和计数结果的第二服务器,在确定第二服务器本地对应所述标识信息保存的计数结果的更新时间距当前时间的时长,小于接收的计数结果的更新时间距当前时间的时长时,向本装置返回所述标识信息及第二服务器本地对应该标识信息保存的计数结果。10.如权利要求9所述的装置,其特征在于,所述获取单元通过所述第二通信单元发送副本获取请求消息后,所述执行单元确定针对该副本获取请求消息进行反馈的副本服务器的数目达到预设门限值时,根据获得的各计数结果中更新时间距当前时间的时长最小的计数结果执行自增计数操作。11.如权利要求7-10任一项所述的装置,其特征在于,所述执行单元根据获得的各计数结果中更新时间距当前时间的时长最小的计数结果执行自增计数操作,包括:所述执行单元根据获得的各计数结果中,时间截指示时间最晚的计数结果执行自增计数操作;或者,所述执行单元根据获得的各计数结果中,版本号最大的计数结果执行自增计数操作。12.一种分布式自增计数的实现系统,其特征在于,包括互为备份的第一服务器和第二服务器,其中,第一服务器,用于接收服务终端发送的自增计数请求消息,该自增计数请求消息中携带用于指示操作内容的标识信息,根据所述标识信息,获取本地对应该标识信息存储的计数结果,以及获取各第二服务器上对应该标识信息存储的计数结果,并根据获得的各计数结果中更新时间距当前时间的时长最小的计数结果执行自增计数操作,获得更新后的计数结果,再将所述更新后的计数结果发往各第二服务器进行备份,并在确认超过设定数目的第二服务器备份成功时,确定当前自增计数操作成功;第二服务器,用于根据第一服务器发送的标识信息,向第一服务器返回本地对应所述标识信息保存的计数结果,以及对第一服务器发送的更新后的计数结果进行备份,并向第一服务器返回备份结果。

说明书

一种分布式自增计数的实现方法、装置及系统

技术领域

本发明涉及云计算领域,特别涉及一种分布式自增计数的实现方法、装置
及系统。

背景技术

Cloud Computing(云计算)是Grid Computing(网格计算)、Distributed 
Computing(分布式计算)、Parallel Computing(并行计算)、Utility Computing
(效用计算)、Network Storage Technologies(网络存储)、Virtualization(虚
拟化)、Load Balance(负载均衡)等传统计算机技术和网络技术发展融合的
产物。Cloud Computing旨在通过网络把多个成本相对较低的计算实体整合成
一个具有强大计算能力的系统。

分布式缓存是云计算范畴中的一个领域,其作用是提供海量数据的分布式
存储服务以及高速读写访问的能力。分布式缓存系统是由若干服务器节点和服
务终端互相连接构成的;服务器节点负责数据的存储,服务终端可以对服务器
节点做数据的写入、读取、更新、删除等操作,例如,商店里的监视器(即服
务终端)针对每一个进入商店的顾客进行计数统计,并将统计结果上报至后台
的服务节点进行存储。一般来说,为了保证数据的安全性,服务终端写入的数
据不可能只保存在单个服务器节点(以下简称“节点”)上,而是在多台节点
上保存同一个数据的副本,互为备份。而存储的数据由Key(键)和Value(值)
构成,Key相当于数据的索引,例如,Key设置为“进入商店的顾客总数目,
而Value是Key所代表的数据内容,例如,Value为“10203人次”,在逻辑
上,Key和Value是一对一的关系,用于唯一标识某一形式的数据存储,这种
存储形式又称为分布式自增计数器。

分布式自增计数器用途很广泛,可以实现在分布式环境中进行数值的原子
加减运算,可以实现全局唯一序列号的生成,可以实现全局的统计计数功能等。
基于分布式自增计数器,应用可以实现许多复杂的功能。

目前,分布式自增计数器的准确性、并发性、可用性和效率是难以兼顾的
关键问题。现有技术下,通常保证了并发性和准确性的系统,无法实现高可用
性,如,在有任意一节点故障时,整体服务会间断,将故障节点的任务全部转
到其他节点上执行后,再恢复整体服务,这就往往要花费很长时间,从而在一
定程度上降低了分布式自增计数器的服务效率;进一步地,现有技术下,保证
了准确性和可用性的系统,无法实现多请求并发,如,同一个数值的多个自增
计数同时发到服务端时,只能允许一个请求成功,其他请求将返回失败,请求
失败的服务终端必须重试,这在一定程度上也降低了分布式自增计数器的服务
效率;再进一步地,保证了并发性和可用性的系统,无法保证准确性,如,多
个自增计数请求同时执行时,各服务器之间的计数结果未经协调,从而导致计
数结果不一致,影响其计数准确性。

鉴于上述现有技术的局限性,需要提供一种新的分布式自增计数的实现方
法,以克服上述技术缺陷。

发明内容

本发明实施例提供一种分布式自增计数的实现方法及装置,用以提高分布
式自增计数的执行效率,提升计数结果的准确性。

本发明实施例提供的具体技术方案如下:

一种分布式自增计数的实现方法,包括:

第一服务器接收服务终端发送的自增计数请求消息,该自增计数请求消息
中携带用于指示操作内容的标识信息;

第一服务器根据所述标识信息,获取本地对应该标识信息存储的计数结
果,以及获取各第二服务器上对应该标识信息存储的计数结果,其中,第一服
务器和第二服务器互为备份;

第一服务器根据获得的各计数结果中更新时间距当前时间的时长最小的
计数结果执行自增计数操作,获得更新后的计数结果;

第一服务器将所述更新后的计数结果发往各第二服务器进行备份,并在确
认超过设定数目的第二服务器备份成功时,确定当前自增计数操作成功。

一种分布式自增计数的实现装置,包括:

第一通信单元,用于接收服务终端发送的自增计数请求消息,该自增计数
请求消息中携带用于指示操作内容的标识信息;

获取单元,用于根据所述标识信息,获取本地对应该标识信息存储的计数
结果,以及获取各第二服务器上对应该标识信息存储的计数结果,其中,本装
置和第二服务器互为备份;

执行单元,用于根据获得的各计数结果中更新时间距当前时间的时长最小
的计数结果执行自增计数操作,获得更新后的计数结果;

第二通信单元,用于将所述更新后的计数结果发往各第二服务器进行备
份,并在确认超过设定数目的第二服务器备份成功时,确定当前自增计数操作
成功。

一种分布式自增计数的实现系统,包括互为备份的第一服务器和第二服务
器,其中,

第一服务器,用于接收服务终端发送的自增计数请求消息,该自增计数请
求消息中携带用于指示操作内容的标识信息,根据所述标识信息,获取本地对
应该标识信息存储的计数结果,以及获取各第二服务器上对应该标识信息存储
的计数结果,并根据获得的各计数结果中更新时间距当前时间的时长最小的计
数结果执行自增计数操作,获得更新后的计数结果,再将所述更新后的计数结
果发往各第二服务器进行备份,并在确认超过设定数目的第二服务器备份成功
时,确定当前自增计数操作成功;

第二服务器,用于根据第一服务器发送的标识信息,向第一服务器返回本
地对应所述标识信息保存的计数结果,以及对第一服务器发送的更新后的计数
结果进行备份,并向第一服务器返回备份结果。

本发明实施例中,针对云计算领域分布式缓存系统,提出了一种高效的分
布式自增计数的实现方法,具体为:针对一个自增计数器在多个服务器上保存
其计数结果的副本,每次执行自增计数操作时,在各服务器上针对同一自增计
数器保存的计数结果中选取出最新的计数结果执行自增计数操作,从而有效保
证了计数结果的准确性,同时,只需确认计数结果备份成功的服务器的数目达
到设定阈值,便可确定当前自增计数操作成功,从而在一定程度上提高了自增
计数操作的执行效率,并且当某服务器出现故障时只要正常工作的服务器的数
目达到设置的门限值,就不会影响分布式缓存系统的正常工作,进而有效提高
了分布式缓存系统的稳定性、安全性及可用性。

附图说明

图1为本发明实施例中分布式缓存系统体系架构图;

图2为本发明实施例中协同服务器功能架构示意图;

图3为本发明实施例中实现自增计数操作概述流程图;

图4为本发明实施例中实现自增计数操作举例流程图。

具体实施方式

在分布式缓存系统中,为了提供可用的高效的自增计数服务,令某服务器
发生临时故障时不影响系统的整体服务性能,本发明实施例中,提供了一种高
效的分布式自增计数的方法,具体为:在服务器端采用多副本机制,即针对同
一个自增计数器在多个服务器上保存其数据副本,每次执行自增计数操作时,
执行自增计数操作成功的服务器的数目达到预设门限值,则视为系统整体执行
自增操作成功;与现在技术相比,本发明实施例的优势在于,当某服务器出现
故障时只要正常工作的服务器的数目达到设置的门限值,就不会影响分布式缓
存系统的正常工作。

下面结合附图对本发明优选的实施方式进行详细介绍。

参阅图1所示,本发明实施例中,分布式缓存系统中设置有多个互为备份
的服务器,其中,

第一服务器,又称为协同服务器,用于接收服务终端发送的自增计数请求
消息,该自增计数请求消息中携带用于指示操作内容的标识信息,根据所述标
识信息,获取本地对应该标识信息存储的计数结果,以及获取各副本服务器上
对应该标识信息存储的计数结果,并根据获得的各计数结果中更新时间距当前
时间的时长最小的计数结果执行自增计数操作,获得更新后的计数结果,再将
所述更新后的计数结果发往各副本服务器进行备份,并在确认超过设定数目的
副本服务器备份成功时,确定当前自增计数操作成功;

第二服务器,又称为副本服务器,用于根据协同服务器发送的标识信息,
向协同服务器返回本地对应所述标识信息保存的计数结果,以及对协同服务器
发送的更新后的计数结果进行备份,并向协同服务器返回备份结果。

如图1所示,服务终端和多个服务器(包括协同服务器和副本服务器)之
间建立连接,多个服务器之间同样互相建立连接并且运行正常,其中,当某一
个Key及相应的Value被保存在多个服务器上后,其中一个服务器将在后续的
自增计数操作中被服务终端选定为协同服务器,其余的服务器则称为副本服务
器,协同服务器和副本服务器互为备份,即这些服务器上有存储有保存有相同
的一个Key和对应的Value,针对不同的Key及Value,服务终端选定的协同
服务器和副本服务器可以相同,也可以不同,而针对同一个Key及Value,在
不同的自增计数操作流程中,服务终端选定的协同服务器和副本服务器可以相
同,也可以不相同。

在实际应用中,若某一个Key(称为Key A)对应的协同服务器发生了故
障,则系统可以在相应的副本服务器中按照优先级从高到低的顺序选择一个优
先级符合要求的副本服务器作为新的协同服务器,如,选取优先级最高/次高/
第三高/......的副本服务器作为新的协同服务器,其他副本服务器则仍然作为副
本服务器,这样,新的协同服务器和副本服务器之间仍然互为备份,从而有效
缩短了故障排除的历时时长,也不会影响后续自增计数操作的执行结果。

通过上述技术方案可以获知,本实施例中,针对同一个Key,在不同的自
增操作流程中,服务终端选择的协同服务器可能不相同,以及,在协同服务器
发生故障时,服务终端可以在副本服务器中重新选择一个作为协同服务器,因
此,基于这种执行方式,有可能出现以下情况:协同服务器上对应Key A保存
的Value不是最新数据,即协同服务器上对应Key A保存的Value的更新时间
距当前时间的时长,大于某一副本服务器上对应Key A保存的Value的更新时
间距当前时间的时长,因此,协同服务器在执行自增计数操作时,便需要综合
考虑各副本服务器上对应Key A保存的Value的相关信息,这一点将在后续实
施例中进行进一步介绍。

参阅图2所示,本发明实施例中,协同服务器第一通信单元20、获取单元
21、执行单元22和第二通信单元23,其中,

第一通信单元20,用于接收服务终端发送的自增计数请求消息,该自增计
数请求消息中携带用于指示操作内容的标识信息;

获取单元21,用于根据所述标识信息,获取本地对应该标识信息存储的计
数结果,以及获取各副本服务器上对应该标识信息存储的计数结果;

执行单元22,用于根据获得的各计数结果中更新时间距当前时间的时长最
小的计数结果执行自增计数操作,获得更新后的计数结果;

第二通信单元23,用于将所述更新后的计数结果发往各副本服务器进行备
份,并在确认超过设定数目的副本服务器备份成功时,确定当前自增计数操作
成功。

基于上述技术方案,参阅图3所示,本发明实施例中,在分布式缓存系统
内,实现自增计数操作的详细流程如下:

步骤300:服务终端发起计数器自增操作,向选定的协同服务器发送自增
计数请求消息,该自增计数请求消息中携带有自增计数操作对应的标识信息,
即Key,以下称为Key A。

本发明实施例中,服务终端可以根据Key A表示的自增计数操作内容选择
一台服务器节点,并将自增计数请求消息发送至选定的服务器,该选定的服务
器被称作本次操作的协同服务器,对于不同的Key,服务终端选定的协同服务
器可能相同,也可能不同。

例如,服务终端为商店的监视器,当该监视器确定有新的顾客进入商店时,
向后台选定的一台协同服务器发送自增计数请求消息,该自增计数请求消息中
携带的Key A表示当前自增计数操作内容为“进入商店的顾客总数目”。

步骤310:协同服务器根据获得的Key A,获取本地对应Key A存储的计
数结果,即Value,以及获取各副本服务器上对应Key A存储的Value。

在执行步骤310时,协同服务器接收到服务终端发送的携带有Key的自增
计数请求消息后,尝试从本地读取该Key对应的Value,并向同样保存有该Key
的服务器发送副本读取请求消息,其中,同样保存有上述Key的服务器在称为
本次操作的副本服务器,具体为:协同服务器向KeyA对应的各副本服务器发
送副本获取请求消息,该副本获取请求消息中至少携带有Key A,令部分/全部
副本服务器返回其本地对应Key A保存的Value,具体实现方式包含但不限于
以下两种:

A、协同服务器向Key A对应的各副本服务器发送携带Key A的副本获取
请求消息,每一个副本服务器接收到Key A后,均将Key A及本地对应Key A
保存的Value返回至协同服务器(副本服务器向协同服务器返回Key A,是为
了令协同服务器明确接收的是哪个Key的value)。通过执行方式A,可以获得
最全面的数据,从而执行最为准确的自增计数操作。

另一方面,若接收到携带上述Key的副本获取请求消息的副本服务器上未
保存有对应该Key的Value,则副本服务器向协同服务器通知未保存有相关数
据即可,在此不再赘述。

B、协同服务器向Key A对应的各副本服务器发送携带Key A及相应Value
(协同服务器保存的Value)的副本获取请求消息,每一个副本服务器接收到
Key A和Value后,均判断本地对应Key A保存的Value的更新时间距当前时
间的时长是否小于接收的Value的更新时间距当前时间的时长,若是,则向协
同服务器返回Key A及本地对应Key A保存的Value,否则,仅向协同服务器
返回Key A。通过执行方式B,可以有效降低网络数据流量,减轻网络运行负
荷。

实际应用中,无论执行方式A还是方式B,为了提高处理效率,同时为了
避免因某些副本服务器出现临时故障而导致自增计数操作中断,较佳的,协同
服务器发送副本获取请求消息后,不必等到接收到全部副本服务器的反馈信息
后再执行后续操作,而是在确定返回Key A及相应Value或/和返回Key A的副
本服务器的数目达到设定的门限值(称为门限值X)时,便开始执行后续操作,
即协同服务器发送副本获取请求消息后,确定针对该副本获取请求消息进行反
馈的副本服务器的数目达到门限值X,则开始执行步骤320。

步骤320:协同服务器根据获得的各Value中更新时间距当前时间的时长
最小的Value执行自增计数操作,获得更新后的Value。

本发明实施例中,在步骤320中,协同服务器判断Value的更新时间与当
前时间之间的时长的方式有多种,例如,根据对应Value记录的时间戳来确定
其更新时间距当前时间的时长,时间截记录的时间越晚,表示更新时间距当前
时间的时长越短;又例如,据对应Value记录的版本号来确定其更新时间距当
前时间的时长,版本号越大,表示更新时间距当前时间的时长越短;这两种实
现方式仅为举例,但并不局限于这两种实现方式,在此不再赘述。协同服务器
在进行自增计数操作时均执行上述判断操作,可以有效保证自增计数操作中系
统的数据一致性,从而保证更新后的Value的准确性。

另一方面,若在步骤300中,多个服务终端向协同服务器发送针对同一自
增计数器的自增计数请求消息,即协同服务器接收到来自于多个服务终端的携
带有相同Key的自增计数请求消息,则协同服务器需要先将接收的多个自增计
数请求消息指示的自增数目进行合并,再执行后续操作;其中,合并操作可以
在接收到自增计数请求消息后立即执行,也可以在获得各Value后,在进行自
增计数操作之前执行,在此不再赘述。例如,若协同服务器接收到来自于100
个服务终端的携带Key A的自增计数请求消息,每条自增计数请求消息均请求
自增数目为1,则协同服务器将自增数目合并为100后,再对当前获取的最新
的Value进行自增计数操作,即在当前最新的Value上添加100作为更新后的
Value;相应的,协同服务器在向任意一服务终端反馈更新的Value时,只需要
减去其他服务终端请求的自增数目即可。这样,现有技术下需要进行一百次的
操作在本实施例中可以一次性解决,大大节省了自增计数操作的操作时间,提
高了自增计数操作的执行效率,

步骤330:协同服务器将更新后的Value发往各副本服务器进行备份,较
佳的,应当将KeyA和更新后的Value一同发送,并在确认超过设定数目的第
二服务器备份成功时,确认当前自增计数操作成功。

在执行步骤330的过程中,每一个副本服务器在接收到服务器发送的更新
后的Value后,需判断接收的更新后的Vlaue的更新时间距当前时间的时长,
是否小于副本服务器本地对应Key A保存的Value的更新时间距当前时间的时
长,若是,则保存更新后的Value,并通知协同服务器备份成功;否则,不保
存数据,并通知协同服务器备份失败。每一个副本服务器在进行备份时均执行
上述判断操作,可以加强自增计数操作中系统的数据一致性,从而保证更新后
的Value的准确性。较佳的,为了提高系统的执行效率,协同服务器不必等到
接收到全部副本服务器的反馈信息后再确定自增计数操作成功,而是在确认备
份成功的副本服务器的数目达到设定的门限值(称为门限值Y)时,便可确认
当前自增计数操作成功,此处的门限值Y与之前记载的门限值X的取值可以
相同,也可以不同。

在上述实施例中,若选定的协同服务器发生故障,则服务终端可以根据针
对各副本服务器预设的优先级,选择优先级符合条件的一个副本服务器作为新
的协同服务器来执行当前的自增计数操作,不会影响最后的执行结果,这样,
有效提高了分布式缓存系统的稳定性和安全性。而若各副本服务器中的某些副
本服务器发生故障,则只要未发生故障的副本服务器的数目达到门限值X或/
和门限值Y,便不会影响自增计数操作的整体流程,即只要不影响协同服务器
向各副本服务器获取其保存的Value,以及不影响协同服务器接收备份服务器
返回的表示自增计数操作成功的响应,则备份服务器的故障不会影响分布式缓
存系统中的自增计数器的工作性能。这样,便进一步有效提高了分布式缓存系
统的稳定性和安全性。

基于上述实施例,参阅图4所示,假设分布式缓存系统中设置有一个服务
终端,一个协同服务器,以及两个副本服务器,分别称为副本服务器1和副本
服务器2,其中,协同服务器中保存的自增计数相关数据为Key B-Value0,
副本服务器1中保存的自增计数相关数据为Key B-Value1,而副本服务器2
中保存的自增计数相关数据为Key B-Value2,Key B表示“使用ATM终端的
顾客数目”,Value0取值为“150”、Value1取值为“148”、Value2取值为“152”,
则实现自增计数操作的具体流程如下:

步骤400:服务终端向协同服务器发送携带Key B的自增计数请求消息,
假设请求自增的计数数目为1。

步骤401:协同服务器获取本地对应Key B保存的Value0。

步骤402:协同服务器向副本服务器1发送至少携带Key B的副本获取请
求消息。

步骤403:协同服务器向副本服务器2发送至少携带Key B的副本获取请
求消息。

步骤404:副本服务器1获取本地对应Key B保存的Value1。

步骤405:副本服务器2获取本地对应Key B保存的Value2。

步骤406:副本服务器2向协同服务器返回Value2。

步骤407:副本服务器1向协同服务器返回Value1。

如图4所示,本实施例中,步骤402、步骤404、步骤407,和步骤403、
步骤405、步骤406可以是并行执行或先后执行的关系,在此并不限制其执行
顺序。

步骤408:协同服务器比较Value0、Value1和Value2的更新时间,确定
最新的计数结果为Value2,即取值为“152”。

步骤409:协同服务器基于Value2以及请求自增的计数数目执行自增计数
操作,获得更新后的Value3,其取值为“153”。

步骤410:协同服务器向副本服务器1发送携带Value3的备份请求消息。

步骤411:协同服务器向副本服务器2发送携带Value3的备份请求消息。

步骤412:副本服务器1对应Key B保存最新的Value3。

步骤413:副本服务器1向协同服务器返回操作成功响应。

步骤414:副本服务器2对应Key B保存最新的Value3。

步骤415:副本服务器2向协同服务器返回操作成功响应。

如图4所示,本实施例中,步骤410、步骤412、步骤413,和步骤411、
步骤414、步骤415可以是并行执行或先后执行的关系,在此并不限制其执行
顺序。

步骤416:协同服务器确定返回操作成功响应的副本服务器达到预设门限
值(如,门限值为1)。

如图4所示,本实施例中,在执行步骤416时,若协同服务器确定返回操
作成功响应的副本服务器未达到预设门限值,则可以返回步骤401进行失败重
试,并在重试次数达到设定阈值且仍未成功执行自增计数操作时,结束当前流
程并对服务终端进行告警,在此不再赘述。

步骤417:协同服务器向服务终端返回自增计数结果,即Value3。

综上所述,本发明实施例中,针对云计算领域分布式缓存系统,提出了一
种高效的分布式自增计数的实现方法,具体为:针对一个自增计数器在多个服
务器上保存其计数结果的副本,每次执行自增计数操作时,在各服务器上针对
同一自增计数器保存的计数结果中选取出最新的计数结果执行自增计数操作,
从而有效保证了计数结果的准确性,同时,只需确认计数结果备份成功的服务
器的数目达到设定阈值,便可确定当前自增计数操作成功,从而在一定程度上
提高了自增计数操作的执行效率,并且当某服务器出现故障时只要正常工作的
服务器的数目达到设置的门限值,就不会影响分布式缓存系统的正常工作,进
而有效提高了分布式缓存系统的稳定性、安全性及可用性;进一步地,还可以
对针对同一自增计数器的多个自增计数请求进行合并处理,从而进一步提高了
自增计数操作的执行效率。这样,便满足了分布式缓存系统对分布式自增计数
器的可用性、高效性、并发性和准确性的要求。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发
明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及
其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

一种分布式自增计数的实现方法、装置及系统.pdf_第1页
第1页 / 共14页
一种分布式自增计数的实现方法、装置及系统.pdf_第2页
第2页 / 共14页
一种分布式自增计数的实现方法、装置及系统.pdf_第3页
第3页 / 共14页
点击查看更多>>
资源描述

《一种分布式自增计数的实现方法、装置及系统.pdf》由会员分享,可在线阅读,更多相关《一种分布式自增计数的实现方法、装置及系统.pdf(14页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 102833281 A (43)申请公布日 2012.12.19 C N 1 0 2 8 3 3 2 8 1 A *CN102833281A* (21)申请号 201110160425.5 (22)申请日 2011.06.15 H04L 29/08(2006.01) (71)申请人中兴通讯股份有限公司 地址 518057 广东省深圳市南山区高新技术 产业园科技南路中兴通讯大厦法务部 (72)发明人陈典强 郭斌 韩银俊 (74)专利代理机构北京同达信恒知识产权代理 有限公司 11291 代理人黄志华 (54) 发明名称 一种分布式自增计数的实现方法、装置及系 统 (57。

2、) 摘要 本发明涉及云计算领域,公开了一种分布式 自增计数的实现方法、装置及系统,用以提高分布 式自增计数的执行效率,提升计数结果的准确性。 该方法为:在云计算领域分布式缓存系统中,针 对一个自增计数器在多个服务器上保存其计数结 果的副本,每次执行自增计数操作时,在各服务器 上针对同一自增计数器保存的计数结果中选取出 最新的计数结果执行自增计数操作,从而有效保 证了计数结果的准确性,同时,只需确认计数结果 备份成功的服务器的数目达到设定阈值,便可确 定当前自增计数操作成功,从而在一定程度上提 高了自增计数操作的执行效率。 (51)Int.Cl. 权利要求书3页 说明书7页 附图3页 (19)中。

3、华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 3 页 说明书 7 页 附图 3 页 1/3页 2 1.一种分布式自增计数的实现方法,其特征在于,包括: 第一服务器接收服务终端发送的自增计数请求消息,该自增计数请求消息中携带用于 指示操作内容的标识信息; 第一服务器根据所述标识信息,获取本地对应该标识信息存储的计数结果,以及获取 各第二服务器上对应该标识信息存储的计数结果,其中,第一服务器和第二服务器互为备 份; 第一服务器根据获得的各计数结果中更新时间距当前时间的时长最小的计数结果执 行自增计数操作,获得更新后的计数结果; 第一服务器将所述更新后的计数结果发往各第二服务器进行备。

4、份,并在确认超过设定 数目的第二服务器备份成功时,确定当前自增计数操作成功。 2.如权利要求1所述的方法,其特征在于,若第一服务器接收到至少两个服务终端发 送的携带同一标识信息的自增计数请求消息,则第一服务器将所述至少两个自增计数请求 消息指示的自增数目进行合并后,再进行后续操作。 3.如权利要求1所述的方法,其特征在于,第一服务器根据所述标识信息,获取各第二 服务器上对应该标识信息存储的计数结果,包括: 第一服务器向所述标识信息对应的各第二服务器,发送携带该标识信息的副本获取请 求消息,令每一个接收到所述标识信息的第二服务器,向第一服务器返回所述标识信息及 第二服务器本地对应该标识信息保存的。

5、计数结果; 或者, 第一服务器向所述标识信息对应的各第二服务器,发送携带该标识信息及第一服务器 对应该标识信息保存的计数结果的副本获取请求消息,令每一个接收到所述标识信息和计 数结果的第二服务器,在确定第二服务器本地对应所述标识信息保存的计数结果的更新时 间距当前时间的时长,小于接收的计数结果的更新时间距当前时间的时长时,向第一服务 器返回所述标识信息及第二服务器本地对应该标识信息保存的计数结果。 4.如权利要求3所述的方法,其特征在于,第一服务器发送副本获取请求消息后,确定 针对该副本获取请求消息进行反馈的副本服务器的数目达到预设门限值时,根据获得的各 计数结果中更新时间距当前时间的时长最小。

6、的计数结果执行自增计数操作。 5.如权利要求1-4任一项所述的方法,其特征在于,第一服务器根据获得的各计数结 果中更新时间距当前时间的时长最小的计数结果执行自增计数操作,包括: 第一服务器根据获得的各计数结果中,时间截指示时间最晚的计数结果执行自增计数 操作; 或者, 第一服务器根据获得的各计数结果中,版本号最大的计数结果执行自增计数操作。 6.如权利要求5所述的方法,其特征在于,若服务终端确定协同服务器发生故障,则根 据针对各副本服务器预设的优先级,选择优先级符合条件的一个副本服务器作为新的协同 服务器。 7.一种分布式自增计数的实现装置,其特征在于,包括: 第一通信单元,用于接收服务终端发。

7、送的自增计数请求消息,该自增计数请求消息中 携带用于指示操作内容的标识信息; 权 利 要 求 书CN 102833281 A 2/3页 3 获取单元,用于根据所述标识信息,获取本地对应该标识信息存储的计数结果,以及 获取各第二服务器上对应该标识信息存储的计数结果,其中,本装置和第二服务器互为备 份; 执行单元,用于根据获得的各计数结果中更新时间距当前时间的时长最小的计数结果 执行自增计数操作,获得更新后的计数结果; 第二通信单元,用于将所述更新后的计数结果发往各第二服务器进行备份,并在确认 超过设定数目的第二服务器备份成功时,确定当前自增计数操作成功。 8.如权利要求7所述的装置,其特征在于,。

8、若所述第一通信单元接收到至少两个服务 终端发送的携带同一标识信息的自增计数请求消息,则所述第一通信单元将所述至少两个 自增计数请求消息指示的自增数目进行合并后,再进行后续操作。 9.如权利要求7所述的装置,其特征在于,所述获取单元根据所述标识信息,获取各第 二服务器上对应该标识信息存储的计数结果,包括: 所述获取单元通过所述第二通信单元向所述标识信息对应的各第二服务器,发送携带 该标识信息的副本获取请求消息,令每一个接收到所述标识信息的第二服务器,向本装置 返回所述标识信息及第二服务器本地对应该标识信息保存的计数结果; 或者, 所述获取单元通过所述第二通信单元向所述标识信息对应的各第二服务器,。

9、发送携带 该标识信息及本装置对应该标识信息保存的计数结果的副本获取请求消息,令每一个接收 到所述标识信息和计数结果的第二服务器,在确定第二服务器本地对应所述标识信息保存 的计数结果的更新时间距当前时间的时长,小于接收的计数结果的更新时间距当前时间的 时长时,向本装置返回所述标识信息及第二服务器本地对应该标识信息保存的计数结果。 10.如权利要求9所述的装置,其特征在于,所述获取单元通过所述第二通信单元发送 副本获取请求消息后,所述执行单元确定针对该副本获取请求消息进行反馈的副本服务器 的数目达到预设门限值时,根据获得的各计数结果中更新时间距当前时间的时长最小的计 数结果执行自增计数操作。 11。

10、.如权利要求7-10任一项所述的装置,其特征在于,所述执行单元根据获得的各计 数结果中更新时间距当前时间的时长最小的计数结果执行自增计数操作,包括: 所述执行单元根据获得的各计数结果中,时间截指示时间最晚的计数结果执行自增计 数操作; 或者, 所述执行单元根据获得的各计数结果中,版本号最大的计数结果执行自增计数操作。 12.一种分布式自增计数的实现系统,其特征在于,包括互为备份的第一服务器和第二 服务器,其中, 第一服务器,用于接收服务终端发送的自增计数请求消息,该自增计数请求消息中携 带用于指示操作内容的标识信息,根据所述标识信息,获取本地对应该标识信息存储的计 数结果,以及获取各第二服务器。

11、上对应该标识信息存储的计数结果,并根据获得的各计数 结果中更新时间距当前时间的时长最小的计数结果执行自增计数操作,获得更新后的计数 结果,再将所述更新后的计数结果发往各第二服务器进行备份,并在确认超过设定数目的 第二服务器备份成功时,确定当前自增计数操作成功; 权 利 要 求 书CN 102833281 A 3/3页 4 第二服务器,用于根据第一服务器发送的标识信息,向第一服务器返回本地对应所述 标识信息保存的计数结果,以及对第一服务器发送的更新后的计数结果进行备份,并向第 一服务器返回备份结果。 权 利 要 求 书CN 102833281 A 1/7页 5 一种分布式自增计数的实现方法、 装。

12、置及系统 技术领域 0001 本发明涉及云计算领域,特别涉及一种分布式自增计数的实现方法、装置及系统。 背景技术 0002 Cloud Computing(云计算)是Grid Computing(网格计算)、Distributed Computing(分布式计算)、Parallel Computing(并行计算)、Utility Computing(效用 计算)、Network Storage Technologies(网络存储)、Virtualization(虚拟化)、Load Balance(负载均衡)等传统计算机技术和网络技术发展融合的产物。Cloud Computing旨 在通过网络把。

13、多个成本相对较低的计算实体整合成一个具有强大计算能力的系统。 0003 分布式缓存是云计算范畴中的一个领域,其作用是提供海量数据的分布式存储服 务以及高速读写访问的能力。分布式缓存系统是由若干服务器节点和服务终端互相连接构 成的;服务器节点负责数据的存储,服务终端可以对服务器节点做数据的写入、读取、更新、 删除等操作,例如,商店里的监视器(即服务终端)针对每一个进入商店的顾客进行计数统 计,并将统计结果上报至后台的服务节点进行存储。一般来说,为了保证数据的安全性,服 务终端写入的数据不可能只保存在单个服务器节点(以下简称“节点”)上,而是在多台节 点上保存同一个数据的副本,互为备份。而存储的数。

14、据由Key(键)和Value(值)构成, Key相当于数据的索引,例如,Key设置为“进入商店的顾客总数目,而Value是Key所代表 的数据内容,例如,Value为“10203人次”,在逻辑上,Key和Value是一对一的关系,用于唯 一标识某一形式的数据存储,这种存储形式又称为分布式自增计数器。 0004 分布式自增计数器用途很广泛,可以实现在分布式环境中进行数值的原子加减运 算,可以实现全局唯一序列号的生成,可以实现全局的统计计数功能等。基于分布式自增计 数器,应用可以实现许多复杂的功能。 0005 目前,分布式自增计数器的准确性、并发性、可用性和效率是难以兼顾的关键问 题。现有技术下,。

15、通常保证了并发性和准确性的系统,无法实现高可用性,如,在有任意一节 点故障时,整体服务会间断,将故障节点的任务全部转到其他节点上执行后,再恢复整体服 务,这就往往要花费很长时间,从而在一定程度上降低了分布式自增计数器的服务效率;进 一步地,现有技术下,保证了准确性和可用性的系统,无法实现多请求并发,如,同一个数值 的多个自增计数同时发到服务端时,只能允许一个请求成功,其他请求将返回失败,请求失 败的服务终端必须重试,这在一定程度上也降低了分布式自增计数器的服务效率;再进一 步地,保证了并发性和可用性的系统,无法保证准确性,如,多个自增计数请求同时执行时, 各服务器之间的计数结果未经协调,从而导。

16、致计数结果不一致,影响其计数准确性。 0006 鉴于上述现有技术的局限性,需要提供一种新的分布式自增计数的实现方法,以 克服上述技术缺陷。 发明内容 0007 本发明实施例提供一种分布式自增计数的实现方法及装置,用以提高分布式自增 说 明 书CN 102833281 A 2/7页 6 计数的执行效率,提升计数结果的准确性。 0008 本发明实施例提供的具体技术方案如下: 0009 一种分布式自增计数的实现方法,包括: 0010 第一服务器接收服务终端发送的自增计数请求消息,该自增计数请求消息中携带 用于指示操作内容的标识信息; 0011 第一服务器根据所述标识信息,获取本地对应该标识信息存储的。

17、计数结果,以及 获取各第二服务器上对应该标识信息存储的计数结果,其中,第一服务器和第二服务器互 为备份; 0012 第一服务器根据获得的各计数结果中更新时间距当前时间的时长最小的计数结 果执行自增计数操作,获得更新后的计数结果; 0013 第一服务器将所述更新后的计数结果发往各第二服务器进行备份,并在确认超过 设定数目的第二服务器备份成功时,确定当前自增计数操作成功。 0014 一种分布式自增计数的实现装置,包括: 0015 第一通信单元,用于接收服务终端发送的自增计数请求消息,该自增计数请求消 息中携带用于指示操作内容的标识信息; 0016 获取单元,用于根据所述标识信息,获取本地对应该标识。

18、信息存储的计数结果,以 及获取各第二服务器上对应该标识信息存储的计数结果,其中,本装置和第二服务器互为 备份; 0017 执行单元,用于根据获得的各计数结果中更新时间距当前时间的时长最小的计数 结果执行自增计数操作,获得更新后的计数结果; 0018 第二通信单元,用于将所述更新后的计数结果发往各第二服务器进行备份,并在 确认超过设定数目的第二服务器备份成功时,确定当前自增计数操作成功。 0019 一种分布式自增计数的实现系统,包括互为备份的第一服务器和第二服务器,其 中, 0020 第一服务器,用于接收服务终端发送的自增计数请求消息,该自增计数请求消息 中携带用于指示操作内容的标识信息,根据所。

19、述标识信息,获取本地对应该标识信息存储 的计数结果,以及获取各第二服务器上对应该标识信息存储的计数结果,并根据获得的各 计数结果中更新时间距当前时间的时长最小的计数结果执行自增计数操作,获得更新后的 计数结果,再将所述更新后的计数结果发往各第二服务器进行备份,并在确认超过设定数 目的第二服务器备份成功时,确定当前自增计数操作成功; 0021 第二服务器,用于根据第一服务器发送的标识信息,向第一服务器返回本地对应 所述标识信息保存的计数结果,以及对第一服务器发送的更新后的计数结果进行备份,并 向第一服务器返回备份结果。 0022 本发明实施例中,针对云计算领域分布式缓存系统,提出了一种高效的分布。

20、式自 增计数的实现方法,具体为:针对一个自增计数器在多个服务器上保存其计数结果的副本, 每次执行自增计数操作时,在各服务器上针对同一自增计数器保存的计数结果中选取出最 新的计数结果执行自增计数操作,从而有效保证了计数结果的准确性,同时,只需确认计数 结果备份成功的服务器的数目达到设定阈值,便可确定当前自增计数操作成功,从而在一 定程度上提高了自增计数操作的执行效率,并且当某服务器出现故障时只要正常工作的服 说 明 书CN 102833281 A 3/7页 7 务器的数目达到设置的门限值,就不会影响分布式缓存系统的正常工作,进而有效提高了 分布式缓存系统的稳定性、安全性及可用性。 附图说明 00。

21、23 图1为本发明实施例中分布式缓存系统体系架构图; 0024 图2为本发明实施例中协同服务器功能架构示意图; 0025 图3为本发明实施例中实现自增计数操作概述流程图; 0026 图4为本发明实施例中实现自增计数操作举例流程图。 具体实施方式 0027 在分布式缓存系统中,为了提供可用的高效的自增计数服务,令某服务器发生临 时故障时不影响系统的整体服务性能,本发明实施例中,提供了一种高效的分布式自增计 数的方法,具体为:在服务器端采用多副本机制,即针对同一个自增计数器在多个服务器上 保存其数据副本,每次执行自增计数操作时,执行自增计数操作成功的服务器的数目达到 预设门限值,则视为系统整体执行。

22、自增操作成功;与现在技术相比,本发明实施例的优势在 于,当某服务器出现故障时只要正常工作的服务器的数目达到设置的门限值,就不会影响 分布式缓存系统的正常工作。 0028 下面结合附图对本发明优选的实施方式进行详细介绍。 0029 参阅图1所示,本发明实施例中,分布式缓存系统中设置有多个互为备份的服务 器,其中, 0030 第一服务器,又称为协同服务器,用于接收服务终端发送的自增计数请求消息, 该自增计数请求消息中携带用于指示操作内容的标识信息,根据所述标识信息,获取本地 对应该标识信息存储的计数结果,以及获取各副本服务器上对应该标识信息存储的计数结 果,并根据获得的各计数结果中更新时间距当前时。

23、间的时长最小的计数结果执行自增计数 操作,获得更新后的计数结果,再将所述更新后的计数结果发往各副本服务器进行备份,并 在确认超过设定数目的副本服务器备份成功时,确定当前自增计数操作成功; 0031 第二服务器,又称为副本服务器,用于根据协同服务器发送的标识信息,向协同服 务器返回本地对应所述标识信息保存的计数结果,以及对协同服务器发送的更新后的计数 结果进行备份,并向协同服务器返回备份结果。 0032 如图1所示,服务终端和多个服务器(包括协同服务器和副本服务器)之间建 立连接,多个服务器之间同样互相建立连接并且运行正常,其中,当某一个Key及相应的 Value被保存在多个服务器上后,其中一个。

24、服务器将在后续的自增计数操作中被服务终 端选定为协同服务器,其余的服务器则称为副本服务器,协同服务器和副本服务器互为备 份,即这些服务器上有存储有保存有相同的一个Key和对应的Value,针对不同的Key及 Value,服务终端选定的协同服务器和副本服务器可以相同,也可以不同,而针对同一个Key 及Value,在不同的自增计数操作流程中,服务终端选定的协同服务器和副本服务器可以相 同,也可以不相同。 0033 在实际应用中,若某一个Key(称为Key A)对应的协同服务器发生了故障,则系统 可以在相应的副本服务器中按照优先级从高到低的顺序选择一个优先级符合要求的副本 说 明 书CN 10283。

25、3281 A 4/7页 8 服务器作为新的协同服务器,如,选取优先级最高/次高/第三高/的副本服务器作 为新的协同服务器,其他副本服务器则仍然作为副本服务器,这样,新的协同服务器和副本 服务器之间仍然互为备份,从而有效缩短了故障排除的历时时长,也不会影响后续自增计 数操作的执行结果。 0034 通过上述技术方案可以获知,本实施例中,针对同一个Key,在不同的自增操作流 程中,服务终端选择的协同服务器可能不相同,以及,在协同服务器发生故障时,服务终端 可以在副本服务器中重新选择一个作为协同服务器,因此,基于这种执行方式,有可能出现 以下情况:协同服务器上对应Key A保存的Value不是最新数据。

26、,即协同服务器上对应Key A保存的Value的更新时间距当前时间的时长,大于某一副本服务器上对应Key A保存的 Value的更新时间距当前时间的时长,因此,协同服务器在执行自增计数操作时,便需要综 合考虑各副本服务器上对应Key A保存的Value的相关信息,这一点将在后续实施例中进 行进一步介绍。 0035 参阅图2所示,本发明实施例中,协同服务器第一通信单元20、获取单元21、执行 单元22和第二通信单元23,其中, 0036 第一通信单元20,用于接收服务终端发送的自增计数请求消息,该自增计数请求 消息中携带用于指示操作内容的标识信息; 0037 获取单元21,用于根据所述标识信息,。

27、获取本地对应该标识信息存储的计数结果, 以及获取各副本服务器上对应该标识信息存储的计数结果; 0038 执行单元22,用于根据获得的各计数结果中更新时间距当前时间的时长最小的计 数结果执行自增计数操作,获得更新后的计数结果; 0039 第二通信单元23,用于将所述更新后的计数结果发往各副本服务器进行备份,并 在确认超过设定数目的副本服务器备份成功时,确定当前自增计数操作成功。 0040 基于上述技术方案,参阅图3所示,本发明实施例中,在分布式缓存系统内,实现 自增计数操作的详细流程如下: 0041 步骤300:服务终端发起计数器自增操作,向选定的协同服务器发送自增计数请 求消息,该自增计数请求。

28、消息中携带有自增计数操作对应的标识信息,即Key,以下称为Key A。 0042 本发明实施例中,服务终端可以根据Key A表示的自增计数操作内容选择一台服 务器节点,并将自增计数请求消息发送至选定的服务器,该选定的服务器被称作本次操作 的协同服务器,对于不同的Key,服务终端选定的协同服务器可能相同,也可能不同。 0043 例如,服务终端为商店的监视器,当该监视器确定有新的顾客进入商店时,向后台 选定的一台协同服务器发送自增计数请求消息,该自增计数请求消息中携带的Key A表示 当前自增计数操作内容为“进入商店的顾客总数目”。 0044 步骤310:协同服务器根据获得的Key A,获取本地对。

29、应Key A存储的计数结果,即 Value,以及获取各副本服务器上对应Key A存储的Value。 0045 在执行步骤310时,协同服务器接收到服务终端发送的携带有Key的自增计数请 求消息后,尝试从本地读取该Key对应的Value,并向同样保存有该Key的服务器发送副 本读取请求消息,其中,同样保存有上述Key的服务器在称为本次操作的副本服务器,具体 为:协同服务器向KeyA对应的各副本服务器发送副本获取请求消息,该副本获取请求消息 说 明 书CN 102833281 A 5/7页 9 中至少携带有Key A,令部分/全部副本服务器返回其本地对应Key A保存的Value,具体 实现方式包。

30、含但不限于以下两种: 0046 A、协同服务器向Key A对应的各副本服务器发送携带Key A的副本获取请求消 息,每一个副本服务器接收到Key A后,均将Key A及本地对应Key A保存的Value返回至 协同服务器(副本服务器向协同服务器返回Key A,是为了令协同服务器明确接收的是哪 个Key的value)。通过执行方式A,可以获得最全面的数据,从而执行最为准确的自增计数 操作。 0047 另一方面,若接收到携带上述Key的副本获取请求消息的副本服务器上未保存有 对应该Key的Value,则副本服务器向协同服务器通知未保存有相关数据即可,在此不再赘 述。 0048 B、协同服务器向Ke。

31、y A对应的各副本服务器发送携带Key A及相应Value(协同 服务器保存的Value)的副本获取请求消息,每一个副本服务器接收到Key A和Value后, 均判断本地对应Key A保存的Value的更新时间距当前时间的时长是否小于接收的Value 的更新时间距当前时间的时长,若是,则向协同服务器返回Key A及本地对应Key A保存的 Value,否则,仅向协同服务器返回Key A。通过执行方式B,可以有效降低网络数据流量,减 轻网络运行负荷。 0049 实际应用中,无论执行方式A还是方式B,为了提高处理效率,同时为了避免因某 些副本服务器出现临时故障而导致自增计数操作中断,较佳的,协同服。

32、务器发送副本获取 请求消息后,不必等到接收到全部副本服务器的反馈信息后再执行后续操作,而是在确定 返回Key A及相应Value或/和返回Key A的副本服务器的数目达到设定的门限值(称为 门限值X)时,便开始执行后续操作,即协同服务器发送副本获取请求消息后,确定针对该 副本获取请求消息进行反馈的副本服务器的数目达到门限值X,则开始执行步骤320。 0050 步骤320:协同服务器根据获得的各Value中更新时间距当前时间的时长最小的 Value执行自增计数操作,获得更新后的Value。 0051 本发明实施例中,在步骤320中,协同服务器判断Value的更新时间与当前时间之 间的时长的方式有。

33、多种,例如,根据对应Value记录的时间戳来确定其更新时间距当前时 间的时长,时间截记录的时间越晚,表示更新时间距当前时间的时长越短;又例如,据对应 Value记录的版本号来确定其更新时间距当前时间的时长,版本号越大,表示更新时间距当 前时间的时长越短;这两种实现方式仅为举例,但并不局限于这两种实现方式,在此不再赘 述。协同服务器在进行自增计数操作时均执行上述判断操作,可以有效保证自增计数操作 中系统的数据一致性,从而保证更新后的Value的准确性。 0052 另一方面,若在步骤300中,多个服务终端向协同服务器发送针对同一自增计数 器的自增计数请求消息,即协同服务器接收到来自于多个服务终端的。

34、携带有相同Key的自 增计数请求消息,则协同服务器需要先将接收的多个自增计数请求消息指示的自增数目进 行合并,再执行后续操作;其中,合并操作可以在接收到自增计数请求消息后立即执行,也 可以在获得各Value后,在进行自增计数操作之前执行,在此不再赘述。例如,若协同服务 器接收到来自于100个服务终端的携带Key A的自增计数请求消息,每条自增计数请求消 息均请求自增数目为1,则协同服务器将自增数目合并为100后,再对当前获取的最新的 Value进行自增计数操作,即在当前最新的Value上添加100作为更新后的Value;相应的, 说 明 书CN 102833281 A 6/7页 10 协同服务。

35、器在向任意一服务终端反馈更新的Value时,只需要减去其他服务终端请求的自 增数目即可。这样,现有技术下需要进行一百次的操作在本实施例中可以一次性解决,大大 节省了自增计数操作的操作时间,提高了自增计数操作的执行效率, 0053 步骤330:协同服务器将更新后的Value发往各副本服务器进行备份,较佳的,应 当将KeyA和更新后的Value一同发送,并在确认超过设定数目的第二服务器备份成功时, 确认当前自增计数操作成功。 0054 在执行步骤330的过程中,每一个副本服务器在接收到服务器发送的更新后的 Value后,需判断接收的更新后的Vlaue的更新时间距当前时间的时长,是否小于副本服 务器。

36、本地对应Key A保存的Value的更新时间距当前时间的时长,若是,则保存更新后的 Value,并通知协同服务器备份成功;否则,不保存数据,并通知协同服务器备份失败。每一 个副本服务器在进行备份时均执行上述判断操作,可以加强自增计数操作中系统的数据一 致性,从而保证更新后的Value的准确性。较佳的,为了提高系统的执行效率,协同服务器 不必等到接收到全部副本服务器的反馈信息后再确定自增计数操作成功,而是在确认备份 成功的副本服务器的数目达到设定的门限值(称为门限值Y)时,便可确认当前自增计数操 作成功,此处的门限值Y与之前记载的门限值X的取值可以相同,也可以不同。 0055 在上述实施例中,若。

37、选定的协同服务器发生故障,则服务终端可以根据针对各副 本服务器预设的优先级,选择优先级符合条件的一个副本服务器作为新的协同服务器来执 行当前的自增计数操作,不会影响最后的执行结果,这样,有效提高了分布式缓存系统的稳 定性和安全性。而若各副本服务器中的某些副本服务器发生故障,则只要未发生故障的副 本服务器的数目达到门限值X或/和门限值Y,便不会影响自增计数操作的整体流程,即只 要不影响协同服务器向各副本服务器获取其保存的Value,以及不影响协同服务器接收备 份服务器返回的表示自增计数操作成功的响应,则备份服务器的故障不会影响分布式缓存 系统中的自增计数器的工作性能。这样,便进一步有效提高了分布。

38、式缓存系统的稳定性和 安全性。 0056 基于上述实施例,参阅图4所示,假设分布式缓存系统中设置有一个服务终端,一 个协同服务器,以及两个副本服务器,分别称为副本服务器1和副本服务器2,其中,协同服 务器中保存的自增计数相关数据为Key B-Value0,副本服务器1中保存的自增计数相关数 据为Key B-Value1,而副本服务器2中保存的自增计数相关数据为Key B-Value2,Key B表 示“使用ATM终端的顾客数目”,Value0取值为“150”、Value1取值为“148”、Value2取值为 “152”,则实现自增计数操作的具体流程如下: 0057 步骤400:服务终端向协同服。

39、务器发送携带Key B的自增计数请求消息,假设请求 自增的计数数目为1。 0058 步骤401:协同服务器获取本地对应Key B保存的Value0。 0059 步骤402:协同服务器向副本服务器1发送至少携带Key B的副本获取请求消息。 0060 步骤403:协同服务器向副本服务器2发送至少携带Key B的副本获取请求消息。 0061 步骤404:副本服务器1获取本地对应Key B保存的Value1。 0062 步骤405:副本服务器2获取本地对应Key B保存的Value2。 0063 步骤406:副本服务器2向协同服务器返回Value2。 0064 步骤407:副本服务器1向协同服务器返。

40、回Value1。 说 明 书CN 102833281 A 10 7/7页 11 0065 如图4所示,本实施例中,步骤402、步骤404、步骤407,和步骤403、步骤405、步骤 406可以是并行执行或先后执行的关系,在此并不限制其执行顺序。 0066 步骤408:协同服务器比较Value0、Value1和Value2的更新时间,确定最新的计 数结果为Value2,即取值为“152”。 0067 步骤409:协同服务器基于Value2以及请求自增的计数数目执行自增计数操作, 获得更新后的Value3,其取值为“153”。 0068 步骤410:协同服务器向副本服务器1发送携带Value3的备。

41、份请求消息。 0069 步骤411:协同服务器向副本服务器2发送携带Value3的备份请求消息。 0070 步骤412:副本服务器1对应Key B保存最新的Value3。 0071 步骤413:副本服务器1向协同服务器返回操作成功响应。 0072 步骤414:副本服务器2对应Key B保存最新的Value3。 0073 步骤415:副本服务器2向协同服务器返回操作成功响应。 0074 如图4所示,本实施例中,步骤410、步骤412、步骤413,和步骤411、步骤414、步骤 415可以是并行执行或先后执行的关系,在此并不限制其执行顺序。 0075 步骤416:协同服务器确定返回操作成功响应的副。

42、本服务器达到预设门限值(如, 门限值为1)。 0076 如图4所示,本实施例中,在执行步骤416时,若协同服务器确定返回操作成功响 应的副本服务器未达到预设门限值,则可以返回步骤401进行失败重试,并在重试次数达 到设定阈值且仍未成功执行自增计数操作时,结束当前流程并对服务终端进行告警,在此 不再赘述。 0077 步骤417:协同服务器向服务终端返回自增计数结果,即Value3。 0078 综上所述,本发明实施例中,针对云计算领域分布式缓存系统,提出了一种高效的 分布式自增计数的实现方法,具体为:针对一个自增计数器在多个服务器上保存其计数结 果的副本,每次执行自增计数操作时,在各服务器上针对同。

43、一自增计数器保存的计数结果 中选取出最新的计数结果执行自增计数操作,从而有效保证了计数结果的准确性,同时,只 需确认计数结果备份成功的服务器的数目达到设定阈值,便可确定当前自增计数操作成 功,从而在一定程度上提高了自增计数操作的执行效率,并且当某服务器出现故障时只要 正常工作的服务器的数目达到设置的门限值,就不会影响分布式缓存系统的正常工作,进 而有效提高了分布式缓存系统的稳定性、安全性及可用性;进一步地,还可以对针对同一 自增计数器的多个自增计数请求进行合并处理,从而进一步提高了自增计数操作的执行效 率。这样,便满足了分布式缓存系统对分布式自增计数器的可用性、高效性、并发性和准确 性的要求。 0079 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精 神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围 之内,则本发明也意图包含这些改动和变型在内。 说 明 书CN 102833281 A 11 1/3页 12 图1 图2 说 明 书 附 图CN 102833281 A 12 2/3页 13 图3 说 明 书 附 图CN 102833281 A 13 3/3页 14 图4 说 明 书 附 图CN 102833281 A 14 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1