成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

炸!億級數(shù)據(jù)DB秒級平滑擴容!??!

開發(fā) 開發(fā)工具
一般來說,并發(fā)量大,吞吐量大的互聯(lián)網(wǎng)分層架構(gòu)是怎么樣的?下面,我們一步一步,娓娓道來。

一步一步,娓娓道來。

[[266462]]

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

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

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

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

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

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

如上圖所示,兩個相互同步的主庫使用相同的虛ip。

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

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

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

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

如上圖所示,用戶庫user分布在兩個實例上,ip0和ip1,服務(wù)層通過用戶標(biāo)識uid取模的方式進行尋庫路由,模2余0的訪問ip0上的user庫,模2余1的訪問ip1上的user庫。

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

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

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

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

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

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

畫外音:你遇到過類似的問題么?

停服擴容,是最容易想到的方案?

在討論秒級平滑擴容方案之前,先簡要說明下停服務(wù)擴容的方案的步驟:

  • 站點掛一個公告“為了為廣大用戶提供更好的服務(wù),本站點/游戲?qū)⒃诮裢?0:00-2:00之間升級,屆時將不能登錄,用戶周知”;畫外音:見過這樣的公告么,實際上在遷移數(shù)據(jù)。
  • 微服務(wù)停止服務(wù),數(shù)據(jù)庫不再有流量寫入;
  • 新建2*n個新庫,并做好高可用;
  • 寫一個小腳本進行數(shù)據(jù)遷移,把數(shù)據(jù)從n個庫里select出來,insert到2*n個庫里;
  • 修改微服務(wù)的數(shù)據(jù)庫路由配置,模n變?yōu)槟?*n;
  • 微服務(wù)重啟,連接新庫重新對外提供服務(wù);

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

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

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

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

優(yōu)點:簡單。

缺點:

  • 需要停止服務(wù),方案不高可用;
  • 技術(shù)同學(xué)壓力大,所有工作要在規(guī)定時間內(nèi)完成,根據(jù)經(jīng)驗,壓力越大約容易出錯;

畫外音:這一點很致命。

  • 如果有問題***時間沒檢查出來,啟動了服務(wù),運行一段時間后再發(fā)現(xiàn)有問題,則難以回滾,如果回檔會丟失一部分?jǐn)?shù)據(jù);

有沒有秒級實施、更平滑、更帥氣的方案呢?

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

步驟一:修改配置。

主要修改兩處:

數(shù)據(jù)庫實例所在的機器做雙虛ip:

  • 原%2=0的庫是虛ip0,現(xiàn)增加一個虛ip00;
  • 原%2=1的庫是虛ip1,現(xiàn)增加一個虛ip11;

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

  • %2=0的庫,會變?yōu)?4=0與%4=2;
  • %2=1的部分,會變?yōu)?4=1與%4=3;

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

步驟二:reload配置,實例擴容。

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

  • 比較原始的,重啟服務(wù),讀新的配置文件;
  • 高級一點的,配置中心給服務(wù)發(fā)信號,重讀配置文件,重新初始化數(shù)據(jù)庫連接池;

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

整個過程可以逐步重啟,對服務(wù)的正確性和可用性完全沒有影響:

  • 即使%2尋庫和%4尋庫同時存在,也不影響數(shù)據(jù)的正確性,因為此時仍然是雙主數(shù)據(jù)同步的;
  • 即使%4=0與%4=2的尋庫落到同一個數(shù)據(jù)庫實例上,也不影響數(shù)據(jù)的正確性,因為此時仍然是雙主數(shù)據(jù)同步的;

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

畫外音:這一步,數(shù)據(jù)庫實例個數(shù)加倍了。

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

有這些一些收尾工作:

  • 把雙虛ip修改回單虛ip;
  • 解除舊的雙主同步,讓成對庫的數(shù)據(jù)不再同步增加;
  • 增加新的雙主同步,保證高可用;
  • 刪除掉冗余數(shù)據(jù),例如:ip0里%4=2的數(shù)據(jù)全部刪除,只為%4=0的數(shù)據(jù)提供服務(wù);

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

總結(jié)

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

  • 修改配置(雙虛ip,微服務(wù)數(shù)據(jù)庫路由);
  • reload配置,實例增倍完成;
  • 刪除冗余數(shù)據(jù)等收尾工作,數(shù)據(jù)量減半完成;

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

【本文為51CTO專欄作者“58沈劍”原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2024-08-22 14:16:08

2017-02-10 11:26:39

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

2022-05-12 14:34:14

京東數(shù)據(jù)

2019-05-28 09:31:05

Elasticsear億級數(shù)據(jù)ES

2021-03-26 07:58:34

數(shù)據(jù)秒級查詢

2024-01-23 12:56:00

數(shù)據(jù)庫微服務(wù)MySQL

2011-03-03 10:32:07

Mongodb億級數(shù)據(jù)量

2021-06-29 08:12:22

MySQL數(shù)據(jù)分頁數(shù)據(jù)庫

2019-03-05 10:16:54

數(shù)據(jù)分區(qū)表SQLserver

2021-03-16 07:41:00

數(shù)據(jù)分頁優(yōu)化

2018-04-19 09:10:17

數(shù)據(jù)分析列式存儲

2020-08-17 08:21:31

數(shù)據(jù)查詢項目

2024-02-19 00:06:06

數(shù)據(jù)分析系統(tǒng)Doris

2024-09-27 08:44:43

2024-04-07 00:00:00

億級數(shù)據(jù)ES

2021-06-08 08:51:50

Redis 數(shù)據(jù)類型數(shù)據(jù)統(tǒng)計

2024-04-18 09:00:00

數(shù)據(jù)存儲數(shù)據(jù)庫

2018-12-14 09:32:06

億級數(shù)據(jù)存在

2021-03-11 10:55:41

MySQL數(shù)據(jù)庫索引

2025-05-22 00:05:10

點贊
收藏

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

主站蜘蛛池模板: 国产精品久久 | 久久蜜桃资源一区二区老牛 | 国产成人福利在线观看 | 成人免费在线观看 | 国产成人精品午夜 | 97起碰| 成人一区二区三区在线观看 | 91亚洲精品在线观看 | 人人擦人人干 | 91在线资源 | 国产a爽一区二区久久久 | 一级黄a视频 | 午夜精品久久久久久久星辰影院 | 国产成人精品综合 | 精品国产一区二区三区日日嗨 | 久久精品国产亚洲a | 日本黄色不卡视频 | 一级毛片高清 | 欧美国产日韩在线观看 | 国产91久久久久久久免费 | 国产精品一区二区av | 中文字幕第十五页 | 欧美一区成人 | 欧美中文字幕一区 | 成人免费视频网站在线看 | 成人免费视频网 | 日韩中文av在线 | 日韩三区在线观看 | 亚洲欧美日韩精品 | 欧美一级欧美三级在线观看 | www.久久久.com | 91久久国产综合久久 | 国产精品欧美日韩 | 亚洲成人精品一区 | 欧美久久国产精品 | jlzzjlzz欧美大全| 午夜小视频免费观看 | 亚洲精品一区在线 | 国产一区电影 | 国产主播第一页 | 国产精品国产馆在线真实露脸 |