一种高并发短链接生成与解析方法技术

技术编号:39777374 阅读:15 留言:0更新日期:2023-12-22 02:23
本发明专利技术公开了一种高并发短链接生成与解析方法,该方法结合了短链接生成技术的优点,并使用

【技术实现步骤摘要】
一种高并发短链接生成与解析方法


[0001]本专利技术涉及营销领域对于长链接转短链接的需求

具体来说,它涉及一种用于高并发环境下生成和解析短链接的方法

这种方法能够在分布式架构中实现高并发地生成和访问短链接


技术介绍

[0002]目前,有三种常见的短链接生成技术,分别为基于哈希算法

基于自增序列和基于随机码

[0003]1)
基于自增序列:通过将长链接与自增
ID
序列进行映射生成短链接

此方法可以保证链接唯一性,但存在安全隐患和被枚举的风险

[0004]2)
基于哈希算法:运用哈希算法将长链接转化为一个短字符串或数字,从而生成短链接

此方法操作简单

速度快

但由于哈希算法的性质,不同的长链接可能会生成相同的短链接,从而导致链接的冲突问题,可能会导致链接的重复或覆盖

[0005]3)
基于随机码:通过生成一段随机码作为短链接,如
UUID、
随机字符串等

为保证链接的唯一性和安全性,随机码需要有足够的长度和复杂性,存在长度较长

存储空间占用较大的问题,且生成过程较为耗时

[0006]如上所述,这些短链接生成技术都存在一些缺点

基于自增序列的短链接存在安全隐患和被枚举的风险;基于哈希算法的短链接可能会出现链接冲突,导致数据覆盖;基于随机码的短链接虽然安全性较高,但生成和存储的开销较大


技术实现思路

[0007]本专利技术提供了一种高并发短链接生成与解析方法,以解决上述问题

该方法结合了上述短链接生成技术的优点,并使用
Redis INCRBY
命令和随机数字码生成趋势递增的序列号

通过将序列号运用
62
进制哈希算法进行映射,生成短链接

这种方法不仅实现了短链接的唯一性,还具备高性能

高安全性和低存储空间等多种优点

采用这种方法可以有效地管理短链接,提高系统的性能和安全性,并且节省存储空间

[0008]名词解释:
[0009]1、MySQL
:一种开源的关系型数据库管理系统,支持多种操作系统和编程语言,具有高效

稳定

安全等特点

[0010]2、Redis
:一种高性能的内存数据存储系统,支持多种数据结构和丰富的操作命令
,
可以用作数据库

缓存和消息中间件

[0011]3、RabbitMQ:
一个使用
Erlang
语言开发并且实现了高级消息队列协议
(AMQP)
的开源消息队列中间件,具有免费

开源

安全

高性能

持久化等优点

[0012]4、
高可用:指的是通过尽量缩短因日常维护操作
(
计划
)
和突发的系统崩溃
(
非计划
)
所导致的停机时间,以提高系统和应用的可用性

[0013]5、
布隆过滤器:一种基于位数组和哈希函数的数据结构,用于快速判断一个元素
是否存在于集合中,具有高效

低存储空间等特点,但存在一定的误判率

[0014]6、
布谷鸟过滤器:一种高效的概率型数据结构,用于快速判断一个元素是否存在于集合中,具有高效

低误判率等特点

相比于布隆过滤器,它支持删除操作,并且误判率更低

[0015]7、Hash
:哈希是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数,也称为哈希函数

它常用于数据加密

唯一标识等场景

[0016]8、
长链接:长链接是指
URL
地址较长

包含多个参数的链接

通常用于传递大量信息或者实现网站功能,但由于长度较长,不便于用户记忆和分享

[0017]9、
短链接:短链接是指
URL
地址较短

通常由字母和数字组成的链接

方便用户分享和记忆,同时也有助于节省存储空间和提升网站访问速度

[0018]10、62
进制:
62
进制是一种将数字和字母混合编码的方式,其范围为
[a

zA

Z0

9],可以将长字符串转换为短字符串

