www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]作者:攜程技術(shù)團(tuán)隊,來自:DataFunTalk 導(dǎo)讀: 我們推薦使用數(shù)據(jù)庫三副本,一主一從一異地容災(zāi)。如果想要節(jié)省成本,也可以只保留兩副本,但是一旦其中一臺服務(wù)器發(fā)生故障,服務(wù)器維修時間會比較長,那么在維修期間,數(shù)據(jù)庫服務(wù)會處于單點狀態(tài),使得風(fēng)險急劇

攜程數(shù)據(jù)庫高可用架構(gòu)實踐

作者:攜程技術(shù)團(tuán)隊,來自:DataFunTalk


導(dǎo)讀:

我們推薦使用數(shù)據(jù)庫三副本,一主一從一異地容災(zāi)。如果想要節(jié)省成本,也可以只保留兩副本,但是一旦其中一臺服務(wù)器發(fā)生故障,服務(wù)器維修時間會比較長,那么在維修期間,數(shù)據(jù)庫服務(wù)會處于單點狀態(tài),使得風(fēng)險急劇上升。

本文主要介紹以下內(nèi)容:

  • SQL Server 高可用

  • MySQL 高可用

  • Redis 高可用

01
SQL Server 高可用

攜程的 SQL Server 高可用架構(gòu)經(jīng)過了多次演進(jìn)。最初使用的是鏡像技術(shù),如果服務(wù)器出現(xiàn)故障,在切換時,需要人工進(jìn)行干預(yù)以切換到鏡像節(jié)點。同時鏡像節(jié)點不提供讀服務(wù),可擴(kuò)展性比較差。后來引入了 SAN 存儲,將計算和存儲進(jìn)行分離,可以實現(xiàn)自動切換,但 SAN 存儲技術(shù)過于復(fù)雜,并且價格昂貴。2013年,我們開始將其逐步改造為 AlwaysOn 架構(gòu),這是 SQL Server 2012 以后的版本所具有的功能。

三副本的 SQL Server 數(shù)據(jù)庫服務(wù)架構(gòu)。主副本提供讀寫訪問;一個輔助副本是同步模式,即和主副本數(shù)據(jù)保持一致;另一個輔助副本是異步模式,存放在異地機(jī)房。同步模式可以保證主從數(shù)據(jù)一致,在切換時不會丟失數(shù)據(jù)。但同步節(jié)點的性能可能會對主副本造成影響,每一個事務(wù)都需要在同步節(jié)點確認(rèn)后,才算完成。所以,將同步節(jié)點和主節(jié)點放在同一網(wǎng)段內(nèi),可以減少網(wǎng)絡(luò)開銷,提升整體的響應(yīng)速度。

SQL Server 可以在主副本服務(wù)器發(fā)生故障時,自動切換到同步節(jié)點。在切換期間,數(shù)據(jù)庫不可用,所以通常在1分鐘之內(nèi)完成。而切換到異步節(jié)點是手動觸發(fā)的,因為是異步模式,可能會丟失數(shù)據(jù),所以盡量不切換到異步節(jié)點。

SQL Server 高可用在很大程度上依賴于底層操作系統(tǒng)。因為 AlwaysOn 架構(gòu)依賴底層的 Windows 群集服務(wù)。一個 Windows 群集可以有多套 AlwaysOn 組。Windows 群集服務(wù)可以這樣設(shè)計:

  • 盡量增加群集節(jié)點數(shù)量,一般保持在9個以上的奇數(shù)節(jié)點,避免一臺或兩臺服務(wù)器故障導(dǎo)致整個群集不可用;

  • 因為群集節(jié)點多,所以增加 regroup 的超時時間,避免重組超時導(dǎo)致整個群集異常;

  • 增加文件共享仲裁,文件共享可以存放在第三機(jī)房,避免機(jī)房故障導(dǎo)致群集失去多數(shù)仲裁,同時在失去多數(shù)仲裁時,可以使用 ForceQuorum 模式強(qiáng)制啟動 Windows 群集服務(wù),盡快恢復(fù)業(yè)務(wù)。

