一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>源碼下載>數(shù)值算法/人工智能>

詳解數(shù)據(jù)庫(kù)NoSQL的主備份

大小:0.3 MB 人氣: 2017-09-28 需要積分:1

  Tarantool DBMS的高性能應(yīng)該很多人都聽(tīng)說(shuō)過(guò),包括其豐富的工具套件和某些特定功能。比如,它擁有一個(gè)非常強(qiáng)大的on-disk存儲(chǔ)引擎Vinyl,并且知道怎樣處理JSON文檔。然而,大部分文章往往忽略了一個(gè)關(guān)鍵點(diǎn):通常,Tarantool僅僅被視為存儲(chǔ)器,而實(shí)際上其最大特點(diǎn)是能夠在存儲(chǔ)器內(nèi)部寫代碼,從而高效處理數(shù)據(jù)。如果你想知道我和igorcoding是怎樣在Tarantool內(nèi)部建立一個(gè)系統(tǒng)的,請(qǐng)繼續(xù)往下看。

  如果你用過(guò)Mail.Ru電子郵件服務(wù),你應(yīng)該知道它可以從其他賬號(hào)收集郵件。如果支持OAuth協(xié)議,那么在收集其他賬號(hào)的郵件時(shí),我們就不需要讓用戶提供第三方服務(wù)憑證了,而是用OAuth令牌來(lái)代替。此外,Mail.Ru Group有很多項(xiàng)目要求通過(guò)第三方服務(wù)授權(quán),并且需要用戶的OAuth令牌才能處理某些應(yīng)用。因此,我們決定建立一個(gè)存儲(chǔ)和更新令牌的服務(wù)。

  我猜大家都知道OAuth令牌是什么樣的,閉上眼睛回憶一下,OAuth結(jié)構(gòu)由以下3-4個(gè)字段組成:

  詳解數(shù)據(jù)庫(kù)NoSQL的主備份

  訪問(wèn)令牌(access_token)——允許你執(zhí)行動(dòng)作、獲取用戶數(shù)據(jù)、下載用戶的好友列表等等;

  更新令牌(refresh_token)——讓你重新獲取新的access_token,不限次數(shù);

  過(guò)期時(shí)間(expires_in)——令牌到期時(shí)間戳或任何其他預(yù)定義時(shí)間,如果你的access_token到期了,你就不能繼續(xù)訪問(wèn)所需的資源。

  現(xiàn)在我們看一下服務(wù)的簡(jiǎn)單框架。設(shè)想有一些前端可以在我們的服務(wù)上寫入和讀出令牌,還有一個(gè)獨(dú)立的更新器,一旦令牌到期,就可以通過(guò)更新器從OAuth服務(wù)提供商獲取新的訪問(wèn)令牌。

  詳解數(shù)據(jù)庫(kù)NoSQL的主備份

  如上圖所示,數(shù)據(jù)庫(kù)的結(jié)構(gòu)也十分簡(jiǎn)單,由兩個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)(主和從)組成,為了說(shuō)明兩個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn)分別位于兩個(gè)數(shù)據(jù)中心,二者之間由一條垂直的虛線隔開(kāi),其中一個(gè)數(shù)據(jù)中心包含主數(shù)據(jù)庫(kù)節(jié)點(diǎn)及其前端和更新器,另一個(gè)數(shù)據(jù)中心包含從數(shù)據(jù)庫(kù)節(jié)點(diǎn)及其前端,以及訪問(wèn)主數(shù)據(jù)庫(kù)節(jié)點(diǎn)的更新器。

  面臨的困難

  我們面臨的主要問(wèn)題在于令牌的使用期(一個(gè)小時(shí))。詳細(xì)了解這個(gè)項(xiàng)目之后,也許有人會(huì)問(wèn)“在一小時(shí)內(nèi)更新1000萬(wàn)條記錄,這真的是高負(fù)載服務(wù)嗎?如果我們用一個(gè)數(shù)除一下,結(jié)果大約是3000rps”。然而,如果因?yàn)閿?shù)據(jù)庫(kù)維護(hù)或故障,甚至服務(wù)器故障(一切皆有可能)導(dǎo)致一部分記錄沒(méi)有得到更新,那事情將會(huì)變得比較麻煩。比如,如果我們的服務(wù)(主數(shù)據(jù)庫(kù))因?yàn)槟承┰虺掷m(xù)中斷15分鐘,就會(huì)導(dǎo)致25%的服務(wù)中斷(四分之一的令牌變成無(wú)效,不能再繼續(xù)使用);如果服務(wù)中斷30分鐘,將會(huì)有一半的數(shù)據(jù)不能得到更新;如果中斷1小時(shí),那么所有的令牌都將失效。假設(shè)數(shù)據(jù)庫(kù)癱瘓一個(gè)小時(shí),我們重啟系統(tǒng),然后整個(gè)1000萬(wàn)條令牌都需要進(jìn)行快速更新。這算不算高負(fù)載服務(wù)呢?

  一開(kāi)始一切都還進(jìn)展地比較順利,但是兩年后,我們進(jìn)行了邏輯擴(kuò)展,增加了幾個(gè)指標(biāo),并且開(kāi)始執(zhí)行一些輔助邏輯……??傊?,Tarantool耗盡了CPU資源。盡管所有資源都是遞耗資源,但這樣的結(jié)果確實(shí)讓我們大吃一驚。

  幸運(yùn)的是,系統(tǒng)管理員幫我們安裝了當(dāng)時(shí)庫(kù)存中內(nèi)存最大的CPU,解決了我們隨后6個(gè)月的CPU需求。但這只是權(quán)宜之計(jì),我們必須想出一個(gè)解決辦法。當(dāng)時(shí),我們學(xué)習(xí)了一個(gè)新版的Tarantool(我們的系統(tǒng)是用Tarantool 1.5寫的,這個(gè)版本除了在Mail.Ru Group,其他地方基本沒(méi)用過(guò))。Tarantool 1.6大力提倡主主備份,于是我們想:為什么不在連接主主備份的三個(gè)數(shù)據(jù)中心分別建立一個(gè)數(shù)據(jù)庫(kù)備份呢?這聽(tīng)起來(lái)是個(gè)不錯(cuò)的計(jì)劃。

非常好我支持^.^

(0) 0%

不好我反對(duì)

(0) 0%

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?