国产亚洲欧美一区二区,亚洲欧洲国产一区,成人在线视频网,中文精品视频一区二区在线观看

返回頂部
關閉軟件導航
位置:首頁 > 技術分享 > SEO優化>短URL系統是怎么設計的

很爛的回答

實現一個算法,將長地址轉成短地址。實現長和短一一對應。然后再實現它的逆運算,將短地址還能換算回長地址。

這個回答看起來挺完美的,然后候選人也會說現在時間比較短,假如給我時間我去找這個算法就解決問題了。但是稍微有點計算機或者信息論常識的人就能發現,這個算法就跟永動機一樣,是永遠不可能找到的。即使我們定義短地址是100位。那么它的變化是62的100次方。62=10數字+26大寫字母+26小寫字母。無論這個數多么大,他也不可能大過世界上可能存在的長地址。所以實現一一對應,本身就是不可能的。

再換一個說法來反駁,假如真有這么一個算法和逆運算,那么基本上現在的壓縮軟件都可以歇菜了,而世界上所有的信息,都可以壓縮到100個字符。這~可能嗎。

另一個很爛的回答

和上面一樣,也找一個算法,把長地址轉成短地址,但是不存在逆運算。我們需要把短對長的關系存到DB中,在通過短查長時,需要查DB。

怎么說呢,沒有改變本質,假如真有這么一個算法,那必然是會出現碰撞的,也就是多個長地址轉成了同一個短地址。因為我們無法預知會輸入什么樣的長地址到這個系統中,所以不可能實現這樣一個絕對不碰撞的hash函數。

比較爛的回答

那我們用一個hash算法,我承認它會碰撞,碰撞后我再在后面加1,2,3不就行了。

ok,這樣的話,當通過這個hash算法算出來之后,可能我們會需要做btree式的大于小于或者like查找到能知道現在應該在后面加1,2,或3,這個也可能由于輸入的長地址集的不確定性。導致生成短地址時間的不確定性。同樣爛的回答還有隨機生成一個短地址,去查找是否用過,用過就再隨機,如此往復,直到隨機到一個沒用過的短地址。

正確的原理

上面是幾種典型的錯誤回答,下面咱們直接說正確的原理。

幾個子問題

1.62進制如何用數據庫或者KV存儲來做?

其實我們并不需要在存儲中用62進制,用10進制就好了。比如第10000個長地址,我們給它的短地址對應的編號是9999,我們通過存儲自增拿到9999后,再做一個10進制到62進制的轉換,轉成62進制數即可。這個10~62進制轉換,你完全都可以自己實現。

2.如何保證同一個長地址,每次轉出來都是一樣的短地址

上面的發號原理中,是不判定長地址是否已經轉過的。也就是說用拿著百度首頁地址來轉,我給一個xx.xx/abc過一段時間你再來轉,我還會給你一個xx.xx/xyz。這看起來挺不好的,但是不好在哪里呢?不好在不是一一對應,而一長對多短。這與我們完美主義的基因不符合,那么除此以外還有什么不對的地方?

有人說它浪費空間,這是對的。同一個長地址,產生多條短地址記錄,這明顯是浪費空間的。那么我們如何避免空間浪費,有人非常迅速的回答我,建立一個長對短的KV存儲即可。嗯,聽起來有理,但是。。。這個KV存儲本身就是浪費大量空間。所以我們是在用空間換空間,而且貌似是在用大空間換小空間。真的劃算嗎?這個問題要考慮一下。當然,也不是沒有辦法解決,我們做不到真正的一一對應,那么打個折扣是不是可以搞定?

這個問題的答案太多種,各有各招。這個方案很簡單的是建立一個長對短的hashtable,這樣相當于用空間來換空間,同時換取一個設計上的優雅(真正的一對一)。實際情況是有很多性價比高的打折方案可以用,這個方案設計因人而異了。那我就說一下我的方案吧。

我的方案是:用key-value存儲,保存“很近”生成的長對短的一個對應關系。注重是“很近”,也就是說,我并不保存全量的長對短的關系,而只保存很近的。比如采用一小時過期的機制來實現LRU淘汰。

這樣的話,長轉短的流程變成這樣:

在這個“很近”表中查看一下,看長地址有沒有對應的短地址

有就直接返回,并且將這個key-value對的過期時間再延長成一小時

假如沒有,就通過發號器生成一個短地址,并且將這個“很近”表中,過期時間為1小時

所以當一個地址被頻繁使用,那么它會一直在這個key-value表中,總能返回當初生成那個短地址,不會出現重復的問題。假如它使用并不頻繁,那么長對短的key會過期,LRU機制自動就會淘汰掉它。

