精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Pastebin設(shè)計(jì)之旅:從零設(shè)計(jì)網(wǎng)絡(luò)文本存儲(chǔ)系統(tǒng)

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
我們可以在數(shù)據(jù)庫(kù)中每個(gè)URL的條目里存儲(chǔ)訪問(wèn)權(quán)限級(jí)別(公開(kāi)/私有)。我們也可以創(chuàng)建一個(gè)單獨(dú)的表來(lái)存儲(chǔ)有權(quán)訪問(wèn)特定URL的用戶(hù)的UserID。

項(xiàng)目簡(jiǎn)介:Pastebin是一個(gè)在線的文本存儲(chǔ)平臺(tái),讓用戶(hù)可以存儲(chǔ)和分享代碼片段或者其他類(lèi)型的文本。它支持多種編程和標(biāo)記語(yǔ)言的語(yǔ)法高亮,用戶(hù)可以選擇讓他們的"paste"公開(kāi)或私有。無(wú)需注冊(cè)就可以使用,但注冊(cè)用戶(hù)可以更方便地管理他們的"paste"。Pastebin常被開(kāi)發(fā)者、系統(tǒng)管理員以及其他技術(shù)專(zhuān)業(yè)人員用于分享和協(xié)作。

現(xiàn)在讓我們來(lái)設(shè)計(jì)一個(gè)類(lèi)似Pastebin的網(wǎng)絡(luò)服務(wù),用戶(hù)可以在這里儲(chǔ)存純文本。用戶(hù)可以輸入一段文本,并獲取一個(gè)隨機(jī)生成的URL來(lái)訪問(wèn)這段文本。

類(lèi)似的產(chǎn)品有:pastebin.com,controlc.com,hastebin.com,privatebin.net

系統(tǒng)難度等級(jí):初級(jí)

1、什么是Pastebin

Pastebin及類(lèi)似服務(wù)讓用戶(hù)能夠在網(wǎng)絡(luò)(通常指的是互聯(lián)網(wǎng))上存儲(chǔ)純文本或圖像,并生成唯一的URL來(lái)訪問(wèn)上傳的數(shù)據(jù)。這樣的服務(wù)也被用來(lái)快速地在網(wǎng)絡(luò)上共享數(shù)據(jù),用戶(hù)只需傳遞URL,其他用戶(hù)就可以查看其內(nèi)容。

如果你以前沒(méi)有使用過(guò)pastebin.com,建議嘗試在那里創(chuàng)建一個(gè)新的“Paste”,并花些時(shí)間瀏覽他們服務(wù)提供的不同選項(xiàng)。這將在理解本章時(shí)有很大幫助。

對(duì)于類(lèi)似于Pastebin這樣的代碼或文本分享平臺(tái),中國(guó)并未有一款特別知名或廣泛使用的網(wǎng)站。很多開(kāi)發(fā)者會(huì)使用GitHub Gist來(lái)分享代碼片段,此外,國(guó)內(nèi)也有一些代碼托管平臺(tái),比如Coding.net和Gitee,也提供代碼分享和協(xié)作的功能。

2、系統(tǒng)的需求和目標(biāo)

Pastebin服務(wù)需要滿(mǎn)足以下要求:

功能需求

  1. 用戶(hù)應(yīng)能夠上傳或“粘貼”他們的數(shù)據(jù),并獲得一個(gè)獨(dú)特的URL來(lái)訪問(wèn)它。
  2. 用戶(hù)只能上傳文本。
  3. 數(shù)據(jù)和鏈接將在特定的時(shí)間段后自動(dòng)過(guò)期;用戶(hù)應(yīng)可以指定過(guò)期時(shí)間。
  4. 用戶(hù)可以選擇為他們的粘貼內(nèi)容設(shè)置一個(gè)自定義的別名。

非功能性需求

  1. 系統(tǒng)必須具有高度的可靠性,上傳的任何數(shù)據(jù)都不應(yīng)丟失。
  2. 系統(tǒng)必須始終可用。這是因?yàn)槿绻覀兊姆?wù)暫停,用戶(hù)將無(wú)法訪問(wèn)他們的粘貼內(nèi)容。
  3. 用戶(hù)應(yīng)能實(shí)時(shí)訪問(wèn)他們的粘貼內(nèi)容,延遲要最小。
  4. 粘貼的鏈接不能被輕易猜出(不能被預(yù)測(cè))。

擴(kuò)展需求

  1. 分析,例如,一個(gè)粘貼內(nèi)容被訪問(wèn)了多少次?
  2. 我們的服務(wù)也應(yīng)該通過(guò)REST APIs供其他服務(wù)訪問(wèn)。

3、注意事項(xiàng)

Pastebin與URL縮短服務(wù)(系統(tǒng)設(shè)計(jì)上一個(gè)案例)有一些相同的需求,但是我們還應(yīng)該考慮一些額外的設(shè)計(jì)因素。

用戶(hù)每次粘貼的文本量應(yīng)有何限制?我們可以限制用戶(hù)不得粘貼超過(guò)10MB10MB10MB的數(shù)據(jù),以防止服務(wù)被濫用。

