[发明专利]分布式ID生成方法、存储介质在审
申请号: | 201910514044.9 | 申请日: | 2019-06-14 |
公开(公告)号: | CN110334092A | 公开(公告)日: | 2019-10-15 |
发明(设计)人: | 刘德建;林伟;郭玉湖 | 申请(专利权)人: | 福建天泉教育科技有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/23 |
代理公司: | 福州市博深专利事务所(普通合伙) 35214 | 代理人: | 张明 |
地址: | 350212 福建省福州市长乐*** | 国省代码: | 福建;35 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 应用 存储介质 内存 中心数据库 交互操作 应用成功 应用程序 中心点 中心化 并发 删除 存储 概率 | ||
本发明提供分布式ID生成方法、存储介质,方法包括:应用实例从中心数据库获取ID列表,所述ID列表中包括两个以上的ID;应用实例分别存储所述ID列表至本地内存和本地文件;应用程序从本地内存的所述ID列表中获取ID,并删除本地文件的所述ID列表中相应的ID。本发明不仅能减少应用与中心的交互操作,提高应用获取ID的效率;而且能去中心化,显著降低中心点异常对应用造成的影响,从而提高应用的稳定性;进一步地,还能在并发情况下提高应用成功获取ID的概率;最后,还具有实施简便、实用性高等优点。
技术领域
本发明涉及分布式系统ID管理领域,具体涉及分布式ID生成方法、存储介质。
背景技术
在实际项目开发之中存在有很多种的ID生成方式,如下为一些批量生成ID思路的具体说明,以及其中的优缺点:
1、数据库自增主键
优点:简单;唯一;递增;增幅固定;
缺点:写性能决定每秒生成数量上限,扩展差;分布式数据库中的主节点挂掉,只能依靠备节点时可能出现问题(主节点写入成功,日志未同步到备节点,导致id重复)
备注:可由一个写库变成多个库同时写,如1、2、3三个库同时写,初始id分别为1、2、3,自增幅度都为3。这种方式可保证id不重复。但导致id不是绝对递增,而是整体趋势上递增;其次是写入的压力仍然很大,mysql容易成为性能瓶颈。
2、数据库批量生成id
优点:效率高;降低数据库压力;
缺点:需考虑安全性问题,防止取到重复id;如果业务需求是每次只生成一个id,性能有问题。
备注:利用数据库,初始化一行数据,初始值为1,取10个id,就给该值加10,调用端取返回id值的前10个数值。
在一般的分布式系统中,生成分布式ID的方式一般都是一个中心点存储。比如,每个应用或者需要ID的地方,每次获取ID时,都需要向中心数据库或者中心缓存获取ID信息,当获取到之后,再进行后续的操作。此种情况下,一个是需要进行一次网络交互的操作,另一个是如果中心数据库或者中心缓存宕机情况下,则获取ID失败,正常业务无法进行下去。旧有的这种方式,每次请求ID都直接从中心数据库或者中心缓存进行直接访问,吞吐不高。
发明内容
本发明所要解决的技术问题是:提供一种分布式ID生成方法、存储介质,能够减少网络交互次数,去除中心化,从而提高实用性。
为了解决上述技术问题,本发明采用的技术方案为:
一种分布式ID生成方法,包括:
应用实例从中心数据库获取ID列表,所述ID列表中包括两个以上的ID;
应用实例分别存储所述ID列表至本地内存和本地文件;
应用程序从本地内存的所述ID列表中获取ID,并删除本地文件的所述ID列表中相应的ID。
本发明提供的另一个技术方案为:
一种计算机可读存储介质,其上存储有计算机程序,所述程序在被处理器执行时,能实现上一种分布式ID生成方法所包含的步骤。
本发明的有益效果在于:通过应用实例预存储一定数量的ID至本地内存和本地文件,且二者同步ID消耗情况;在应用日常需要ID时,可以直接从本地内存中获取ID而无需与数据中心交互;在中心宕机或应用重启时,还可以直接基于本地文件恢复ID列表至本地内存,然后继续启用本地获取模式,无需与中心数据库交互。本发明能够显著减少与中心的交互次数,不仅实现去中心化,而且在中心异常情况下保证应用的可用性;同时又能提高ID获取速度。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于福建天泉教育科技有限公司,未经福建天泉教育科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910514044.9/2.html,转载请声明来源钻瓜专利网。