免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
「轉(zhuǎn)」炸!億級(jí)數(shù)據(jù)DB秒級(jí)平滑擴(kuò)容

一步一步,娓娓道來(lái)。

一般來(lái)說(shuō),并發(fā)量大,吞吐量大的互聯(lián)網(wǎng)分層架構(gòu)是怎么樣的?

數(shù)據(jù)庫(kù)上層都有一個(gè)微服務(wù),服務(wù)層記錄“業(yè)務(wù)庫(kù)”與“數(shù)據(jù)庫(kù)實(shí)例配置”的映射關(guān)系,通過(guò)數(shù)據(jù)庫(kù)連接池向數(shù)據(jù)庫(kù)路由sql語(yǔ)句。

如上圖所示,服務(wù)層配置用戶(hù)庫(kù)user對(duì)應(yīng)的數(shù)據(jù)庫(kù)實(shí)例ip。

畫(huà)外音:其實(shí)是一個(gè)內(nèi)網(wǎng)域名。

該分層架構(gòu),如何應(yīng)對(duì)數(shù)據(jù)庫(kù)的高可用?

數(shù)據(jù)庫(kù)高可用,很常見(jiàn)的一種方式,使用雙主同步+keepalived+虛ip的方式進(jìn)行。

如上圖所示,兩個(gè)相互同步的主庫(kù)使用相同的虛ip。

當(dāng)主庫(kù)掛掉的時(shí)候,虛ip自動(dòng)漂移到另一個(gè)主庫(kù),整個(gè)過(guò)程對(duì)調(diào)用方透明,通過(guò)這種方式保證數(shù)據(jù)庫(kù)的高可用。

畫(huà)外音:關(guān)于高可用,《互聯(lián)網(wǎng)分層架構(gòu)如何保證“高可用“?》專(zhuān)題介紹過(guò),本文不再展開(kāi)。

該分層架構(gòu),如何應(yīng)對(duì)數(shù)據(jù)量的暴增?

隨著數(shù)據(jù)量的增大,數(shù)據(jù)庫(kù)要進(jìn)行水平切分,分庫(kù)后將數(shù)據(jù)分布到不同的數(shù)據(jù)庫(kù)實(shí)例(甚至物理機(jī)器)上,以達(dá)到降低數(shù)據(jù)量,增強(qiáng)性能的擴(kuò)容目的。

如上圖所示,用戶(hù)庫(kù)user分布在兩個(gè)實(shí)例上,ip0和ip1,服務(wù)層通過(guò)用戶(hù)標(biāo)識(shí)uid取模的方式進(jìn)行尋庫(kù)路由,模2余0的訪(fǎng)問(wèn)ip0上的user庫(kù),模2余1的訪(fǎng)問(wèn)ip1上的user庫(kù)。

畫(huà)外音:此時(shí),水平切分集群的讀寫(xiě)實(shí)例加倍,單個(gè)實(shí)例的數(shù)據(jù)量減半,性能增長(zhǎng)可不止一倍。

綜上三點(diǎn)所述,大數(shù)據(jù)量,高可用的互聯(lián)網(wǎng)微服務(wù)分層的架構(gòu)如下:

既有水平切分,又保證高可用。

如果數(shù)據(jù)量持續(xù)增大,2個(gè)庫(kù)性能扛不住了,該怎么辦呢?

此時(shí),需要繼續(xù)水平拆分,拆成更多的庫(kù),降低單庫(kù)數(shù)據(jù)量,增加庫(kù)主庫(kù)實(shí)例(機(jī)器)數(shù)量,提高性能。

新的問(wèn)題來(lái)了,分成n個(gè)庫(kù)后,隨著數(shù)據(jù)量的增加,要增加到2*n個(gè)庫(kù),數(shù)據(jù)庫(kù)如何擴(kuò)容,數(shù)據(jù)能否平滑遷移,能夠持續(xù)對(duì)外提供服務(wù),保證服務(wù)的可用性?

畫(huà)外音:你遇到過(guò)類(lèi)似的問(wèn)題么?

停服擴(kuò)容,是最容易想到的方案?

在討論秒級(jí)平滑擴(kuò)容方案之前,先簡(jiǎn)要說(shuō)明下停服務(wù)擴(kuò)容的方案的步驟:

(1)站點(diǎn)掛一個(gè)公告“為了為廣大用戶(hù)提供更好的服務(wù),本站點(diǎn)/游戲?qū)⒃诮裢?0:00-2:00之間升級(jí),屆時(shí)將不能登錄,用戶(hù)周知”;

畫(huà)外音:見(jiàn)過(guò)這樣的公告么,實(shí)際上在遷移數(shù)據(jù)。

(2)微服務(wù)停止服務(wù),數(shù)據(jù)庫(kù)不再有流量寫(xiě)入;

(3)新建2*n個(gè)新庫(kù),并做好高可用;

(4)寫(xiě)一個(gè)小腳本進(jìn)行數(shù)據(jù)遷移,把數(shù)據(jù)從n個(gè)庫(kù)里select出來(lái),insert到2*n個(gè)庫(kù)里;

(5)修改微服務(wù)的數(shù)據(jù)庫(kù)路由配置,模n變?yōu)槟?*n;

(6)微服務(wù)重啟,連接新庫(kù)重新對(duì)外提供服務(wù);

整個(gè)過(guò)程中,最耗時(shí)的是第四步數(shù)據(jù)遷移。

如果出現(xiàn)問(wèn)題,如何進(jìn)行回滾?

如果數(shù)據(jù)遷移失敗,或者遷移后測(cè)試失敗,則將配置改回舊庫(kù),恢復(fù)服務(wù)即可。

停服方案有什么優(yōu)劣?