我們是否應(yīng)對(duì)自定義URL的大小設(shè)置限制?由于我們的服務(wù)支持自定義URL,用戶(hù)可以選擇他們喜歡的任何URL,但是提供自定義URL并非強(qiáng)制性的。然而,對(duì)自定義URL設(shè)置大小限制是合理的(而且通常是我們期望的),這樣我們可以保持一致的URL數(shù)據(jù)庫(kù)。

4、容量估計(jì)與約束

我們的服務(wù)將是讀取密集型的;相比新建Paste,讀取請(qǐng)求會(huì)更多。我們可以假設(shè)讀取與寫(xiě)入之間的比例是5:1。

流量預(yù)估:Pastebin類(lèi)似的服務(wù)并不預(yù)期有如微信或今日頭條那樣的流量,這里我們假設(shè)每天有一百萬(wàn)個(gè)新的粘貼內(nèi)容添加到我們的系統(tǒng)中。這樣算來(lái),我們每天有五百萬(wàn)次的讀取。

每秒新粘貼內(nèi)容

1M / (24 小時(shí) * 3600 秒) ~= 12 粘貼/秒

每秒粘貼讀取次數(shù)

5M / (24 小時(shí) * 3600 秒) ~= 58 讀取/秒

存儲(chǔ)預(yù)估:用戶(hù)最多可以上傳10MB的數(shù)據(jù);一般來(lái)說(shuō),Pastebin類(lèi)似的服務(wù)用于分享源代碼、配置文件或日志。這些文本并不大,所以我們假設(shè)每個(gè)粘貼內(nèi)容平均含有10KB10KB10KB。

按照這個(gè)速率,我們每天將存儲(chǔ)10GB的數(shù)據(jù)。

1M * 10KB => 10 GB/天

如果我們想將這些數(shù)據(jù)存儲(chǔ)十年,那我們總共需要36TB的存儲(chǔ)容量。

每天有1M的粘貼內(nèi)容,十年后我們將有36億的粘貼內(nèi)容。我們需要生成并存儲(chǔ)鍵來(lái)唯一地標(biāo)識(shí)這些粘貼內(nèi)容。如果我們使用Base64編碼([A-Z, a-z, 0-9, ., -]),我們將需要六個(gè)字符的字符串:

64^6 ~= 68.7億個(gè)唯一字符串

如果存儲(chǔ)一個(gè)字符需要一個(gè)字節(jié),存儲(chǔ)36億個(gè)鍵所需的總大小將是:

3.6B?6=>22GB

相比于36TB,22GB微不足道。為了保留一些余量,我們將假設(shè)一個(gè)70%的容量模型(意味著我們?cè)谌魏螘r(shí)候都不希望使用超過(guò)總存儲(chǔ)容量的70%),這將使我們的存儲(chǔ)需求增加到 51.4TB。

帶寬預(yù)估:對(duì)于寫(xiě)入請(qǐng)求,我們預(yù)計(jì)每秒新增12個(gè)粘貼內(nèi)容,導(dǎo)致每秒進(jìn)入120KB的數(shù)據(jù)。

12?10KB=>120KB/s

至于讀取請(qǐng)求,我們預(yù)計(jì)每秒58個(gè)請(qǐng)求。因此,總的數(shù)據(jù)出口(發(fā)送給用戶(hù))將是0.6MB/s。

58?10KB=>0.6MB/s

盡管總的進(jìn)出口并不大,我們?cè)谠O(shè)計(jì)服務(wù)時(shí)應(yīng)記住這些數(shù)字。

內(nèi)存預(yù)估:我們可以緩存一些被頻繁訪問(wèn)的熱門(mén)粘貼內(nèi)容。根據(jù)80-20原則,意味著20%的熱門(mén)粘貼內(nèi)容產(chǎn)生了80%的流量,我們希望將這20%的粘貼內(nèi)容進(jìn)行緩存。

既然我們每天有500萬(wàn)次的讀取請(qǐng)求,要緩存這些請(qǐng)求中的20%,我們需要:

0.2?5M?10KB =10GB

因此,我們大約需要10GB的內(nèi)存來(lái)緩存那些熱門(mén)的粘貼內(nèi)容。

5、系統(tǒng)API

我們可以有SOAP或REST API來(lái)公開(kāi)我們服務(wù)的功能。以下是創(chuàng)建/檢索/刪除粘貼內(nèi)容的API定義:

addPaste(api_dev_key, paste_data, custom_url=None user_name=None, paste_name=None, expire_date=None)

參數(shù)

api_dev_key (字符串): 已注冊(cè)帳戶(hù)的API開(kāi)發(fā)者密鑰。這將用于基于分配的配額對(duì)用戶(hù)進(jìn)行限流等操作。

paste_data (字符串): 粘貼的文本數(shù)據(jù)。

custom_url (字符串): 可選的自定義URL。

user_name (字符串): 可選的用于生成URL的用戶(hù)名。

paste_name (字符串): 粘貼內(nèi)容的可選名稱(chēng)。

expire_date (字符串): 粘貼內(nèi)容的可選過(guò)期日期。

返回: (字符串)

成功插入返回可以訪問(wèn)粘貼內(nèi)容的URL,否則,它將返回一個(gè)錯(cuò)誤碼。

類(lèi)似地,我們可以有檢索和刪除粘貼內(nèi)容的API:

getPaste(api_dev_key, api_paste_key)