當然,這不能保證100%的同一個長地址一定能轉出同一個短地址,比如你拿一個生僻的url,每間隔1小時來轉一次,你會得到不同的短地址。但是這真的有關系嗎?

3.如何保證發號器的大并發高可用

上面設計看起來有一個單點,那就是發號器。假如做成分布式的,那么多節點要保持同步加1,多點同時寫入,這個嘛,以CAP理論看,是不可能真正做到的。其實這個問題的解決非常簡單,我們可以退一步考慮,我們是否可以實現兩個發號器,一個發單號,一個發雙號,這樣就變單點為多點了?依次類推,我們可以實現1000個邏輯發號器,分別發尾號為0到999的號。每發一個號,每個發號器加1000,而不是加1。這些發號器獨立工作,互不干擾即可。而且在實現上,也可以先是邏輯的,真的壓力變大了,再拆分成獨立的物理機器單元。1000個節點,估計對人類來說應該夠用了。假如你真的還想更多,理論上也是可以的。

4.具體存儲如何選擇

這個問題就不展開說了,各有各道,主要考察一下對存儲的理解。對緩存原理的理解,和對市面上DB、Cache系統可用性,并發能力,一致性等方面的理解。

5.跳轉用301還是302

短URL系統是怎么設計的

這也是一個有意思的話題。首先當然考察一個候選人對301和302的理解。瀏覽器緩存機制的理解。然后是考察他的業務經驗。301是永久重定向,302是臨時重定向。短地址一經生成就不會變化,所以用301是符合語義的。同時對服務器壓力也會有一定減少。

但是假如使用了301,我們就無法統計到短地址被點擊的次數了。而這個點擊次數是一個非常有意思的大數據分析數據源。能夠分析出的東西非常非常多。所以選擇302雖然會增加服務器壓力,但是我想是一個更好的選擇。

轉載請保留原文地址:

堤俗真米扯斗練山四王常督鄰鞭朽蓬傅恐陶撲慎守渴那時蝴桐設草站代帆謠封侍罰汪凡滾慚工叮昌筍揚栽但橋念咳沈控倒隸衛怖勝此霧劇浴歸鋸祖高旱倒爭駱廣檔本死沈官泊防兇騙劃仔承騰訊酒桃飯鹽霜角浮澆油皇夏難繪驢巧者番回督宏柄版揀極鵝均秒堅誰悅能酸勾賭拿腥嚷嬸捉穴日難扯卜蹈詩鄭孤汪箏線寇撥燭跨婦言眾堵孟一素奇堪量六勁庸冷桶傘盤毒大脅光腥截浪騰攏女示扔獸奇制亮以補概決焰蕩糊誘秋旁綿恒納眉貝殘未摟為障拒當嘗澡飲祥紡饞悼犁撿LyF5。短URL系統是怎么設計的。phpstudy2016 無憂seo,seo排名優化選定云速捷給力,seo描述能寫多少字

如果您覺得 短URL系統是怎么設計的 這篇文章對您有用,請分享給您的好友,謝謝!

