【GHS】短链接服务Octopus的实现与源码开放

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2020-12-30

# 前提 半年前(`2020-06`)左右,疫情触底反弹,公司的业务量不断提升,运营部门为了方便短信、模板消息推送等渠道的投放,提出了一个把长链接压缩为短链接的功能需求。当时为了快速推广,使用了一些比较知名的第三方短链压缩平台,存在一些问题: - 收费贵 - 一些情况下,短链域名在部分第三方平台例如微信会被封杀 - 回源数据没有办法定制处理方案,无法打通整个业务链路进行数据分析和跟踪 基于此类问题,决定自研一个(长链接压缩为)短链接服务,当时刚好同步进行微服务拆分,内部很多微服务需要重新命名,组内的一个妹子说不如就用`Github`的吉祥物去命名`octopus cat`(章鱼猫)去命名,但是考虑到版权问题,去掉了她最喜欢的猫,剩下章鱼,以`octopus`命名: ![](https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-1.png) (项目的描述还打错字了,应该是"短链接")因为实现的功能并不复杂,初版于`2020-06`月底就发布。`octopus`的实现参考了互联网中几篇关于"短链服务实现"浏览量比较高的文章,下面从实现原理、服务实现和部署架构等方面展开谈谈。 ## 基本原理 短链服务的核心就是构建短链接和长链接的唯一映射关系,依赖到一个高性能、排列组合数量大而且破解难度大的映射标识生成算法。 ### 构建唯一映射关系 ![](https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-4.png) 上图是笔者收到的京东白条分期还款结果提醒短信,短信内容也包含了一个短链`
本帖含有隐藏内容,请您 回复 后查看
' target='_blank'>
本帖含有隐藏内容,请您 回复 后查看
[/reply]`,把它拷贝到浏览器中打开,发现客户端会重定向到长链`https://jrmkt.jd.com/ptp/wl/vouchers.html?activityId=${activityId}&uep_p=${uep_p}&uep_template_id=${uep_template_id}&uep_timestamp=${uep_timestamp}`,然后跳入一个`H5`的登录页,登录后再跳进一个白条攻略页面。这里其实一个长链其实可以压成多个短链,guangzhou.myqcloud.com/202012/o-c-g-w-5.png) 访问`
本帖含有隐藏内容,请您 回复 后查看
' target='_blank'>
本帖含有隐藏内容,请您 回复 后查看
[/reply]`短链接具体的交互流程猜测如下: ![](https://throwable-blog-1256189093.cos.ap-guangzhou.myqcloud.com/202012/o-c-g-w-8.png) > jrmkt.jd.com和3.cn查证都是doge东的域名 构建唯一映射关系其实就是基于一个固定的长链接,映射到一个或者多个可以动态生成的短链接,这个唯一映射关系,要求生成的短链接满足: - 不容易被破解(使用数字例如数据库的自增主键作为唯一映射标识容易被人遍历出来进行恶意调用) - 不能重复(一个短链接只能对应一个长链接,当然一个长链接可以对应多个短链接) - 长度尽可能短,这是因为第三方推送的报文内容一般有长度限制,如果短链过长,会导致不容易传输,还会令到推送内容字数受限(试想运营商短信投放内容最大长度为`30`个字符长度,短链已经占了`20`个字符长度

成为第一个回答人

评论

登录后才可发表内容
  • 主题

    106

  • 帖子

    82

  • 关注者

    0

Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0919s Mem:2056Kb