Google Cloud Spanner內(nèi)部機(jī)制,您的設(shè)備不支持google play 服務(wù)-ESG跨境

Google Cloud Spanner內(nèi)部機(jī)制,您的設(shè)備不支持google play 服務(wù)

來(lái)源網(wǎng)絡(luò)
來(lái)源網(wǎng)絡(luò)
2022-07-05
點(diǎn)贊icon 0
查看icon 669

Google Cloud Spanner內(nèi)部機(jī)制,您的設(shè)備不支持google play 服務(wù)Google Cloud Spanner內(nèi)部機(jī)制我們已經(jīng)了解了有關(guān)Google Cloud Spanner的更多內(nèi)部信息。我們從Youtube上閱讀了Spanner白皮書(shū)的某些部分以及深入的內(nèi)部?jī)?nèi)容。我們?cè)诖颂幑蚕砹艘曨l鏈接,但......

Google Cloud Spanner內(nèi)部機(jī)制,您的設(shè)備不支持google play 服務(wù)





Google Cloud Spanner內(nèi)部機(jī)制

我們已經(jīng)了解了有關(guān)Google Cloud Spanner的更多內(nèi)部信息。我們從Youtube上閱讀了Spanner白皮書(shū)的某些部分以及深入的內(nèi)部?jī)?nèi)容。我們?cè)诖颂幑蚕砹艘曨l鏈接,但我們希望將所有學(xué)習(xí)總結(jié)在一個(gè)地方。特別感謝Deepti Srivastava(Spanner產(chǎn)品經(jīng)理)在Google Cloud Next Event中介紹了Spanner的深潛課程。

MySQL的痛苦:

在2005年,2006年,Google大規(guī)模使用MySQL。Google Adwords是使用90多個(gè)MySQL Shards存儲(chǔ)數(shù)據(jù)的最大平臺(tái)之一。由于進(jìn)行了一些維護(hù),他們重新分配了MySQL群集。這個(gè)過(guò)程花了2年時(shí)間才能完成。Google知道它們的發(fā)展非常迅速,而這類數(shù)據(jù)庫(kù)在將來(lái)會(huì)很痛苦。這就是Spanner的誕生方式。

BigTable和Spanner:

一旦他們決定構(gòu)建分布式的新東西,Big Table團(tuán)隊(duì)便是開(kāi)始為Spanner流程工作的團(tuán)隊(duì)。因?yàn)锽igTable使用分布式過(guò)程,存儲(chǔ)和高可用性(或其他一些原因)。

巨人:

Colossus是從GFS派生的分布式文件系統(tǒng)。超級(jí)數(shù)據(jù)庫(kù)需要高性能的文件系統(tǒng)。此項(xiàng)目由BigTable團(tuán)隊(duì)啟動(dòng),BigTable由Colossus提供支持。因此,Spanner也成為了文件系統(tǒng)的巨像。

為什么選擇Spanner?

Google Adwords是基于MySQL的堆棧,新系統(tǒng)需要具有關(guān)系數(shù)據(jù)庫(kù)的基本要素,例如ACID合規(guī)性,而不受規(guī)模的限制。MySQL的痛苦在于重新分片。因此,他們想要像傳統(tǒng)的NoSQL分片這樣的分片功能,這些功能將負(fù)責(zé)重新分片和重新平衡。加上更多可用性,水平擴(kuò)展和全球分布。

Spanner架構(gòu):

Spanner是一個(gè)全球數(shù)據(jù)庫(kù)系統(tǒng),每個(gè)區(qū)域至少需要3個(gè)分片。每個(gè)分片將位于每個(gè)區(qū)域中。用Spanner的術(shù)語(yǔ)來(lái)說(shuō),分片稱為Split。如果您提供了1個(gè)Node Spanner群集,則您將在不同區(qū)域上獲得另外2個(gè)對(duì)您不可見(jiàn)的節(jié)點(diǎn)。并且計(jì)算層和存儲(chǔ)層是分離的。Paxos算法用于一次維護(hù)一位領(lǐng)導(dǎo)者,其余節(jié)點(diǎn)將成為跟隨者。