使用 AlwaysOn 架構(gòu)可以極大減輕主節(jié)點的負(fù)載。數(shù)據(jù)庫的全量備份或日志備份可以調(diào)整到異步節(jié)點上進(jìn)行,無須擔(dān)心數(shù)據(jù)庫備份會對業(yè)務(wù)造成性能影響。我們會比較關(guān)注 AlwaysOn 的主從延遲,并采用插值法進(jìn)行監(jiān)控,對每一個業(yè)務(wù)數(shù)據(jù)庫設(shè)計了一張監(jiān)控表,定期插入時間戳。在經(jīng)過 AlwaysOn 傳遞到輔助副本后,我們把時間戳取出來,和當(dāng)前時間進(jìn)行比較,就能精確地獲得延遲時間。延遲通常是只讀副本上的查詢語句 IO 開銷大導(dǎo)致的。根據(jù)延遲時間,以及前文提到的全量語句性能數(shù)據(jù)采集,我們可以定位導(dǎo)致延遲的異常語句。

02
MySQL 高可用

相對于成熟的商業(yè)數(shù)據(jù)庫軟件,開源版本的 MySQL 高可用方案更多地需要使用者自己進(jìn)行設(shè)計和研發(fā),好在 MySQL 本身已經(jīng)為我們提供了一些必要的功能:MySQL 復(fù)制技術(shù)。MySQL 復(fù)制技術(shù)包含傳統(tǒng)的基于日志傳輸?shù)膹?fù)制技術(shù),以及在 MySQL 5.7 之后的版本引入的組復(fù)制技術(shù)。在攜程,大部分 MySQL 集群采用傳統(tǒng)的基于日志傳輸?shù)膹?fù)制技術(shù)。攜程的 MySQL 高可用架構(gòu)經(jīng)歷了3個階段的演進(jìn)。

第一階段:采用傳統(tǒng)的 MHA 管理方式。

從本質(zhì)上來說,MHA 是一個管理 MySQL 主從復(fù)制架構(gòu)的工具集。我們可以通過其官方網(wǎng)站下載最新的版本。應(yīng)用可以通過虛擬 IP 地址10.10.10.59進(jìn)行訪問,虛擬 IP 地址掛載在主節(jié)點上。MHA 管理節(jié)點會每隔10秒探測并連接主機(jī),如果連續(xù)3次連接不上,則判定主機(jī)故障,觸發(fā)切換。在發(fā)生切換時,MHA 會結(jié)合半同步復(fù)制,補(bǔ)全未同步的日志,這種切換可以保證數(shù)據(jù)完整。另外,切換會嘗試連接舊主機(jī),把掛載在主節(jié)點上的虛擬 IP 地址刪除,然后在 Slave 節(jié)點重新掛載虛擬 IP 地址,完成切換。

傳統(tǒng)的 MHA 架構(gòu)比較成熟,使用廣泛,但存在風(fēng)險。如果由于交換機(jī)故障,MHA 管理節(jié)點連接不上主機(jī),但主機(jī)本身運行正常,MHA 管理工具無法判斷是網(wǎng)絡(luò)故障還是服務(wù)器故障,就會進(jìn)行切換,并且把虛擬 IP 地址掛載到 Slave 節(jié)點,但 MHA 管理節(jié)點連接不上舊主機(jī),無法刪除虛擬 IP 地址。此時兩個節(jié)點都有虛擬 IP 地址存在,數(shù)據(jù)會發(fā)生"雙寫",也就是發(fā)生"腦裂"。這種情況很少發(fā)生,但一旦發(fā)生,就難以處理,起因就在于虛擬 IP 地址。解決的方法是把虛擬 IP 地址刪除,使用物理 IP 地址進(jìn)行直連。這就需要使用數(shù)據(jù)庫訪問 DAL 模塊和統(tǒng)一配置中心。在切換時,需要通知應(yīng)用程序 IP 地址發(fā)生變化,并對所有的連接進(jìn)行重置。

第二階段:使用 IP 直連。

