短链

2020-03-18  本文已影响0人  红烧鸡翅膀_我喜欢吃

短链优点:

1、短,对文本限制类(如短信)有实用价值

2、不直接暴露请求参数

缺点就是要经过一次重定向,略耗时。

-----------------------------------------------------------

过程:获得真正地址的过程

请求---》短链服务器(302重定向)---》真正的服务

301是永久重定向,302是临时,选择302的原因是没有访问都先重定向一次方便统计请求次数。

301处理完浏览器会记住重定向地址,下次直接访问服务,不走短链

----------------------------------------------------------------

实现:

以短长方式对应(kv)的存放数据库,再拉到缓存。或者做缓存的持久化(不丢失)

1、采取服务url做hash,使用非加密hash算法,非加密性能会高出加密十倍以上,而且还要求冲突率低,如常用的murmur算法,https://baike.baidu.com/item/Murmur%E5%93%88%E5%B8%8C/22689658?fr=aladdin

如果出现冲突,需要把长链加一个自定义的字符串再次hash解决,直至不冲突。

kv数据量大可以采用布隆过滤器【占用空间小处理量极大,125M存10亿长度】提高性能。

2、采用全局ID做短链接,依赖唯一ID生成算法

---------雪花【唯一缺点受系统时钟影响】

---------UUID[长度有点长,无序,插入数据可能导致页分裂]

---------redis发号,多台redis发一个尾号【需要持久化,实现成本高】

--------mysql自增主建【发号表预留字段块】

id做短链,可以优化成64进制把id做的更短。

---------------------------------------------------------------------------------------------------------

openresty

一个高性能框架(nginx+lua),自带redis,据说单台可撑100w+,可以做双备

上一篇下一篇

猜你喜欢

热点阅读