基于分區(qū),我們將在存儲(chǔ)層中有更多的拆分(碎片)。每個(gè)分片將被復(fù)制到其他區(qū)域。例如:如果您在A區(qū)上有一個(gè)名為S1的分片,它將被復(fù)制到B區(qū)和C區(qū)。復(fù)制基于Leader跟隨器方法進(jìn)行。因此,Paxos將有助于維持法定人數(shù),并有助于在失敗期間選擇新的Leader。如果您在此Split上編寫(xiě)內(nèi)容,則Spanner API會(huì)知道Leaders。因此,寫(xiě)入將直接轉(zhuǎn)到具有“前導(dǎo)分割”的區(qū)域。每個(gè)拆分都有自己的領(lǐng)導(dǎo)者區(qū)域。

全球強(qiáng)一致性:

當(dāng)我觀看Spanner的深潛視頻時(shí),他們正在討論強(qiáng)大的一致性。Spanner支持所有節(jié)點(diǎn)(全局)之間的強(qiáng)一致性。如果您在美國(guó)地區(qū)寫(xiě)東西,則可以從亞洲地區(qū)或任何其他地區(qū)讀取相同的數(shù)據(jù)。他們?nèi)绾螌?shí)現(xiàn)這種邏輯?它稱為T(mén)rueTime。

TrueTime:

Spanner在分布于多個(gè)數(shù)據(jù)中心的全球所有節(jié)點(diǎn)之間同步并維持相同的時(shí)間。硬件內(nèi)置原子鐘以維持時(shí)間。如果您查看服務(wù)器硬件機(jī)架,則該服務(wù)器有4個(gè)時(shí)間服務(wù)器。2臺(tái)服務(wù)器與GPS連接,其余2臺(tái)與原子振蕩器連接。有2種不同的振蕩器品牌,可以實(shí)現(xiàn)更好的故障轉(zhuǎn)移處理。GPS時(shí)間服務(wù)器將與振蕩器同步,以每30秒間隔同步全球數(shù)據(jù)中心的時(shí)間。

現(xiàn)在,讓我們嘗試了解這如何TrueTime幫助Spanner保持一致。

與TrueTime的一致性

要了解一致性和TrueTime之間的關(guān)系,我們必須了解Spanner中的寫(xiě)操作如何工作。在每次寫(xiě)操作期間,Spanner會(huì)拾取當(dāng)前的TrueTime值,并且此TrueTime時(shí)間戳記將為寫(xiě)操作創(chuàng)建一個(gè)順序。因此,每次提交都附帶了時(shí)間戳。

例如:如果要在節(jié)點(diǎn)1上寫(xiě)入數(shù)據(jù),它將使用TrueTime時(shí)間戳提交數(shù)據(jù),并將數(shù)據(jù)和時(shí)間戳復(fù)制到其他節(jié)點(diǎn)。在所有節(jié)點(diǎn)上,此時(shí)間戳都相同。假設(shè)我們?cè)诠?jié)點(diǎn)1上提交了此數(shù)據(jù),如果您正在從節(jié)點(diǎn)B讀取相同的數(shù)據(jù),那么Spanner API會(huì)向Split的負(fù)責(zé)人詢問(wèn)最后提交的數(shù)據(jù)的時(shí)間戳,如果時(shí)間戳與Node A的時(shí)間戳相匹配,則數(shù)據(jù)將從節(jié)點(diǎn)B返回,否則將等待,直到節(jié)點(diǎn)A將數(shù)據(jù)同步到節(jié)點(diǎn)B,然后它將返回?cái)?shù)據(jù)。

單行寫(xiě)操作的生命周期:

這是單個(gè)寫(xiě)入操作的生命周期。我們正在寫(xiě)一行將轉(zhuǎn)到拆分2的行?,F(xiàn)在,Spanner API將了解誰(shuí)是拆分2的領(lǐng)導(dǎo)者節(jié)點(diǎn),然后請(qǐng)求將進(jìn)入Zone B節(jié)點(diǎn)(藍(lán)色指示是領(lǐng)導(dǎo)者)。然后它將獲取鎖,將其寫(xiě)入拆分。寫(xiě)入完成后,它將請(qǐng)求發(fā)國(guó)際快遞區(qū)域A和C節(jié)點(diǎn)以進(jìn)行寫(xiě)入。它將等待大多數(shù)節(jié)點(diǎn)的確認(rèn)。領(lǐng)導(dǎo)者分裂一旦獲得了大部分的認(rèn)可,便會(huì)將成功響應(yīng)發(fā)快遞給客戶。

多行寫(xiě)操作:

如果要在單個(gè)事務(wù)中寫(xiě)入數(shù)據(jù),但數(shù)據(jù)位于不同的拆分中,則Spanner將以不同的方式處理它。例如:我們必須更新2行。

第1行在Split1中C區(qū)是Leader Split

第2行位于Split2中B區(qū)是Leader Split

當(dāng)我們啟動(dòng)事務(wù)時(shí),Spanner API將理解這些行處于不同的拆分中。他們將隨機(jī)選擇一個(gè)協(xié)調(diào)器區(qū)域。在我們的示例中,API選擇了區(qū)域C為協(xié)調(diào)器區(qū)域。對(duì)于多行操作將執(zhí)行以下步驟。

選擇協(xié)調(diào)器區(qū)域。(C區(qū))

同時(shí)獲取兩個(gè)領(lǐng)導(dǎo)者分組上的數(shù)據(jù)鎖。

在兩個(gè)領(lǐng)導(dǎo)者拆分上添加新數(shù)據(jù)。領(lǐng)導(dǎo)者拆分將新數(shù)據(jù)復(fù)制到跟隨者拆分。然后從跟隨者拆分中獲得確認(rèn)(兩個(gè)拆分將等待獲得確認(rèn))。

然后,區(qū)域B拆分將向協(xié)調(diào)器區(qū)域的拆分發(fā)快遞一條消息,表明它已完成更新并準(zhǔn)備提交。

然后,區(qū)域C中的Split1將告訴Split2,繼續(xù)并提交數(shù)據(jù)。同時(shí),拆分1也將提交。

提交請(qǐng)求將轉(zhuǎn)到所有拆分(領(lǐng)導(dǎo)者和關(guān)注者),并永久提交數(shù)據(jù)。

然后,成功響應(yīng)將傳遞給客戶。

讀操作的壽命:

從Spanner讀取數(shù)據(jù)時(shí),將從最近的關(guān)注者拆分中獲取數(shù)據(jù)。讓我們用一個(gè)例子來(lái)解釋一下。請(qǐng)參考下圖。

我們想從MyTable讀取值123的數(shù)據(jù)。此值存儲(chǔ)在Split 2中?,F(xiàn)在,一旦請(qǐng)求到達(dá)Spanner Frontend服務(wù)器,它將了解誰(shuí)是最近的關(guān)注者拆分,并將請(qǐng)求轉(zhuǎn)發(fā)到該拆分。在我們的情況下,區(qū)域A是最近的拆分。請(qǐng)求到達(dá)拆分后,該拆分將請(qǐng)求Leader拆分以獲取最后提交的TrueTime。然后它將時(shí)間戳與自己的時(shí)間戳進(jìn)行比較。如果兩者都匹配,它將把數(shù)據(jù)提供給應(yīng)用程序。如果時(shí)間戳不匹配,則領(lǐng)導(dǎo)者分組將要求跟隨者等待,直到將數(shù)據(jù)同步到該區(qū)域。然后拆分將為數(shù)據(jù)提供服務(wù)。

過(guò)期/時(shí)間限制為:

Spanner支持MVCC。因此,它將舊數(shù)據(jù)保留一段時(shí)間。如果我們的應(yīng)用程序可以很好地獲取舊數(shù)據(jù)(早于X秒),則無(wú)需等待領(lǐng)導(dǎo)者分裂的數(shù)據(jù)同步。例如,我們必須告訴Split我們使用15秒的舊數(shù)據(jù)就可以了,然后它將檢查提交的時(shí)間戳,該時(shí)間少于15秒,然后將舊數(shù)據(jù)提供給應(yīng)用程序。

