一个非常简单的长链接转短链接的项目 您所在的位置:网站首页 长链接转短网址 一个非常简单的长链接转短链接的项目

一个非常简单的长链接转短链接的项目

2023-12-19 14:34| 来源: 网络整理| 查看: 265

                                     前言

        项目中遇到过这样的情况,需要一些长链接转短链接的功能,但是免费的似乎有限制,付费吧,业务并不想出这个预算,不付费吧,那天服务突然不能用了,那也也没辙,既然项目有了,哪啊服务器资源和数据库资源总是现成的吧,不如自己搭建一个服务解决这个问题,如果用的多了,是不是可以回馈到其他项目。虽然最后我们还是选择了免费的平台,但是我时常在想,如果让我去设计一个这样功能的系统,我能否做出一些非常极致的设计,于是说干就干。

                           下面直接上项目链接

urlLongToShort: 一个极度简单的长链接转短链接服务

                           关于项目的设计思路                          如何实现一个长链接装短链接

        短链接首先肯定是要承载在一个域名上的,当然,域名肯定也是短的好,比如现在又这样一个短域名,abc.cn,那是不是加上一个唯一值,比如abc.cn/123,那这个123可以是一条记录的主键,通过主键去mysql找记录,这个不再赘述。我在想的是,这个123最为主键,是不是不够短?既然数据库的自增主键是10进制,我联想到2进制8进制还有16进制,那大小写加上10个数字是不是可以有72进制,假设通过5个字符表示10进制和62进制,那10的5次方和72的5次方可以表示的就差距可就太大了,那既然思路有了,好的,那就找个轮子呗,于是百度到了项目里面集成的58进制的转换工具。为什么是58进制,iIoO这四个太容易和数字1和0混淆了。好了,到这里为止,完全足够实现我们需要的功能了。

                        如何提供更极致的设计

         如果只是到这里,其实这个项目也就算结束了,但是,我觉得还是不够,我在想,mysql单表虽然可以存储上亿的记录,那这个系统是否能在少损耗甚至不损耗性能的前提下,可以提供几十亿甚至上百亿条记录的存储呢?是的,上百亿的存储,当然需要数据库的磁盘能存储的下,那这个系统至少在企业内部应该可以用到下个世纪了吧。那就这么干吧,假设1张表可以提供1亿的记录存储,那100张表不就可以提供100亿记录的存储了吗?既然用了主键,那只要按照主键的值对100取模,一定就能取到0-99的数字,再根据数字拼接上表名,就是这条记录的目标表位置,如此依赖,不需要任何多余的操作,只需内存中进行一次取余和拼接就能完成,这样的操作我想应该是比较少的性能损耗了吧。

                             能否提供更极致的体验

        到上面为止,一个能存储上百亿的短链系统已经完成了,我在想能否提供更多更好的设计来提升体验。既然短链的数据创建之后就不再变化,那缓存总可以有的吧,那就加一个ehcache呗,什么?应该上redis?eachahe不是一个分布式的缓存?可是业务场景没必要一定用分布式缓存啊,多出来一个组件维护,还麻烦一些,那体验就变差。通过一些设计手段保证只用ehcache也能保证业务绝对的正确性还能支持水平的扩容,我觉得这样才是最极致的体验吧。

                            再极致一些的性能体验

        到目前位置,整个系统的容量也有了,加上缓存,系统的性能也大幅度提升了,但是想了想,如此业务能设计的如何极致,那是不是还能再极致一点,spring flux替换springmvc,需要我们去改变代码的地方真的是太少了,而且这个业务场景中,业务又如此之简单,于是说干就干,干完了之后,简单压测了一下,系统的吞吐量提升了一倍,接口的响应也变得非常的快,几行代码的修改换来的性能的提升还是非常可观的。

                                再easy一点

        下载代码 打包编译,想体验一下挺麻烦的,得了,那就直接把项目推到dockerhub,一键启动吧。

           

                      


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有