[发明专利]一种序列值生成方法、装置及系统有效
申请号: | 201610653586.0 | 申请日: | 2016-08-10 |
公开(公告)号: | CN106899654B | 公开(公告)日: | 2020-02-07 |
发明(设计)人: | 张臬靖;刘唯实;邓小峰;王远秋 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | H04L29/08 | 分类号: | H04L29/08;H04L12/24 |
代理公司: | 11315 北京国昊天诚知识产权代理有限公司 | 代理人: | 黄熊 |
地址: | 英属开曼群岛大开*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 序列 生成 方法 装置 系统 | ||
本申请公开一种序列值生成方法、装置及系统,用于在设备正常运行状态下,保证生成的序列值严格递增,并且当设备出现宕机时,也能保证生成的序列值严格递增。所述方法包括:当第一设备正常运行时,根据时间戳生成序列值,并将生成的序列值发送到备份记录中;当第一设备宕机,第二设备从所述备份记录中查找对应所述第一设备发送的最大序列值;根据所述最大序列值,确定第二设备序列下限值;在所述第二设备首次生成序列值,且当前时间戳大于所述第二设备序列下限值中包含的时间戳时,根据当前时间戳生成序列值。
技术领域
本申请涉及计算机技术领域,尤其涉及一种序列值生成方法、装置及系统。
背景技术
分布式系统(distributed system)是建立在网络之上的软件系统,该系统由一组(少至几台,多则成千上万台)独立的计算机(设备)以统一的整体提供服务。利用分布式系统,服务能力得到灵活扩展和有效提高。序列,是被排成一列的对象(或事件),这样每个对象不是在其他对象之前,就是在对象之后;单调递增序列就是序列中每个对象都大于等于之前的对象;若每个对象都严格大于之前的对象,这个序列就是严格(单调)递增的,具体地,可以通过序列值的大小进行表示序列。
当前,很多业务场景都需要严格递增序列,比如数据同步业务,需要用一个序列值来标识一条数据,由于数据更新,所以更新后的数据对应的序列值一定要严格大于更新前的数据对应的序列值。分布式系统中包含多台独立设备,每台设备都可能出现不可用的情况(宕机、重启、被替换等,统称宕机),所以分布式系统下需要考虑对局部宕机进行容错,以保证序列值严格递增。
现有技术中,是通过设备标识号保证生成的序列值严格递增。具体地,以设备标识号的大小作为严格递增序列的依据,当一台设备宕机后,通过比该设备标识号大的设备继续执行该设备的任务,由于设备标识号大,那么就可以实现严格递增。但是如果标识号最大的设备宕机,由于无法找到更大标识号的设备,所有就要由其他标识号较小的设备执行该设备的任务,就会导致由于标识号小,破坏原有序列值的有序性。所以现有技术无法保证在分布式系统下,生成的序列值严格递增。
发明内容
本申请实施例提供一种序列值生成方法,用于在设备正常运行状态下,保证生成的序列值严格递增,并且当设备出现宕机时,也能保证生成的序列值严格递增。
本申请实施例提供一种序列值生成装置,用于在设备正常运行状态下,保证生成的序列值严格递增,并且当设备出现宕机时,也能保证生成的序列值严格递增。
本申请实施例提供一种序列值生成系统,用于在设备正常运行状态下,保证生成的序列值严格递增,并且当设备出现宕机时,也能保证生成的序列值严格递增。
本申请实施例采用下述技术方案:
一种序列值生成方法,包括:
当第一设备正常运行时,根据时间戳生成序列值,并将生成的序列值发送到备份记录中;
当第一设备宕机,第二设备从所述备份记录中查找对应所述第一设备发送的最大序列值;
根据所述最大序列值,确定第二设备序列下限值;
在所述第二设备首次生成序列值,且当前时间戳大于所述第二设备序列下限值中包含的时间戳时,根据当前时间戳生成序列值。
优选地,根据时间戳生成序列值,包括:
根据时间戳以及自增序列生成序列值;则
根据当前时间戳生成序列值,包括:
根据当前时间戳以及自增序列生成序列值。
优选地,根据所述最大序列值,确定第二设备序列下限值,包括:
根据大于所述最大序列值中时间戳至少一个时间周期的时间戳,确定第二设备序列下限值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610653586.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种具有灭火功能的电力柜
- 下一篇:一种工厂中央空调系统用电器柜