多區(qū)域Spanner:

上面說(shuō)明的所有方案都適用于單個(gè)區(qū)域(區(qū)域級(jí)別)內(nèi)的群集。但是,Spanner是為全球規(guī)模和多區(qū)域部署而構(gòu)建的。在多區(qū)域設(shè)置中,體系結(jié)構(gòu)和寫(xiě)/讀操作將略有不同。在單區(qū)域概念中,我們至少需要3個(gè)區(qū)域才能創(chuàng)建集群。區(qū)域同時(shí)支持讀取和寫(xiě)入。但是在多區(qū)域概念中,一個(gè)大洲將充當(dāng)領(lǐng)導(dǎo)者,而其他大洲將成為追隨者。用Spanner的話來(lái)說(shuō),我們擁有更多地區(qū)的歐洲大陸將成為法定人數(shù)。所有寫(xiě)操作都將到達(dá)該大陸的任何地區(qū)。在仲裁大陸中,將有2個(gè)區(qū)域托管數(shù)據(jù)節(jié)點(diǎn),而1個(gè)區(qū)域?qū)⑼泄芤?jiàn)證服務(wù)器進(jìn)行故障轉(zhuǎn)移。其他大洲將具有只讀副本節(jié)點(diǎn)。

多區(qū)域一致性:

在多區(qū)域群集中,寫(xiě)操作始終在Quorum大陸上執(zhí)行。假設(shè)美國(guó)地區(qū)是R/W大陸,那么如果您從美國(guó)地區(qū)發(fā)快遞寫(xiě)請(qǐng)求,則Spanner API會(huì)將其發(fā)國(guó)際快遞最近的地區(qū),一旦提交了數(shù)據(jù),則成功響應(yīng)將轉(zhuǎn)到客戶。如果您要從亞洲地區(qū)發(fā)快遞寫(xiě)請(qǐng)求,則亞洲地區(qū)的API服務(wù)器會(huì)將請(qǐng)求放入Google的內(nèi)部網(wǎng)絡(luò)中,然后將請(qǐng)求發(fā)國(guó)際快遞美國(guó)地區(qū)的API服務(wù)器。然后,該美國(guó)地區(qū)API服務(wù)器將提交數(shù)據(jù),并將成功響應(yīng)發(fā)快遞給亞洲地區(qū)客戶。

對(duì)于讀取,該過(guò)程與單個(gè)區(qū)域的概念相同,如果TrueTime匹配,則將從本地區(qū)域提供數(shù)據(jù),否則將等待直到數(shù)據(jù)同步到本地區(qū)域然后再提供給客戶端。

結(jié)論:

我們介紹了Spanner的大多數(shù)內(nèi)部概念。但是,在Cloud Spanner中還有很多事情要學(xué)習(xí)。請(qǐng)參考下面的Google Cloud Next活動(dòng)視頻鏈接。


文章推薦
Azure Storage如何使用Access Policy訪問(wèn)Azure Storage,azure storage 發(fā)布時(shí)間
從國(guó)外進(jìn)口一條自動(dòng)化生產(chǎn)線,進(jìn)口全自動(dòng)化剝蝦殼生產(chǎn)線
Google關(guān)鍵詞排名優(yōu)化的6個(gè)技巧,谷歌推廣怎么用關(guān)鍵詞工具
App store  想開(kāi)發(fā)短視頻App,消失的短視頻app平臺(tái)有哪些


特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場(chǎng)。如有關(guān)于作品內(nèi)容、版權(quán)或其它問(wèn)題請(qǐng)于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。