初始的時候,應(yīng)用程序使用物理 IP 地址10.10.10.141訪問數(shù)據(jù)庫。MHA 管理節(jié)點探測到主節(jié)點發(fā)生了故障,預(yù)備切換到10.10.10.142,并將 IP 地址變化通知統(tǒng)一配置中心 QConfig。統(tǒng)一配置中心在收到這個變化后,會把這個變化推送到應(yīng)用服務(wù)器的數(shù)據(jù)庫訪問中間件 DAL。DAL 會重置對數(shù)據(jù)庫的連接,使用新的 IP 地址10.10.10.142。此處的統(tǒng)一配置中心要確保高可用,即使機(jī)房發(fā)生故障,也不能影響統(tǒng)一配置中心的正常運轉(zhuǎn)。

經(jīng)過改造,我們?nèi)コ藬?shù)據(jù)"雙寫"的隱患。但在極端場景下,還是會存在風(fēng)險。如果機(jī)房整體發(fā)生故障,MHA 管理節(jié)點和主機(jī)/從機(jī)同時無法運行了,MHA 就無法自動切換到 DR 節(jié)點。這是由于 MHA 單管理節(jié)點本身成了系統(tǒng)瓶頸,解決的方法是引入多 MHA 管理節(jié)點進(jìn)行協(xié)同管理。

第三階段:引入多 MHA 管理節(jié)點。

應(yīng)用使用物理 IP 地址10.10.10.141訪問數(shù)據(jù)庫。每一個數(shù)據(jù)庫實例都由5個 MHA 管理節(jié)點進(jìn)行同時監(jiān)聽。這5個 MHA 管理節(jié)點分布在3個機(jī)房。一旦某個 MHA 管理節(jié)點探測到主機(jī)發(fā)生了異常,則標(biāo)記為 SDOWN。但一個 MHA 管理節(jié)點無法決定主機(jī)是否真的發(fā)生了故障,該 MHA 管理節(jié)點需要發(fā)起協(xié)商流程,和其他4個 MHA 管理節(jié)點一同判斷,如果多數(shù) MHA 管理節(jié)點認(rèn)為發(fā)生了故障,則標(biāo)記為 ODOWN,也就是確定主機(jī)真的發(fā)生了故障。MHA 會檢測并決定可以成為備選主節(jié)點的節(jié)點,并由5個 MHA 管理節(jié)點再次協(xié)商,推選一個管理節(jié)點,用來向統(tǒng)一配置中心 QConfig 匯報 IP 地址變化。如果機(jī)房發(fā)生故障,并且另一個節(jié)點10.10.10.142不可用,則可選擇主節(jié)點為20.20.20.161。統(tǒng)一配置中心會把這個變化推送到 DAL 組件,并重置連接,使用新的 IP 地址。

五節(jié)點模式的 MHA 管理是穩(wěn)定的。其中一個管理節(jié)點處于第三機(jī)房,能抵御單機(jī)房故障。MHA 管理節(jié)點之間的協(xié)商比較復(fù)雜,我們可以借助成熟的 Redis 哨兵管理機(jī)制,在 Redis 哨兵管理機(jī)制上進(jìn)行改造,適配對 MySQL 的監(jiān)控。

03
Redis 高可用架構(gòu)

Redis 的高可用架構(gòu)有兩種通用的做法:一種是基于復(fù)制的主從模型,另一種是群集模型。攜程使用的是第一種模型,即主從復(fù)制。

Redis 的元數(shù)據(jù)被存放在 ConfigDB 中。元數(shù)據(jù)包括 Redis 實例的狀態(tài)信息,以及對應(yīng)的 IP 地址和端口信息等。前端可以通過頁面對元數(shù)據(jù)進(jìn)行調(diào)整,如設(shè)置某個實例不可用或不可讀等。服務(wù)是通過 Config Service 實現(xiàn)的。服務(wù)會從 ConfigDB 中拉取配置,應(yīng)用會定期調(diào)用 Config Service 服務(wù),獲得實例元數(shù)據(jù)信息,實現(xiàn)對 Redis 群集的實際訪問。