其中api_paste_key是一個(gè)表示要檢索的粘貼內(nèi)容的粘貼鍵的字符串。這個(gè)API將返回粘貼內(nèi)容的文本數(shù)據(jù)。

deletePaste(api_dev_key, api_paste_key)

成功刪除返回true,否則返回false。

6、數(shù)據(jù)庫(kù)設(shè)計(jì)

關(guān)于我們存儲(chǔ)的數(shù)據(jù)性質(zhì),我們有一些觀察:

  1. 我們需要存儲(chǔ)數(shù)十億條記錄。
  2. 我們存儲(chǔ)的每個(gè)元數(shù)據(jù)對(duì)象都很小(小于1KB)。
  3. 我們存儲(chǔ)的每個(gè)粘貼對(duì)象大小適中(可以達(dá)到幾MB)。
  4. 記錄之間沒(méi)有關(guān)系,除非我們要存儲(chǔ)哪個(gè)用戶(hù)創(chuàng)建了哪個(gè)粘貼內(nèi)容。
  5. 我們的服務(wù)主要是讀取操作。

數(shù)據(jù)庫(kù)架構(gòu)

我們需要兩個(gè)表,一個(gè)用于存儲(chǔ)粘貼內(nèi)容的信息,另一個(gè)用于存儲(chǔ)用戶(hù)的數(shù)據(jù)。

這里,URlHash是TinyURL的URL等效項(xiàng),ContentKey是指向一個(gè)外部對(duì)象的引用,該對(duì)象存儲(chǔ)粘貼內(nèi)容的內(nèi)容;我們將在本章后面討論粘貼內(nèi)容的外部存儲(chǔ)。

7、頂層設(shè)計(jì)

在頂層設(shè)計(jì)上,我們需要一個(gè)應(yīng)用層來(lái)處理所有的讀取和寫(xiě)入請(qǐng)求。應(yīng)用層將與存儲(chǔ)層進(jìn)行通信,以存儲(chǔ)和檢索數(shù)據(jù)。我們可以將存儲(chǔ)層劃分為兩部分,一部分?jǐn)?shù)據(jù)庫(kù)存儲(chǔ)與每個(gè)粘貼內(nèi)容、用戶(hù)等相關(guān)的元數(shù)據(jù),另一部分將粘貼內(nèi)容存儲(chǔ)在某些對(duì)象存儲(chǔ)中(如阿里云OSS)。這種數(shù)據(jù)的劃分也允許我們單獨(dú)進(jìn)行擴(kuò)展。

8、組件設(shè)計(jì)

A. 應(yīng)用層

我們的應(yīng)用層將處理所有的進(jìn)出請(qǐng)求。應(yīng)用服務(wù)器將與后端數(shù)據(jù)存儲(chǔ)組件進(jìn)行通信以服務(wù)這些請(qǐng)求。

如何處理寫(xiě)入請(qǐng)求?在收到寫(xiě)入請(qǐng)求后,我們的應(yīng)用服務(wù)器將生成一個(gè)六位隨機(jī)字符串,這將作為粘貼的鍵(如果用戶(hù)沒(méi)有提供自定義鍵)。然后,應(yīng)用服務(wù)器將粘貼的內(nèi)容和生成的鍵存儲(chǔ)在數(shù)據(jù)庫(kù)中。成功插入后,服務(wù)器可以將鍵返回給用戶(hù)。這里可能存在的一個(gè)問(wèn)題是由于鍵重復(fù)而導(dǎo)致插入失敗。由于我們是生成一個(gè)隨機(jī)鍵,所以新生成的鍵可能與現(xiàn)有的鍵相匹配。在這種情況下,我們應(yīng)該重新生成一個(gè)新的鍵并再試一次。我們應(yīng)該一直重試,直到我們不再因?yàn)橹貜?fù)鍵看到失敗。如果用戶(hù)提供的自定義鍵已經(jīng)在我們的數(shù)據(jù)庫(kù)中存在,我們應(yīng)該向用戶(hù)返回一個(gè)錯(cuò)誤。

上述問(wèn)題的另一種解決方案可能是運(yùn)行一個(gè)獨(dú)立的鍵生成服務(wù)(KGS),它提前生成隨機(jī)的六位字符串,并將它們存儲(chǔ)在數(shù)據(jù)庫(kù)中(我們稱(chēng)之為key-DB)。每當(dāng)我們想要存儲(chǔ)一個(gè)新的粘貼,我們只需要取一個(gè)已經(jīng)生成的鍵并使用它。這種方法將使事情變得非常簡(jiǎn)單和快速,因?yàn)槲覀儾粫?huì)擔(dān)心重復(fù)或碰撞。KGS將確保所有插入key-DB的鍵都是唯一的。

KGS可以使用兩個(gè)表來(lái)存儲(chǔ)鍵,一個(gè)用于尚未使用的鍵,一個(gè)用于所有已使用的鍵。一旦KGS向應(yīng)用服務(wù)器提供了一些鍵,它可以將這些移動(dòng)到已使用的鍵表中。KGS可以始終在內(nèi)存中保持一些鍵,以便每當(dāng)服務(wù)器需要它們時(shí),它可以快速提供。一旦KGS在內(nèi)存中加載了一些鍵,它就可以將它們移動(dòng)到已使用的鍵表中;這樣我們就可以確保每個(gè)服務(wù)器獲取到的鍵都是唯一的。如果KGS在使用所有加載到內(nèi)存中的鍵之前死掉,我們將浪費(fèi)這些鍵。我們可以忽略這些鍵,因?yàn)槲覀冇写罅康逆I。