搜索 放大鏡
韓國(guó)平臺(tái)交流群
加入
韓國(guó)平臺(tái)交流群
掃碼進(jìn)群
歐洲多平臺(tái)交流群
加入
歐洲多平臺(tái)交流群
掃碼進(jìn)群
美國(guó)賣家交流群
加入
美國(guó)賣家交流群
掃碼進(jìn)群
ESG跨境專屬福利分享群
加入
ESG跨境專屬福利分享群
掃碼進(jìn)群
拉美電商交流群
加入
拉美電商交流群
掃碼進(jìn)群
亞馬遜跨境增長(zhǎng)交流群
加入
亞馬遜跨境增長(zhǎng)交流群
掃碼進(jìn)群
亞馬遜跨境增長(zhǎng)交流群
加入
亞馬遜跨境增長(zhǎng)交流群
掃碼進(jìn)群
拉美電商交流群
加入
拉美電商交流群
掃碼進(jìn)群
ESG獨(dú)家招商-PHH GROUP賣家交流群
加入
ESG獨(dú)家招商-PHH GROUP賣家交流群
掃碼進(jìn)群
《TikTok官方運(yùn)營(yíng)干貨合集》
《TikTok綜合運(yùn)營(yíng)手冊(cè)》
《TikTok短視頻運(yùn)營(yíng)手冊(cè)》
《TikTok直播運(yùn)營(yíng)手冊(cè)》
《TikTok全球趨勢(shì)報(bào)告》
《韓國(guó)節(jié)日營(yíng)銷指南》
《開(kāi)店大全-全球合集》
《開(kāi)店大全-主流平臺(tái)篇》
《開(kāi)店大全-東南亞篇》
《CD平臺(tái)自注冊(cè)指南》
通過(guò)ESG入駐平臺(tái),您將解鎖
綠色通道,更高的入駐成功率
專業(yè)1v1客戶經(jīng)理服務(wù)
運(yùn)營(yíng)實(shí)操指導(dǎo)
運(yùn)營(yíng)提效資源福利
平臺(tái)官方專屬優(yōu)惠

立即登記,定期獲得更多資訊

訂閱
聯(lián)系顧問(wèn)

平臺(tái)顧問(wèn)

平臺(tái)顧問(wèn) 平臺(tái)顧問(wèn)

微信掃一掃
馬上聯(lián)系在線顧問(wèn)

icon icon

小程序

微信小程序

ESG跨境小程序
手機(jī)入駐更便捷

icon icon

返回頂部

【免費(fèi)領(lǐng)取】全球跨境電商運(yùn)營(yíng)干貨 關(guān)閉
進(jìn)行中
進(jìn)行中
TikTok運(yùn)營(yíng)必備干貨包
包含8個(gè)TikTok最新運(yùn)營(yíng)指南(市場(chǎng)趨勢(shì)、運(yùn)營(yíng)手冊(cè)、節(jié)日攻略等),官方出品,專業(yè)全面!
免費(fèi)領(lǐng)取
進(jìn)行中
進(jìn)行中
韓國(guó)電商節(jié)日營(yíng)銷指南
10+韓國(guó)電商重要營(yíng)銷節(jié)點(diǎn)詳細(xì)解讀;2024各節(jié)日熱度選品助力引爆訂單增長(zhǎng);8大節(jié)日營(yíng)銷技巧輕松撬動(dòng)大促流量密碼。
免費(fèi)領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——全球合集
涵括全球100+個(gè)電商平臺(tái)的核心信息,包括平臺(tái)精煉簡(jiǎn)介、競(jìng)爭(zhēng)優(yōu)勢(shì)、熱銷品類、入駐要求以及入駐須知等關(guān)鍵內(nèi)容。
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——主流平臺(tái)篇
火爆全球的跨境電商平臺(tái)合集,平臺(tái)優(yōu)勢(shì)、開(kāi)店選品、入駐條件盡在掌握
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——拉美篇
涵蓋9大熱門(mén)拉美電商平臺(tái),成熟的市場(chǎng)是跨境賣家的熱門(mén)選擇!
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——日韓篇
涵蓋10+日韓電商平臺(tái),入駐條件一看就懂,優(yōu)勢(shì)熱銷品應(yīng)有盡有
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——?dú)W洲篇
涵蓋20+歐洲電商平臺(tái),詳細(xì)解讀優(yōu)勢(shì)、入駐條件、熱銷品等
立即領(lǐng)取