短链

作者: 红烧鸡翅膀_我喜欢吃 | 来源:发表于2020-03-18 10:27 被阅读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+,可以做双备

    相关文章

      网友评论

          本文标题:短链

          本文链接:https://www.haomeiwen.com/subject/wufqyhtx.html