我們通過一致性哈希算法對 Redis 進(jìn)行分片。每一個分片都被稱為組。在每一個組中,有讀寫實例和只讀實例,它們會通過復(fù)制關(guān)系來傳遞數(shù)據(jù)。在部署時,我們盡量把實例分散到不同的服務(wù)器上。一旦服務(wù)器發(fā)生故障,則只會影響部分分片,不會嚴(yán)重影響后端數(shù)據(jù)庫。我們應(yīng)當(dāng)盡量控制 Redis 緩存的每一個實例為 10GB 左右。如果超過 10GB,則可能需要確定是否可以進(jìn)行拆分。若需要重新進(jìn)行分組,則多拆分出幾個組

Redis 由哨兵來監(jiān)控 Redis 實例的運行狀態(tài)。我們啟用了5個哨兵來同時監(jiān)聽。哨兵的主要功能為:

  • 監(jiān)控所有實例是否在正常運行;

  • 當(dāng) Slave 出現(xiàn)故障時,通過消息通知機(jī)制把該 Slave 拉出,并將其設(shè)置為不可用,同時把 Master 設(shè)置為可讀、可寫;

  • 當(dāng) Master 出現(xiàn)故障時,通過自動投票機(jī)制從 Slave 節(jié)點中選舉新的 Master,實現(xiàn) Redis 的自動切換。

哨兵實際上是一個運行在特殊模式下的 Redis 服務(wù),我們可以通過在啟動命令參數(shù)中指定 sentinel 選項,來標(biāo)識該 Redis 服務(wù)是哨兵。每一個哨兵會向其他哨兵,即 Master 和 Slave 定時發(fā)送消息,以確認(rèn)對方是否正常運行,如果發(fā)現(xiàn)對方在指定時間內(nèi)未回應(yīng),則暫時認(rèn)為對方主觀掛機(jī) ( Subjective Down,簡稱 SDOWN )。如果哨兵群中的多數(shù)哨兵都報告某個 Master 沒響應(yīng),系統(tǒng)就會認(rèn)為該 Master 客觀掛機(jī) ( Objective Down,簡稱 ODOWN )。

通過 Redis 的運行機(jī)制可以看出,Config Service 的狀態(tài)信息需要和 Redis 實例的實際狀態(tài)信息保持一致,否則在訪問應(yīng)用時會發(fā)生異常,比如,當(dāng)只讀實例發(fā)生故障,在重新向 Master 節(jié)點全量同步數(shù)據(jù)期間,如果該實例還是配置可讀,在訪問應(yīng)用時就會報錯。當(dāng)有故障發(fā)生時,Redis 需要具備快速自動恢復(fù)的能力,減少人工干預(yù)。我們應(yīng)當(dāng)盡量從哨兵處獲得信息,如果超過半數(shù)的哨兵發(fā)生故障,則直連 Redis 實例來獲得物理狀態(tài)。

對于 Redis 異地機(jī)房容災(zāi)而言,我們需要考慮跨機(jī)房全量同步為網(wǎng)絡(luò)帶來的開銷,以及可能存在的網(wǎng)絡(luò)不穩(wěn)定因素。因此,我們采用了一個中間層,即 Keeper 來對數(shù)據(jù)進(jìn)行緩沖。在本質(zhì)上,Keeper 是偽 Slave,即實現(xiàn) Redis 協(xié)議,偽裝成 Slave,讓 Master 推送數(shù)據(jù)到 Keeper 中。受限于篇幅,對于 Redis 異地機(jī)房容災(zāi)及切換,這里就不介紹了,謝謝大家。

以上內(nèi)容選自攜程技術(shù)團(tuán)隊新作《攜程架構(gòu)實踐》

特別推薦一個分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒關(guān)注的小伙伴,可以長按關(guān)注一下:

攜程數(shù)據(jù)庫高可用架構(gòu)實踐

長按訂閱更多精彩▼

攜程數(shù)據(jù)庫高可用架構(gòu)實踐

如有收獲,點個在看,誠摯感謝

免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