優(yōu)點(diǎn):簡(jiǎn)單。

缺點(diǎn):

(1)需要停止服務(wù),方案不高可用;

(2)技術(shù)同學(xué)壓力大,所有工作要在規(guī)定時(shí)間內(nèi)完成,根據(jù)經(jīng)驗(yàn),壓力越大約容易出錯(cuò);

畫(huà)外音:這一點(diǎn)很致命。

(3)如果有問(wèn)題第一時(shí)間沒(méi)檢查出來(lái),啟動(dòng)了服務(wù),運(yùn)行一段時(shí)間后再發(fā)現(xiàn)有問(wèn)題,則難以回滾,如果回檔會(huì)丟失一部分?jǐn)?shù)據(jù);

有沒(méi)有秒級(jí)實(shí)施、更平滑、更帥氣的方案呢?

再次看一眼擴(kuò)容前的架構(gòu),分兩個(gè)庫(kù),假設(shè)每個(gè)庫(kù)1億數(shù)據(jù)量,如何平滑擴(kuò)容,增加實(shí)例數(shù),降低單庫(kù)數(shù)據(jù)量呢?三個(gè)簡(jiǎn)單步驟搞定。

步驟一:修改配置。

主要修改兩處:

  • 數(shù)據(jù)庫(kù)實(shí)例所在的機(jī)器做雙虛ip

(1)原%2=0的庫(kù)是虛ip0,現(xiàn)增加一個(gè)虛ip00;

(2)原%2=1的庫(kù)是虛ip1,現(xiàn)增加一個(gè)虛ip11;

  • 修改服務(wù)的配置,將2個(gè)庫(kù)的數(shù)據(jù)庫(kù)配置,改為4個(gè)庫(kù)的數(shù)據(jù)庫(kù)配置,修改的時(shí)候要注意舊庫(kù)與新庫(kù)的映射關(guān)系:

(1)%2=0的庫(kù),會(huì)變?yōu)?4=0與%4=2;

(2)%2=1的部分,會(huì)變?yōu)?4=1與%4=3;

畫(huà)外音:這樣能夠保證,依然路由到正確的數(shù)據(jù)。

步驟二:reload配置,實(shí)例擴(kuò)容。

服務(wù)層reload配置,reload可能是這么幾種方式:

(a)比較原始的,重啟服務(wù),讀新的配置文件;

(b)高級(jí)一點(diǎn)的,配置中心給服務(wù)發(fā)信號(hào),重讀配置文件,重新初始化數(shù)據(jù)庫(kù)連接池;

不管哪種方式,reload之后,數(shù)據(jù)庫(kù)的實(shí)例擴(kuò)容就完成了,原來(lái)是2個(gè)數(shù)據(jù)庫(kù)實(shí)例提供服務(wù),現(xiàn)在變?yōu)?個(gè)數(shù)據(jù)庫(kù)實(shí)例提供服務(wù),這個(gè)過(guò)程一般可以在秒級(jí)完成。

整個(gè)過(guò)程可以逐步重啟,對(duì)服務(wù)的正確性和可用性完全沒(méi)有影響:

(a)即使%2尋庫(kù)和%4尋庫(kù)同時(shí)存在,也不影響數(shù)據(jù)的正確性,因?yàn)榇藭r(shí)仍然是雙主數(shù)據(jù)同步的;

(b)即使%4=0與%4=2的尋庫(kù)落到同一個(gè)數(shù)據(jù)庫(kù)實(shí)例上,也不影響數(shù)據(jù)的正確性,因?yàn)榇藭r(shí)仍然是雙主數(shù)據(jù)同步的;

完成了實(shí)例的擴(kuò)展,會(huì)發(fā)現(xiàn)每個(gè)數(shù)據(jù)庫(kù)的數(shù)據(jù)量依然沒(méi)有下降,所以第三個(gè)步驟還要做一些收尾工作。

畫(huà)外音:這一步,數(shù)據(jù)庫(kù)實(shí)例個(gè)數(shù)加倍了。

步驟三:收尾工作,數(shù)據(jù)收縮。

有這些一些收尾工作:

(a)把雙虛ip修改回單虛ip;

(b)解除舊的雙主同步,讓成對(duì)庫(kù)的數(shù)據(jù)不再同步增加;

(c)增加新的雙主同步,保證高可用;

(d)刪除掉冗余數(shù)據(jù),例如:ip0里%4=2的數(shù)據(jù)全部刪除,只為%4=0的數(shù)據(jù)提供服務(wù);

畫(huà)外音:這一步,數(shù)據(jù)庫(kù)單實(shí)例數(shù)據(jù)量減半了。

總結(jié)

互聯(lián)網(wǎng)大數(shù)據(jù)量,高吞吐量,高可用微服務(wù)分層架構(gòu),數(shù)據(jù)庫(kù)實(shí)現(xiàn)秒級(jí)平滑擴(kuò)容的三個(gè)步驟為:

(1)修改配置(雙虛ip,微服務(wù)數(shù)據(jù)庫(kù)路由);

(2)reload配置,實(shí)例增倍完成;

(3)刪除冗余數(shù)據(jù)等收尾工作,數(shù)據(jù)量減半完成;

思路比結(jié)論重要,希望大家有收獲。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
MySQL主從復(fù)制配置步驟如何操作?linux運(yùn)維
基于部件的設(shè)計(jì)
你的解耦戰(zhàn)術(shù),決定了架構(gòu)高度!
數(shù)據(jù)庫(kù)主從不一致,怎么解?
作為通用架構(gòu)師,我是如何把控遷移技術(shù)方案的
如何實(shí)現(xiàn) MongoDB 副本集實(shí)例間的數(shù)據(jù)遷移?
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服