KGS會(huì)出現(xiàn)單點(diǎn)故障嗎?會(huì)的。為了解決這個(gè)問(wèn)題,我們可以有一個(gè)備用的KGS副本,每當(dāng)主服務(wù)器死掉時(shí),它可以接管來(lái)生成和提供鍵。

每個(gè)應(yīng)用服務(wù)器可以從key-DB中緩存一些鍵嗎?是的,這肯定可以加快速度。雖然在這種情況下,如果應(yīng)用服務(wù)器在消費(fèi)所有鍵之前死掉,我們將最終丟失那些鍵。這可能是可以接受的,因?yàn)槲覀冇?8B個(gè)唯一的六位字母鍵,這比我們需要的要多得多。

如何處理粘貼讀取請(qǐng)求?在收到讀取粘貼請(qǐng)求后,應(yīng)用服務(wù)層聯(lián)系數(shù)據(jù)存儲(chǔ)。數(shù)據(jù)存儲(chǔ)搜索鍵,如果找到了,就返回粘貼的內(nèi)容。否則,返回一個(gè)錯(cuò)誤碼。

B. 數(shù)據(jù)存儲(chǔ)層

我們可以將我們的數(shù)據(jù)存儲(chǔ)層分為兩部分:

  1. 元數(shù)據(jù)數(shù)據(jù)庫(kù):我們可以使用像MySQL這樣的關(guān)系數(shù)據(jù)庫(kù),或者像Dynamo或Cassandra這樣的分布式Key-Value存儲(chǔ)。
  2. 對(duì)象存儲(chǔ):我們可以將我們的內(nèi)容存儲(chǔ)在像阿里云OSS這樣的對(duì)象存儲(chǔ)中。每當(dāng)我們感覺(jué)到我們的內(nèi)容存儲(chǔ)容量已經(jīng)滿(mǎn)了,我們可以通過(guò)平臺(tái)直接擴(kuò)容。

9、數(shù)據(jù)分區(qū)和復(fù)制

為了擴(kuò)展我們的數(shù)據(jù)庫(kù),我們需要對(duì)其進(jìn)行分區(qū),以便它能存儲(chǔ)數(shù)十億個(gè)URL的信息。因此,我們需要設(shè)計(jì)一個(gè)分區(qū)方案,將我們的數(shù)據(jù)劃分并存儲(chǔ)到不同的數(shù)據(jù)庫(kù)中。

A. 基于范圍的分區(qū):我們可以根據(jù)哈希鍵的第一個(gè)字母在不同的分區(qū)中存儲(chǔ)URL。因此,我們將所有以字母“A”(和“a”)開(kāi)頭的URL哈希鍵存儲(chǔ)在一個(gè)分區(qū)中,將以字母“B”開(kāi)頭的URL存儲(chǔ)在另一個(gè)分區(qū)中,以此類(lèi)推。這種方法被稱(chēng)為基于范圍的分區(qū)。我們甚至可以將某些出現(xiàn)頻率較低的字母組合到一個(gè)數(shù)據(jù)庫(kù)分區(qū)中。因此,我們應(yīng)開(kāi)發(fā)一個(gè)靜態(tài)分區(qū)方案,始終以可預(yù)測(cè)的方式存儲(chǔ)/查找URL。

這種方法的主要問(wèn)題是可能導(dǎo)致數(shù)據(jù)庫(kù)服務(wù)器不平衡。例如,我們決定將所有以字母“E”開(kāi)頭的URL放入一個(gè)數(shù)據(jù)庫(kù)分區(qū),但后來(lái)我們發(fā)現(xiàn)以字母“E”開(kāi)頭的URL過(guò)多。

B. 基于哈希的分區(qū):在這種方案中,我們對(duì)存儲(chǔ)的對(duì)象進(jìn)行哈希。然后,我們根據(jù)哈希值計(jì)算使用哪個(gè)分區(qū)。在我們的情況下,我們可以獲取key或短鏈接的哈希值,以確定我們存儲(chǔ)數(shù)據(jù)對(duì)象的分區(qū)。

我們的哈希函數(shù)將隨機(jī)地將URL分配到不同的分區(qū)(例如,我們的哈希函數(shù)可以始終將任何key映射到[1...256]之間的一個(gè)數(shù)字)。這個(gè)數(shù)字將表示我們存儲(chǔ)對(duì)象的分區(qū)。

這種方法仍然可能導(dǎo)致分區(qū)負(fù)載過(guò)大,這可以通過(guò)使用'一致性哈希'來(lái)解決。

10、緩存

我們可以緩存頻繁訪問(wèn)的URL。我們可以使用任何現(xiàn)成的解決方案,比如Memcached,它可以存儲(chǔ)完整的URL及其對(duì)應(yīng)的哈希值。因此,應(yīng)用服務(wù)器在訪問(wèn)后端存儲(chǔ)之前,可以快速檢查緩存是否有所需的URL。

