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