[0019]11、Redis INCRBY

Redis INCRBY

Redis
提供的一个原子性操作命令,用于对指定的键进行加法操作,支持整数和浮点数,并且可以指定增加的数量

[0020]为实现上述技术目的,达到上述技术效果,本专利技术通过以下技术方案实现:一种高并发短链接生成与解析方法,所述方法可实现实时生成海量短链接,并将其持久化存储,具体步骤如下:
[0021]步骤一

搭建高可用的
RabbitMQ
作为分布式消息队列;
[0022]步骤二

搭建高可用的
MySQL
集群作为数据存储服务;
[0023]步骤三

搭建高可用的
Redis Stack
服务集群作为短链接缓存和递增序列生成器;
[0024]步骤四

调用生成短链接接口,传入长链接和业务编号,并完成验签;
[0025]步骤五

生成随机数,使用
Redis

INCRBY
命令结合生成的随机数获取递增序列;
[0026]步骤六

将步骤五中生成的递增序列值转换为
62
进制短链接码,并使用布谷鸟过滤器判断短链接码是否存在,若短链接码已经存在,则返回步骤五重新生成递增序列,直到生成一个新的

不存在于布谷鸟过滤器中的短链接码;若短链接码不存在,则进入步骤七;
[0027]步骤七

将步骤六中生成的短链接码保存至布谷鸟过滤器中,以便在后续进行判重;
[0028]步骤八

将步骤六中生成的短链接码与步本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种高并发短链接生成与解析方法,其特征在于:所述方法可实现实时生成海量短链接,并将其持久化存储,具体步骤如下:步骤一

搭建高可用的
RabbitMQ
作为分布式消息队列;步骤二

搭建高可用的
MySQL
集群作为数据存储服务;步骤三

搭建高可用的
Redis Stack
服务集群作为短链接缓存和递增序列生成器;步骤四

调用生成短链接接口,传入长链接和业务编号,并完成验签;步骤五

生成随机数,使用
Redis

INCRBY
命令结合生成的随机数获取递增序列;步骤六

将步骤五中生成的递增序列值转换为
62
进制短链接码,并使用布谷鸟过滤器判断短链接码是否存在,若短链接码已经存在,则返回步骤五重新生成递增序列,直到生成一个新的

不存在于布谷鸟过滤器中的短链接码;若短链接码不存在,则进入步骤七;步骤七

将步骤六中生成的短链接码保存至布谷鸟过滤器中,以便在后续进行判重;步骤八

将步骤六中生成的短链接码与步骤四中传入的长链接映射,采用
Hash
结构存入
Redis
,并设定过期时间;步骤九

将步骤八中短链接码与长链接映射信息发送到
RabbitMQ
消息队列中,在
RabbitMQ
消息队列中,能够将短链接码和长链接封装成一个消息,以便在后续进行异步处理;步骤十

订阅
RabbitMQ
消息,解析消息将消息中的短链接码和长链接提取出来,并将其存储到
MySQL
中,并将长短链接映射信息存入
MySQL

。2.
根据权利要求1所述的一种高并发短链接生成与解析方法,其特征在于:高并发短链接访问的具体步骤如下:步骤
1、
在使用短链接访问长链接时,用户通过在浏览器中输入短链接地址,或者点击包含短链接地址的页面或通过短信方式进行访问;步骤
2、
在使用短链接访问长链接时,服务器需要从短链接中提取出短链接码,采用白名单
+
正则匹配机制,如果短链接地址不在路径白名单内且符合正则表达式的要求,则会被提取短链接码;步骤
3、
使用布谷鸟过滤器,判断短链接码是否存在;如果查询结果为存在,则说明该短链接有效,则进行到步骤4;如果查询结果为不存在,则说明该短链接无效,服...

【专利技术属性】
技术研发人员:李亚运谢汶达季益亮陈云涛赵音龙陈丰生
申请(专利权)人:海纳致远数字科技上海有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1