我們應(yīng)該有多少緩存內(nèi)存?我們可以從日流量的20%開(kāi)始,根據(jù)客戶(hù)的使用模式,我們可以調(diào)整需要多少緩存服務(wù)器。如上所估計(jì),我們需要170GB的內(nèi)存來(lái)緩存日流量的20%。目前的一些服務(wù)器可以擁有256GB的內(nèi)存,我們可以輕松將所有緩存放入一臺(tái)機(jī)器。或者,我們可以使用幾臺(tái)小一點(diǎn)的服務(wù)器來(lái)存儲(chǔ)所有這些熱門(mén)URL。

哪種緩存驅(qū)逐策略最適合我們的需求?當(dāng)緩存滿(mǎn)了,我們想用一個(gè)新的/更熱門(mén)的URL替換一個(gè)鏈接,我們應(yīng)該如何選擇?最近最少使用(LRU)可能是我們系統(tǒng)的一個(gè)合理策略。根據(jù)這個(gè)策略,我們首先丟棄最近最少使用的URL。我們可以使用Linked Hash Map或類(lèi)似的數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)我們的URL和哈希值,這也會(huì)記錄最近訪問(wèn)過(guò)的URL。

為了進(jìn)一步提高效率,我們可以復(fù)制我們的緩存服務(wù)器來(lái)分配它們之間的負(fù)載。

每個(gè)緩存副本如何更新?每當(dāng)有一個(gè)緩存未命中,我們的服務(wù)器會(huì)訪問(wèn)后端數(shù)據(jù)庫(kù)。當(dāng)這種情況發(fā)生,我們可以更新緩存,并將新的條目傳遞給所有的緩存副本。每個(gè)副本都可以通過(guò)添加新的條目來(lái)更新其緩存。如果副本已經(jīng)有了該條目,它可以簡(jiǎn)單地忽略它。

11、負(fù)載均衡(LB)

我們可以在系統(tǒng)中的三個(gè)位置添加負(fù)載均衡層:

  • 客戶(hù)端與應(yīng)用服務(wù)器之間
  • 應(yīng)用服務(wù)器與數(shù)據(jù)庫(kù)服務(wù)器之間
  • 應(yīng)用服務(wù)器與緩存服務(wù)器之間

最初,我們可以使用一個(gè)簡(jiǎn)單的輪詢(xún)方法,將進(jìn)入的請(qǐng)求均等地分配到后端服務(wù)器。這種負(fù)載均衡方法簡(jiǎn)單易行,不會(huì)引入任何額外的開(kāi)銷(xiāo)。這種方法的另一個(gè)優(yōu)點(diǎn)是,如果一個(gè)服務(wù)器死機(jī),負(fù)載均衡器會(huì)將其從輪詢(xún)中移除,停止向其發(fā)送任何流量。

輪詢(xún)負(fù)載均衡的一個(gè)問(wèn)題是,我們沒(méi)有考慮到服務(wù)器的負(fù)載。如果一個(gè)服務(wù)器過(guò)載或運(yùn)行緩慢,負(fù)載均衡器不會(huì)停止向該服務(wù)器發(fā)送新的請(qǐng)求。為了處理這個(gè)問(wèn)題,我們可以放置一個(gè)更優(yōu)的負(fù)載均衡解決方案,它定期查詢(xún)后端服務(wù)器的負(fù)載,并根據(jù)負(fù)載情況調(diào)整流量。

12、清除或數(shù)據(jù)庫(kù)清理

key條目是否應(yīng)永久存在,還是應(yīng)該被清除?如果達(dá)到用戶(hù)設(shè)定的過(guò)期時(shí)間,鏈接應(yīng)該怎么處理?

如果我們選擇持續(xù)尋找過(guò)期鏈接并將其刪除,這將對(duì)我們的數(shù)據(jù)庫(kù)產(chǎn)生很大壓力。相反,我們可以慢慢地刪除過(guò)期的鏈接,進(jìn)行懶人清理。我們的服務(wù)將確保只刪除過(guò)期的鏈接,盡管有些過(guò)期鏈接可能會(huì)存在更長(zhǎng)時(shí)間,但永遠(yuǎn)不會(huì)被返回給用戶(hù)。

  • 每當(dāng)用戶(hù)試圖訪問(wèn)一個(gè)已過(guò)期的鏈接,我們可以刪除該鏈接并向用戶(hù)返回錯(cuò)誤。
  • 我們可以設(shè)置一個(gè)單獨(dú)的清理服務(wù),定期從我們的存儲(chǔ)和緩存中刪除過(guò)期的鏈接。這個(gè)服務(wù)需要非常輕量,只在預(yù)計(jì)用戶(hù)流量較低的時(shí)候運(yùn)行。
  • 我們可以為每個(gè)鏈接設(shè)定一個(gè)默認(rèn)的過(guò)期時(shí)間(例如兩年)。
  • 刪除過(guò)期鏈接后,我們可以將該Key重新放回Key-DB,以供重復(fù)使用。
  • 我們是否應(yīng)刪除一段時(shí)間(比如說(shuō)六個(gè)月)內(nèi)沒(méi)有被訪問(wèn)過(guò)的鏈接?這可能有點(diǎn)不合適。由于存儲(chǔ)成本越來(lái)越低,我們可以決定永久保存鏈接。

13、數(shù)據(jù)跟蹤