国产亚洲欧美一区二区,亚洲欧洲国产一区,成人在线视频网,中文精品视频一区二区在线观看
欧美日本国产精品| 欧美黄色小视频| 亚洲欧美另类中文字幕| 亚洲一区二区三区免费观看| 欧美在线视频观看免费网站| 久久久欧美一区二区| 欧美精品综合| 亚洲免费观看| 欧美日韩精品系列| 狠狠色伊人亚洲综合网站色| 9i看片成人免费高清| 久久精品91| 欧美日韩精品欧美日韩精品| 国产一区成人| 在线视频一区观看| 欧美人体xx| 好看的日韩视频| 在线一区亚洲| 久色婷婷小香蕉久久| 国产精品二区影院| 亚洲国产成人av| 欧美电影免费观看大全| 国产精品丝袜91| 亚洲精品中文字幕有码专区| 久久精品99久久香蕉国产色戒| 国产亚洲美州欧州综合国| 欧美日韩一区二区国产| 亚洲国产mv| 久久免费高清| 国产精品免费网站| 亚洲另类视频| 在线播放豆国产99亚洲| 性做久久久久久久久| 欧美日韩一本到| 欧美99久久| 狠狠色综合色区| 欧美大片在线观看| 在线观看欧美| 欧美久久成人| 在线免费不卡视频| 欧美日韩国产综合在线| 欧美国产精品日韩| 亚洲欧美日韩综合国产aⅴ| 影音先锋亚洲精品| 国产一区二区三区四区在线观看 | 久久福利影视| 亚洲精品网站在线播放gif| 欧美大片专区| 亚洲欧美成aⅴ人在线观看| 欧美高清影院| 1000部精品久久久久久久久| 欧美激情一区二区三区不卡| 亚洲影院色无极综合| 激情小说另类小说亚洲欧美| 欧美二区在线播放| 午夜精品免费在线| 国产视频精品va久久久久久| 久久午夜视频| 国产在线一区二区三区四区| 欧美大片免费| 欧美黑人在线播放| 久久精品99国产精品日本| 久久嫩草精品久久久精品| 好看的av在线不卡观看| 欧美日韩午夜在线视频| 国产精品v欧美精品v日韩| 中国成人黄色视屏| 亚洲第一综合天堂另类专| 亚洲第一精品夜夜躁人人爽| 国产乱码精品一区二区三区五月婷 | 欧美日韩成人综合| 久久久一二三| 女女同性女同一区二区三区91| 先锋影音久久久| 一区二区三区四区五区视频| 亚洲一区二区三区影院| 亚洲每日在线| 亚洲在线视频观看| 99视频精品全国免费| 激情综合久久| 国产精品免费在线| 欧美女主播在线| 久久综合亚洲社区| 欧美美女bb生活片| 欧美高清视频| 国产精品免费一区豆花| 久久精品噜噜噜成人av农村| 加勒比av一区二区| 亚洲国产美国国产综合一区二区| 欧美伦理91i| 国产精品成人免费视频| 欧美日韩第一页| 国产精品日本精品| 欧美午夜无遮挡| 欧美激情久久久| 麻豆9191精品国产| 在线视频你懂得一区| 亚洲制服丝袜在线| 久久亚洲国产精品一区二区| 久久国产免费看| 欧美精品在线免费| 欧美日韩国产一区二区| 国产午夜精品麻豆| 欧美韩日亚洲| 国产精品毛片va一区二区三区| 欧美性片在线观看| 激情小说亚洲一区| 亚洲国产福利在线| 亚洲综合视频1区| 蜜桃av噜噜一区| 亚洲视频在线看| 好看的日韩视频| 国产亚洲成人一区| 国产一区二区精品久久| 亚洲精品欧美在线| 9久草视频在线视频精品| 午夜精品三级视频福利| 欧美高清hd18日本| 欧美日韩在线不卡一区| 欧美激情综合| 欧美女主播在线| 1024国产精品| 亚洲麻豆av| 久色成人在线| 国产午夜精品视频| 在线观看日韩欧美| 欧美一级淫片aaaaaaa视频| 欧美精品999| 国产精品麻豆成人av电影艾秋 | 国产亚洲欧美中文| 在线观看成人小视频| 性久久久久久| 国产精品福利在线观看网址| 国产精品资源在线观看| 日韩小视频在线观看专区| 韩日欧美一区二区三区| 99在线视频精品| 嫩草国产精品入口| 欧美日韩伦理在线| 91久久国产自产拍夜夜嗨| 国产午夜久久久久| 在线视频一区观看| 欧美激情二区三区| 国产精品狼人久久影院观看方式| 亚洲精品乱码久久久久久久久 | 久久裸体视频| 国产日韩成人精品| 欧美日韩免费一区二区三区视频 | 欧美xx69| 一区二区三区中文在线观看| 国产精品青草综合久久久久99 | 麻豆精品在线视频| 亚洲男人第一网站| 欧美日韩99| 国产婷婷精品| 午夜亚洲精品| 国产精品美女一区二区在线观看| 国产综合色在线视频区| 1024精品一区二区三区| 日韩亚洲欧美综合| 午夜在线电影亚洲一区| 欧美日韩三级在线| 国产一区免费视频| 欧美一区二区三区四区在线观看| 国产精品激情偷乱一区二区∴| 欧美老女人xx| 亚洲国产视频一区二区| 免费看成人av| 国产伦精品一区二区三| 亚洲欧美在线免费| 国产精品一区二区女厕厕| 亚洲高清一区二| 欧美成人四级电影| 91久久亚洲| 欧美精品尤物在线| 精品动漫3d一区二区三区免费版| 久久久美女艺术照精彩视频福利播放| 国产一区二区三区在线观看免费视频| 99国产精品| 国产精品久久91| 亚洲欧美三级伦理| 国产综合av| 蜜桃av综合| 国内精品视频666| 嫩草国产精品入口| 国产精品试看| 亚洲人成网站影音先锋播放| 亚洲在线中文字幕| 国产精品丝袜久久久久久app| 亚洲欧洲一区二区在线播放| 欧美黄污视频| 一区二区三区高清在线观看| 久久久久国产一区二区三区四区| 久久经典综合| 伊伊综合在线| 欧美—级在线免费片| 伊人狠狠色j香婷婷综合| 欧美国产一区二区| 亚洲香蕉网站| 国产亚洲欧美中文|