短链接方案

长链变短链

  • 获取合适的短链接域名 image-20201130114838374
在集团or公司内部项目中,公共的短链服务需要满足不同项目不同短链域名的需求。上图中可以设置根据要求的短链域名or根据长链匹配

  • 获取短链接KEY
    image-20201127171443606
短链KEY需要保证全局唯一,采用雪花算法发号器获取。 
雪花算法可根据机房编号、机器编号、时间位等设置控制KEY的长短,会随着时间慢慢变长。

雪花算法可自行搜索,如果有需要可私信。

短链变长链

  • 短链变长链
    image-20201127163727780

涉及到的问题

  • 问题1

     问: 短链KEY ?
     
     答: 使用雪花算法发号器生成唯一的62进制的短链(具体可以根据机房机器编码、开始时间、各部分设置占位数等设置 )
         如果不止一台服务器,可以配置机器数据字典,  根据不同的ip地址设置不同的机房机器编码.
    
  • 问题2

     问: 怎么保证尽量保证同长链尽量返回同一短链 ?
     
     答: 长链-短链,短链-长链 对应都在redis存储,并设置时长为一定值.
         如果使用量很大的话,可以设置redis缓存为一周,长变短访问redis失败->不查mysql默认重新发号,生成新的短链
         现在我们的主要是内部用户,使用量不大. 设置的是redis缓存30天->->查mysql->重新发号  尽量保证短长链一一对应
         
         短链->长链: 查redis -> 查mysql. 可以适当将短长链缓存过期时间设置长点,同时做好恶意
         访问限制->可以通过统计访问者的IP等,限制短时间内大量访问不存在的短链接造成的缓存穿透.
    
  • 问题3

     问: 怎么兼容用户传参&请求访问协议 [长链接中带中文  短链支持带参数] ?
     
     答:  长链带中文: 在长链变短链时,url需要urlEncode编码,防止中文及特殊字符错误
          短链带参数: 截取参数,拼接在获取的长链接后.  判断原长链是否有参数的判断依据:
          特殊字符 “? &”
          
          各短链域名互通[同环境下]: 只区分短链KEY    如: d.xxx.com/12345 =等价= d.yyy.com/12345
    
  • 问题4

     问: 短链变长链跳转的方式 ?  301 和 302的选择和优缺点?
     
     答: 我们的设计方案选择的是 response.sendRedirect    状态是默认的302
         301: 永久重定向 有缓存(短链服务器压力小)  抓取的地址会替换成新的 对SEO友好
         302: 临时重定向 无缓存(短链服务器压力大)  抓取的地址还是原来的   容易URL劫持   
              对SEO基本无效(不利用网站排名) 
         
         我们选择302主要是因为: 
              1. 便于统计: 此种方式便于统计短链请求来源信息,如点击量等. 
              2. 利于监管: 删除了短链记录即可限制访问,不会出现301长链被客户端缓存了,访问不存在的短链会直接访问长链
    
  • 问题5

     问: 怎么配置域名访问 ?
     
     答: 一般在公司的二级域名下,再申请一个三级域名,尽量短一点,比如 l.baidu.com、
         d.baidu.com、t.baidu.com。域名配置好对应映射的ip信息。
         
         如果是多个短链域名,可以配置负载均衡(域名映射的IP就是此负载的公网IP),负载再指向
         对应的后端服务器,后端服务器运行多个服务时,需配置Nginx
    
  • 问题6

     问: 项目部署 ?
     
     答: 获取短链,如果是提供内部其他项目使用,可以作为服务提供,如dubbo注册后提供,更高效;  
         如果是对外提供的获取短链服务,可以做好不同有效期、IP次数等限制。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值