我們?nèi)绾谓y(tǒng)計(jì)短鏈接被使用的次數(shù)、用戶(hù)的位置等信息?我們?nèi)绾蝺?chǔ)存這些統(tǒng)計(jì)信息?如果它是數(shù)據(jù)庫(kù)中的一部分,每次查看都需要更新,那么當(dāng)一個(gè)流行的短鏈接被大量并發(fā)請(qǐng)求瞬間涌入時(shí),會(huì)發(fā)生什么?

一些值得追蹤的統(tǒng)計(jì)數(shù)據(jù):訪客的國(guó)家、訪問(wèn)的日期和時(shí)間、引導(dǎo)點(diǎn)擊的網(wǎng)頁(yè)、訪問(wèn)頁(yè)面的瀏覽器或平臺(tái)。

14、安全和權(quán)限

用戶(hù)能否創(chuàng)建私有URL或者允許特定的用戶(hù)組訪問(wèn)某個(gè)URL?

我們可以在數(shù)據(jù)庫(kù)中每個(gè)URL的條目里存儲(chǔ)訪問(wèn)權(quán)限級(jí)別(公開(kāi)/私有)。我們也可以創(chuàng)建一個(gè)單獨(dú)的表來(lái)存儲(chǔ)有權(quán)訪問(wèn)特定URL的用戶(hù)的UserID。如果一個(gè)用戶(hù)沒(méi)有權(quán)限但試圖訪問(wèn)一個(gè)URL,我們可以返回一個(gè)錯(cuò)誤(HTTP 401)。考慮到我們的數(shù)據(jù)儲(chǔ)存在一個(gè)類(lèi)似Cassandra的NoSQL寬列數(shù)據(jù)庫(kù)中,儲(chǔ)存權(quán)限的表的key將是‘哈希值’(或KGS生成的key)。列將儲(chǔ)存有權(quán)查看URL的用戶(hù)的UserID。

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2018-03-07 10:35:45

云計(jì)算存儲(chǔ)系統(tǒng)

2009-10-14 14:56:19

網(wǎng)絡(luò)綜合布線系統(tǒng)

2023-07-12 08:44:46

湖倉(cāng)存儲(chǔ)系統(tǒng)數(shù)據(jù)湖

2017-07-04 10:58:57

SAN存儲(chǔ)網(wǎng)絡(luò)存儲(chǔ)系統(tǒng)架構(gòu)

2017-10-25 08:44:03

NVMe SSD數(shù)據(jù)存儲(chǔ)

2011-09-05 09:23:50

2012-12-28 17:31:06

2018-09-29 14:08:04

存儲(chǔ)系統(tǒng)分布式

2024-11-11 08:31:32

2015-06-16 11:51:17

百度云NoSQLAtlas

2024-11-25 09:10:03

2019-01-28 11:46:53

架構(gòu)運(yùn)維技術(shù)

2018-01-31 08:44:20

數(shù)據(jù)存儲(chǔ)存儲(chǔ)設(shè)備存儲(chǔ)系統(tǒng)

2018-01-19 08:35:47

存儲(chǔ)系統(tǒng)SAS

2017-11-08 11:22:46

存儲(chǔ)趨勢(shì)系統(tǒng)

2022-08-08 16:33:24

智能建筑樓宇自控物聯(lián)網(wǎng)

2016-12-05 18:11:29

2015-03-20 10:13:34

IP存儲(chǔ)網(wǎng)絡(luò)博科EMC

2019-06-17 23:25:04

NebulasFs架構(gòu)分布式

2021-10-12 19:01:35

網(wǎng)站頁(yè)眉導(dǎo)航
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

