摘要:映射機制對每個長鏈接,使用一個小于億的整數標記。短鏈接不夠用或者雖然我們的短鏈接可以表示億個資源,貌似很多,但是對于大型系統,如銀行,搜索引擎等等,還是非常少的。解決既然位短鏈接不夠用,那可以多使用幾位,比如位,大概等于億但是,總是有限的。
引用、參考:
短 URL 系統是怎么設計的?iammutex的回答
表示較短的URL(是不是廢話?....)
為什么需要短鏈接不同的瀏覽器對URL的長度有不同的限制,當URL長度超出極限,可能無法正常得到服務或資源
較短的鏈接更為美觀(也是廢話...)
便于統計。為什么呢?
系統設計映射機制目標:將較長的鏈接映射到較短的鏈接,如domain/resource_abcdedfwefwf...映射到 domain/3a6f7A。一般對于大部分應用,映射到6位已經足夠了,每位可以取[a-z A-Z 0-9],共26+26+10=62種,可以表示62^6=560億個鏈接或資源。當然,你也可以選擇位數稍多一點。
對每個長鏈接,使用一個小于560億的整數標記。小型系統中,小型系統直接用mysql的自增索引就搞定了。只要做一個發號控制器,負責根據序號找到長鏈接和為長鏈接生產序號。
如何將序號映射到六位?只需進行一個10進制到62進制的轉換即可。因此,控制器需要提供一個進制轉換工具。
綜上,當申請一個資源domain/3a6f7A,先由控制器將3a6f7A從16進制轉為10進制,在根據數據索引找到真正的URL,再去申請資源domain/resource_abcdedfwefwf...
分布式如果只有一個發號控制器,對于系統可能形成單點性能瓶頸和單點故障問題。
解決方法:使用多個發號控制器。
存儲" 我們是否可以實現兩個發號器,一個發單號,一個發雙號,這樣就變單點為多點了?依次類推,我們可以實現1000個邏輯發號器,分別發尾號為0到999的號。每發一個號,每個發號器加1000,而不是加1。這些發號器獨立工作,互不干擾即可。而且在實現上,也可以先是邏輯的,真的壓力變大了,再拆分成獨立的物理機器單元。1000個節點,估計對人類來說應該夠用了。如果你真的還想更多,理論上也是可以的。"
各種DB,CACHE都可以用....,你喜歡(又是廢話)。
跳轉用301還是302301是永久重定向,302是臨時重定向。短地址一經生成就不會變化,所以用301是符合http語義的。同時對服務器壓力也會有一定減少。
如果使用了301,我們就無法統計到短地址被點擊的次數了。而這個點擊次數是一個非常有意思的大數據分析數據源。能夠分析出的東西非常非常多。
短鏈接不夠用或者雖然我們的短鏈接可以表示560億個資源,貌似很多,但是對于大型系統,如銀行,搜索引擎等等,還是非常少的。但是我們可以知道一個現實,就是,某一個較短的時間段,被請求的資源數是有限的,比如,10分鐘內,被訪問的微博URL數目不會超過560億。當然這個時間段和上限你可以根據實際情況調整。
解決:
既然6位短鏈接不夠用,那可以多使用幾位,比如8位,大概等于560億*62*62.
但是,總是有限的。”可以用key-value存儲,保存“最近”生成的長對短的一個對應關系。注意是“最近”,也就是說,并不保存全量的長對短的關系,而只保存最近的。比如采用一小時過期的機制來實現LRU淘汰。“所以當一個地址被頻繁使用,那么它會一直在這個key-value表中,總能返回當初生成那個短地址,不會出現重復的問題。如果它使用并不頻繁,那么長對短的key會過期,LRU機制自動就會淘汰掉它。當然,這不能保證100%的同一個長地址一定能轉出同一個短地址,比如你拿一個生僻的url,每間隔1小時來轉一次,你會得到不同的短地址。
思考:如果采用LRU,有一些短鏈接會被淘汰;如果短鏈接仍然使用自增方式,可能會溢出(超出560億)。如何解決該問題?
限定key-value表中永遠不會超過100億條記錄,超過就根據LRU進行淘汰;被淘汰的短鏈接放在回收器中;當序號幾近溢出或者已使用的最大序號超過某個閾值,就使用回收器中的曾被使用或的短鏈接,不再使用自增來產生序號。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/61896.html
摘要:最重要的就是找一個適合自己的主題了。事實上,免費主題也非常多,而且很多的免費主題在功能上和界面美觀上已經大大超過了付費的主題。加上這些主題都是開源的,基本上可以在上找得到源碼,安全性是沒有問題,主題的作者也在不斷更新當中。WordPress最重要的就是找一個適合自己的主題了。好一點的WordPress主題基本上都是要收費的,而且價格還不便宜,這導致了不少的新手朋友們很為難。而有時我們僅僅根據...
摘要:圖片壓縮網址介紹是一款圖片壓縮工具,壓縮率能達到以上,圖片在壓縮之前和之后幾乎看不出差別。在設計師人群中比較流行,現在介紹給廣大的程序員。 1.圖片壓縮網址:https://tinypng.com/ 介紹: Tinypng 是一款 PNG 圖片壓縮工具,壓縮率能達到 50% 以上,圖片在壓縮之前和之后幾乎看不出差別。Tinypng 在設計師人群中比較流行,現在介紹給廣大的程序員。 據...
閱讀 2033·2021-09-30 09:47
閱讀 708·2021-09-22 15:43
閱讀 1987·2019-08-30 15:52
閱讀 2439·2019-08-30 15:52
閱讀 2549·2019-08-30 15:44
閱讀 912·2019-08-30 11:10
閱讀 3375·2019-08-29 16:21
閱讀 3301·2019-08-29 12:19