FT12短網(wǎng)址運(yùn)營(yíng)已經(jīng)超過(guò)5年,隨著用戶的逐漸增多冈爹,每天新生成的短鏈接數(shù)量接近20多萬(wàn)條喜德。這是一個(gè)什么樣的水平呢?也就是說(shuō)每年新增短鏈接數(shù)量要接近1億條墙歪。對(duì)于web服務(wù)器來(lái)說(shuō)听系,沒(méi)什么壓力。但是一億條數(shù)據(jù)對(duì)于數(shù)據(jù)庫(kù)的調(diào)整真的是無(wú)比的艱難虹菲。目前FT12短網(wǎng)址數(shù)據(jù)庫(kù)中總計(jì)有將近3億條數(shù)據(jù)靠胜,三億條數(shù)據(jù)全部查詢一遍大概需要5秒左右。但是毕源,對(duì)于短網(wǎng)址用戶來(lái)說(shuō)浪漠,打開一天短鏈接費(fèi)時(shí)5秒是一個(gè)無(wú)法接受的時(shí)間。短網(wǎng)址的核心就是快霎褐,穩(wěn)定址愿,安全。如果無(wú)法縮短短鏈接打開時(shí)間冻璃,提升用戶體驗(yàn)响谓,那么這個(gè)短網(wǎng)址就是一個(gè)失敗的產(chǎn)品。所以我們從以下幾點(diǎn)對(duì)數(shù)據(jù)進(jìn)行了優(yōu)化省艳。
首先娘纷,清理數(shù)據(jù)庫(kù)中常年累月無(wú)人訪問(wèn)的短鏈接數(shù)據(jù)。在三億條短網(wǎng)址中跋炕,有超過(guò)50%的短鏈接超過(guò)2年了沒(méi)有任何訪問(wèn)記錄失驶。這些數(shù)據(jù)占用著資源,浪費(fèi)了廣大用戶的時(shí)間枣购,所以我們首先對(duì)其進(jìn)行了備份嬉探,然后刪除這些數(shù)據(jù)。這個(gè)操作一下子使短網(wǎng)址的數(shù)據(jù)庫(kù)從3億條縮減到了1.2億條棉圈。(當(dāng)然涩堤,我們事先備份了數(shù)據(jù)庫(kù),如果某些用戶申請(qǐng)恢復(fù)這些短鏈接的訪問(wèn)分瘾,我們可以第一時(shí)間核實(shí)和處理)
其次胎围,web服務(wù)器和mysql服務(wù)器分離,因此我們選擇了阿里云的RDS數(shù)據(jù)庫(kù)。這樣做的好處有很多:其一白魂,減輕服務(wù)器的壓力汽纤,是網(wǎng)站的運(yùn)營(yíng)更加的穩(wěn)定,短鏈接打開速度非掣]快蕴坪;其次,RDS數(shù)據(jù)有實(shí)時(shí)備份功能敬锐,萬(wàn)一網(wǎng)站奔潰背传,也能及時(shí)恢復(fù)數(shù)據(jù)庫(kù),保證用戶數(shù)據(jù)的安全台夺。
最后径玖,我們優(yōu)化了數(shù)據(jù)庫(kù)的字段和邏輯。原先設(shè)計(jì)的短網(wǎng)址數(shù)據(jù)非常復(fù)雜颤介,功能繁多梳星。但是我們發(fā)現(xiàn)很多功能基本上沒(méi)有用戶去使用。所以我們對(duì)其進(jìn)行了精簡(jiǎn)滚朵。通過(guò)這個(gè)操作冤灾,我們將數(shù)據(jù)庫(kù)的大小從2G縮減到了1個(gè)G,效果很明顯始绍。另外瞳购,我們也從web邏輯方面進(jìn)行了優(yōu)化话侄,減少了數(shù)據(jù)庫(kù)的訪問(wèn)頻次亏推,平均每條短鏈接的生成和訪問(wèn)能減少3次對(duì)數(shù)據(jù)庫(kù)的請(qǐng)求。
經(jīng)過(guò)了以上幾個(gè)方面的優(yōu)化了改進(jìn)年堆,目前FT12短網(wǎng)址絕對(duì)可以滿足任何用戶的需求吞杭。