亚洲色图狂野欧美| 亚洲综合免费观看高清完整版在线 | 男人的天堂免费| 久草在线资源站手机版| 国产拍欧美日韩视频二区| 亚洲精品免费av| 91在线视频在线观看| 99精品美女| 亚洲第一av在线| 向日葵污视频在线观看| 伦理在线一区| 国产欧美精品一区二区三区四区| 久久久久高清精品| 久久人人爽亚洲精品天堂| 日韩女优在线视频| 欧美暴力调教| 亚洲一区二区三区四区的| 日韩av大全| 免费看日韩av| 韩国成人福利片在线播放| 51精品国产黑色丝袜高跟鞋| 26uuu成人网| 国产探花一区| 亚洲精品wwww| 小日子的在线观看免费第8集| 婷婷午夜社区一区| 亚洲午夜精品在线| 先锋影音男人资源| 风间由美一区| 久久综合九色综合欧美98| 99se婷婷在线视频观看| 97免费观看视频| 蜜桃av噜噜一区二区三区小说| 午夜精品久久久久久久99黑人| 成人免费精品动漫网站| 日韩精品二区| 在线播放国产一区二区三区| 国产人妻一区二区| 秋霞蜜臀av久久电影网免费| 精品国产电影一区二区| 日本77777| 视频欧美精品| 欧美日韩免费在线视频| 天天碰免费视频| 综合日韩av| 狠狠做深爱婷婷久久综合一区| 国产欧美久久久久| 99热99re6国产在线播放| 一区二区三区色| www.国产亚洲| 在线三级电影| 夜夜爽夜夜爽精品视频| 欧美 日韩 国产 在线观看| 亚洲s色大片| 国产精品久久久久久妇女6080| 色吧亚洲视频| av大片在线播放| 国产精品乱码人人做人人爱 | 一区二区三区午夜视频| 久久精品一区中文字幕| 欧美另类videoxo高潮| 亚洲国产日韩欧美在线| 美乳少妇欧美精品| 精品无码人妻一区二区三| 韩日欧美一区| 97视频在线观看视频免费视频| 五月婷婷色丁香| 久久婷婷亚洲| 国产精品一区二区三区免费视频| 亚洲综合精品国产一区二区三区 | 午夜一区二区三区免费| 亚洲欧洲免费| 中文国产成人精品久久一| 美女网站视频色| 欧美精品99| 性色av一区二区咪爱| 亚洲第一精品在线观看| 日韩国产在线观看一区| 国产日韩在线视频| 亚洲精品18p| 91一区二区三区在线观看| 青青影院一区二区三区四区| 秋霞成人影院| 亚洲大片在线观看| 在线观看av日韩| 精品午夜视频| 亚洲精品国产福利| 粉嫩精品久久99综合一区| 在线精品国产| 欧美夜福利tv在线| 国产精品伦一区二区三区| av在线不卡免费看| 色综合影院在线观看| 性xxxfreexxxx性欧美| 欧美日韩亚洲一区二| 国产福利精品一区二区三区| 高清精品视频| 中文字幕亚洲情99在线| 成人免费看片98| 日本成人在线不卡视频| 99re国产| 91网页在线观看| 性做久久久久久久久| 天天视频天天爽| 好吊妞视频这里有精品| 最新91在线视频| 日本熟妇毛茸茸丰满| 日本成人中文字幕在线视频| 国产精品推荐精品| 欧美性videos| 色婷婷国产精品综合在线观看| 亚洲在线观看网站| 国产区精品区| 孩xxxx性bbbb欧美| 国产精选久久久| 国产欧美一区二区三区鸳鸯浴| 欧美高清中文字幕| 欧美天堂在线| 亚洲成人亚洲激情| 欧美激情精品久久久久久免费 | 高清av免费看| 欧美三级午夜理伦三级小说| 不卡毛片在线看| 亚洲熟妇无码久久精品| 久久色成人在线| 天堂…中文在线最新版在线| 日韩精品一级| 久久久精品久久久| 中文字幕一区二区三区四区免费看| 99在线视频精品| 97久久国产亚洲精品超碰热| 亚洲欧美在线人成swag| 在线中文字幕日韩| 69视频免费看| 久久蜜臀精品av| 一区二区传媒有限公司| 91欧美极品| 欧美美最猛性xxxxxx| 97超视频在线观看| 中文字幕制服丝袜成人av | 国产成人在线视频网址| 在线观看日韩片| 精品福利在线| 日韩在线视频播放| 一级特黄色大片| 中文字幕一区三区| 欧美日韩一区二区三区69堂| 色婷婷综合网| 成人午夜一级二级三级| 成人ww免费完整版在线观看| 日韩一卡二卡三卡| 青青草原免费观看| 国产iv一区二区三区| 男人添女荫道口女人有什么感觉| 97品白浆高清久久久久久| 欧美激情亚洲一区| 国模人体一区二区| 精品久久久久国产| 黄色工厂在线观看| 日韩高清一区二区| 亚洲日本欧美在线| av在线精品| 欧美激情久久久久| 无码国产色欲xxxx视频| 一本久久a久久精品亚洲| 欧美熟妇激情一区二区三区| 免费看黄色91| 在线观看三级网站| 成人知道污网站| 欧美影院在线播放| 97视频在线观看网站| 678五月天丁香亚洲综合网| 欧美片一区二区| 成人aa视频在线观看| 国产主播在线看| 日韩av有码| 99久久99| 成人日韩精品| 免费不卡在线观看av| 色婷婷在线视频| 欧美在线免费播放| 成人免费精品动漫网站| 成+人+亚洲+综合天堂| 99免费视频观看| 亚洲精品2区| 精品久久中出| 日韩电影精品| 97精品免费视频| 99中文字幕一区| 精品国产伦一区二区三区观看体验 | aaaaa一级片| 国产呦萝稀缺另类资源| 欧美深夜福利视频| 999成人网| 九九九九精品| 成人97精品毛片免费看| 欧美一性一乱一交一视频| 日本视频在线观看| 日韩国产中文字幕| 国产乱淫片视频| 欧美性xxxxx极品| 久热这里有精品| 2020国产精品| 免费黄色av网址| 麻豆国产91在线播放| 和岳每晚弄的高潮嗷嗷叫视频| 精品国产一区二区三区噜噜噜| 成人免费看片网址| 日韩专区视频| 国产精品电影网| 国产中文在线播放| 欧美激情第三页| 在线免费观看黄色网址| 精品一区二区三区三区| 亚洲精品久久久久avwww潮水| 欧美视频一区二区在线观看| 日韩精品在线免费视频| 一区二区三区国产豹纹内裤在线| 91视频免费在观看| www精品美女久久久tv| 日本久久久久久久久久| 精品亚洲国内自在自线福利| aaa毛片在线观看| 亚洲激情黄色| 精品久久久无码人妻字幂| 欧美少妇性xxxx| 日韩动漫在线观看| 国产成人1区| 久久综合伊人77777麻豆| 加勒比视频一区| 国产精品 日韩| 国产视频一区二区在线播放| 成人性生交xxxxx网站| 国产一区二区三区四区五区3d| 97精品久久久| 麻豆mv在线看| 91精品国产91久久久久久不卡| 91www在线| 97国产精品免费视频| 91禁在线看| 97久久精品在线| 老司机深夜福利在线观看| 久久久久久久影院| 高清毛片在线观看| 7777免费精品视频| 日韩精品av| 欧美最近摘花xxxx摘花| 美女100%一区| 国产福利视频一区| 天然素人一区二区视频| 国产精品电影一区| 亚洲欧美一级| 97影院在线午夜| 国产精品2023| 激情小说综合区| 一区二区三区视频免费观看| 日本不卡一区二区三区视频| 欧美理论电影大全| 一区二区三区四区免费视频| 一本到12不卡视频在线dvd| 欧美a级黄色大片| 在线看片成人| 大肉大捧一进一出好爽动态图| 日韩综合小视频| 向日葵污视频在线观看| 国产精品12区| 真人bbbbbbbbb毛片| 91麻豆国产福利在线观看| 亚洲一区二区自偷自拍| 亚洲视频网在线直播| 久久黄色小视频| 色悠悠久久综合| 一区二区三区午夜| 日韩欧美黄色影院| 国产又爽又黄网站亚洲视频123| 亚洲另类图片色| 免费在线看黄色| 欧美劲爆第一页| 麻豆精品蜜桃| 51精品国产人成在线观看 | 制服诱惑一区| 激情91久久| 91蝌蚪视频在线观看| 黑人巨大精品欧美一区| 欧美日韩一区二区三区四区五区六区| 91亚洲国产成人精品一区二三| 日韩影视一区二区三区| 洋洋成人永久网站入口| 国产成人精品777777| 91精品国产欧美日韩| 天天在线女人的天堂视频| www.xxxx欧美| 美女av在线免费看| 成人福利视频在线观看| 窝窝社区一区二区| 黄色一级片国产| 日本成人在线一区| 7788色淫网站小说| 18欧美亚洲精品| 波多野结衣啪啪| 精品三级在线看| 在线视频二区| 国产成人精品网站| 亚洲电影一区| 亚洲v国产v在线观看| 一区二区三区国产盗摄| 一级淫片在线观看| 日本一区二区三区四区在线视频 | 激情欧美国产欧美| 色啦啦av综合| 久久久精品人体av艺术| 国产一级在线观看视频| 欧美乱妇15p| 国产69精品久久app免费版| 久久人人97超碰精品888| 国产精品一区免费在线| 亚洲欧洲免费无码| 久久一区中文字幕| av2014天堂网| 一区二区理论电影在线观看| 亚洲系列第一页| 伊人亚洲福利一区二区三区| 92国产精品| 久久精品国产美女| 亚洲高清资源| 中文字幕99页| 亚洲资源中文字幕| 精品久久久久久亚洲综合网站 | 美女www一区二区| 少妇按摩一区二区三区| 精品久久久久久久久中文字幕| 亚洲精品久久久久久无码色欲四季 | 青草国产精品久久久久久| 性欧美成人播放77777| 红桃视频成人在线观看| 免费看国产片在线观看| 午夜免费日韩视频| 精品视频高潮| 妞干网在线观看视频| 99这里只有精品| 亚洲黄色三级视频| 欧美伊人久久| 亚洲伊人婷婷| 久久精品国产99国产| 亚洲色图日韩精品| 精品视频色一区| 天堂中文8资源在线8| 国产欧美韩国高清| 国产精品福利在线观看播放| 欧美三级午夜理伦三级富婆| 国产精品丝袜久久久久久app| 一级一级黄色片| 色综合伊人色综合网站| 91成人app| 欧美日韩dvd| 成人一区二区三区| 久久免费激情视频| 亚洲精品自拍第一页| 桃花岛成人影院| 亚洲欧美99| 国产精品18久久久久久久久| 国产午夜视频在线| 日韩第一页在线| 粉嫩一区二区三区| 在线视频不卡一区二区三区| 国产一区二区电影| 日韩xxx高潮hd| 亚洲性生活视频在线观看| 欧美高清免费| 国产精品va在线观看无码| 91视频你懂的| 中文字幕视频免费观看| 欧美成年人视频| 三级精品视频| 国产一级免费大片| 亚洲午夜在线观看视频在线| 欧美色视频免费| 91精品国产自产在线观看永久| 1024精品一区二区三区| 女人十八毛片嫩草av| 日韩欧美亚洲国产另类| 成年美女黄网站色大片不卡| 小说区视频区图片区| 成人av先锋影音| 一级特黄录像免费看| 91精品国产91久久久久久| 99国内精品久久久久久久| 日本黄色录像片| 欧美高清精品3d| 黑人巨大精品欧美一区二区桃花岛| 亚洲三区在线观看| 成人久久久精品乱码一区二区三区| jizz国产在线| 欧美极品在线视频| 日韩在线精品| 熟女俱乐部一区二区视频在线| 91精品国产91久久久久久一区二区| 中文字幕成在线观看| 99re6这里有精品热视频| 国产午夜三级一区二区三|