經典指數          
原因
1322
瀏覽數
0
收藏數
 

微博中的url往往很長,發送前要轉化為tinyurl 1、url如何轉為tinyurl編碼 2、如果用戶輸入一個已經轉換過的URL,如何快速定位到已經生成了的tinyurl 3、如果數據為10億條,需要10個tinyurl服務器,怎么設計?

     舉報   糾錯  
該題目由題來君提供于 2015-10-08 16:57
 
切換
1 個答案

1. ?url轉換為tinyurl編碼使用數據庫的自增ID, ?但是隨著url數量的增加可能數字串很長,

?所以我們對id進行進制壓縮,轉換為一個字符串, 這里我們不采用傳統的十六進制,而是將所有字母和數字都用上, 其中字母只使用大寫字母,

去除數字0和字母O這兩個難以分辨, 這樣我們可以使用的字符數為 ?26+10-2=34, 所以我們使用34進制進行壓縮

? ? ?比如我們tinyurl長度限制在5個字符,那么可以標示的url數量為

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 34^1+34^2+34^3+34^4+34^5 ?

這是一個非常驚人的數字

2. 數據庫中自增ID都是建立索引的, 一個請求的tinyurl我們可以很快的將其還原為唯一ID,

然后直接查詢數據庫即可以獲得原始url, 當然我們在這個過程中可以使用redis, leveldb等kv數據庫進一步家加快查詢過程

3.由于自增ID的特殊性質,我們使用取模輪訓的方式完全能夠保證這10億條url能夠均勻分布在10太服務器,

在十臺服務器之前加上負載均衡, 根據進制壓縮的結果講請求轉發到相應的服務器,每個服務器中有獨立cache, 后端公用數據庫

舉報   題來君 · 2015-12-29 23:29
 
切換
撰寫答案
广西快三结果控 炒股入门与技巧电子书下载在线阅读 福建31选7的技巧 配资在线 股票融资亏钱 甘肃快3开奖号码是多少 贵州快三开奖预测 快乐10分杀号公式 福建快3怎么买 陕西十一选五走势图 - 百度 体彩海南环岛赛任选3单式开奖