# 《并发设计模式》第31章-主动对象模式-访问商品链接404原因分析

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★☆☆☆
  • 本章重点:初步了解主动模式的应用场景,初步掌握长短链接转换后,无法正常访问数据的原因,并能够结合自身项目实际场景思考如何将主动对象模式灵活应用到自身实际项目中。

大家好,我是冰河~~

在系统中,如果访问某些资源的链接比较长,则会带来一些不便之处,例如一些图文编辑、商品详情发布等等场景下,可能会有字数限制,如果添加的某些资源的链接过长,则可能会影响其他正文的发布。使用短网址进行跟踪和统计比长网址更方便等等。但是,在原有长网址的基础上再增加短网址,如果处理不当,就可能导致访问不到资源的问题。

# 一、故事背景

上回说到,由于大量的用户反馈社区电商项目的商品链接太长,不便于识别和转发给好友,同时,运维也反馈商品链接太长,不利于监控和跟踪商品的访问,技术部门决定在商品长链接的基础上再生成一个短链接存储,并且最终这个需求的开发任务被分到了小菜头上。小菜随即对需求进行分析,也对代码进行了设计,最终完成代码实现后提测,但是测试的结果显示访问商品出现404的问题。。。

# 二、独立分析问题

小菜拿到测试报告后,虽然有点疑惑:“怎么会出现访问商品404的问题呢?”,但是还是要认真排查和定位问题才行,于是小菜便开始各种调试代码,也在网上搜索关于长短链接转换后,访问不到资源的问题,但是网上的部分案例与自己写的代码不符,不能有效的解决自己遇到的问题。

于是,小菜想会不会是长短链接的转换有问题呢?经过排查和调试,发现长短链接的转换没啥问题。又在想:“会不会是长短链接的映射关系存储有问题呢?”,于是便自己模拟运营发布商品,用户访问商品的操作,但是一顿操作下来,还是没能重现问题。重现不了问题,那要怎么解决呢?小菜此时根本无从下手怎么去解决问题。实在想不到办法了,于是,小菜决定还是请教下老王。

# 三、寻求帮助

小菜起身来到老王的身边,说到:“老大,遇到个问题,就是我完成了商品长短链接的转换功能,提测后,测试那边反馈说会出现访问商品404的问题,但是我本地一直无法复现这个问题,可以帮我看看吗?”。

老王回应到:“好,我帮你看看”。

于是,二人一起来到小菜的工位,分析起问题所在。

没一会儿,老王便说到:“这么写代码确实存在问题,走,去会议室,我给你分析分析”。

“好的,小菜回应到”。

于是,二人一起走进了会议室。。。

# 四、一探究竟

老王打开小菜的代码,对小菜说:“我也看了你画的流程图,我们从流程上分析下”,说着老王又打开了小菜画的流程图,如图31-1所示。


从这张图可以看出,运营或商家在发布商品时,生成长链接、转换短链接和存储长短链接的映射关系都是串行执行的,并且将长链接转换成短链接后,立刻将长短链接的映射关系存储下来。

用户访问数据时,会传递短网址过来,服务端会根据短网址到映射关系中查询长网址,根据长网址再定位到要访问的资源,如图31-2所示。


整个过程看似一切都很正常,一切都很顺利。那这种方案有什么隐藏的问题和分享吗?我们继续分析。

# 查看全文

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码