短网址服务运营中遇到的一些难题
FT12短网址运营已经6年了,从2011年的某一天开始到今天2018年8月15日。在这么多的日日夜夜中,我们力争保证所有用户的短网址能稳定、快速、有效,这对于一个几千万级别的数据库来说真的不是一件很简单的事情。
大概在2012年,短网址运营一年多以后,我们遇到了第一个难题:数据库过于庞大,查询数据非常慢,导致短链接打开速度不理想。这还是只是客户端碰到的问题,对于短网址服务器端,还遇到了服务器CPU爆表的难题。用户每一次打开一个短链接,实际上就是在一个千万级别的短网址数据库里面进行了一次查询。所幸,我们对于短网址数据库,根据ID和CODE进行了索引,简单的查询还能应付的过来。但是我们短网址的功能里面有一个:自定义短网址。而要实现自定义短网址,我们必须要先查询用户输入的长网址是否已经存在于数据库中,这时候我们用到了一个url_exist函数,由于数据库未对长网址进行索引,所以每次查询都非常的耗时,且CPU占用非常高!后来我们处于无奈,将url_exist函数去除了,也就是说:一条长网址可以对应多条不同的短网址或者短链接。采取这个策略以后,短网址打开速度明显提高,且服务器的CPU使用率从100%下降到了50%,优化的效果非常明显。
在2013年以后,FT12短网址又遇到一个更加棘手的问题:如何及时发现并清理短网址数据库中的恶意链接?由于每天生成的数据非常多,成千上万条短网址,我们实在没有精力和时间逐一去核对其安全性。也正是因此,导致了很多恶意网址被发布,生成短链接到处传播。这也直接导致了FT12短网址频繁被微信和QQ提示和拦截,从而极大影响了其他正常用户的使用。为了因对这个问题,我们的程序猿闭门修炼了一个多月,终于写了一个API文件,接入了腾讯管家官方的恶意网址检测系统。只要用户输入的长网址被腾讯列入黑名单,FT12短网址的程序就能自动判定并第一时间拦截恶意网址。自此,我们不仅解决了恶意网址的问题,也间接使得FT12短网址不会频繁被微信或者QQ拦截,极大的提升了短网址的用户体验。
第三阶段遇到的难题:竞争对手的恶意攻击。目前攻击的手段很多,主要有:CC攻击和DDOS攻击。短网址这个行业突然闯进来一些不守规矩的家伙,天天不务正业,不想着提升用户体验,而是走歪门邪道,攻击FT12短网址以达到推广自己的短网址的目的。为了应对不法分子的DDOS攻击,FT12短网址在程序上进行了很多升级和优化,不过,然并卵,还是经不住流量攻击。后来处于无奈,我们接入了百度云加速CDN,总算,世界安静了。这里我们还是要感谢一下百度云加速,其抗攻击能力还是非常值得表扬的。而且,接入CND以后,FT12短网址无论是网址缩短的反应时间还是短链接的打开时间,又有了进一步的提升。正应了一句话:真金不怕火炼!