国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

如何利用MongoDB實現高性能,高可用的雙活應用架構?

原創
開發 架構 開發工具 MongoDB
投資界有一句至理名言——“不要把雞蛋放在同一個籃子里”。說的是投資需要分解風險,以免孤注一擲失敗之后造成巨大的損失。

【51CTO.com原創稿件】投資界有一句至理名言——“不要把雞蛋放在同一個籃子里”。說的是投資需要分解風險,以免孤注一擲失敗之后造成巨大的損失。

[[223634]]

隨著企業服務窗口的不斷增加,業務中斷對很多企業意味著毀滅性的災難,因此,跨多個數據中心的應用部署成為了當下最熱門的話題之一。

如今,在跨多個數據中心的應用部署***實踐中,數據庫通常負責處理多個地理區域的讀取和寫入,對數據變更的復制,并提供盡可能高的可用性、一致性和持久性。

但是,并非所有的技術在選擇上都是平等的。例如,一種數據庫技術可以提供更高的可用性保證,卻同時只能提供比另一種技術更低的數據一致性和持久性保證。

本文先分析了在現代多數據中心中應用對于數據庫架構的需求。隨后探討了數據庫架構的種類及優缺點,***專門研究 MongoDB 如何適用于這些類別,并最終實現雙活的應用架構。

雙活的需求

當組織考慮在多個跨數據中心(或區域云)部署應用時,他們通常會希望使用“雙活”的架構,即所有數據中心的應用服務器同時處理所有的請求。

圖 1:“雙活”應用架構

如圖 1 所示,該架構可以實現如下目標:

  • 通過提供本地處理(延遲會比較低),為來自全球的請求提供服務。
  • 即使出現整個區域性的宕機,也能始終保持高可用性。
  • 通過對多個數據中心里服務器資源的并行使用,來處理各類應用請求,并達到***的平臺資源利用率。

 “雙活”架構的替代方案是由一個主數據中心(區域)和多個災備(DR)區域(如圖 2 所示)所組成的主-DR(也稱為主-被)架構。

圖 2:主-DR 架構

在正常運行條件下,主數據中心處理請求,而 DR 站點處于空閑狀態。如果主數據中心發生故障,DR 站點立即開始處理請求(同時變為活動狀態)。

一般情況下,數據會從主數據中心復制到 DR 站點,以便在主數據中心出現故障時,能夠迅速實施接管。

如今,對于雙活架構的定義尚未得到業界的普遍認同,上述主-DR 的應用架構有時也被算作“雙活”。

區別在于從主站到 DR 站點的故障轉移速度是否夠快(通常為幾秒),并且是否能夠自動化(無需人為干預)。在這樣的解釋中,雙活體系架構意味著應用停機時間接近于零。

有一種常見的誤解,認為雙活的應用架構需要有多主數據庫。這樣理解是錯誤的,因為它曲解了多個主數據庫對于數據一致性和持久性的把握。

一致性確保了能讀取到先前寫入的結果,而數據持久性則確保了提交的寫入數據能夠被***保存,不會產生沖突寫入;或是由于節點故障所產生的數據丟失。

雙活應用的數據庫需求

在設計雙活的應用架構時,數據庫層必須滿足如下四個方面的架構需求(當然,也要具備標準數據庫的功能,如具有:豐富的二級索引能力的查詢語言,低延遲地訪問數據,本地驅動程序,全面的操作工具等):

  • 性能,低延遲讀取和寫入操作。這意味著:能在本地數據中心應用的節點上,處理讀取和寫入操作。
  • 數據持久性,通過向多個節點的復制寫入來實現,以便在發生系統故障時,數據能保持不變。
  • 一致性,確保能讀取之前寫入的結果,而且在不同地區和不同節點所讀到的結果應該相同。
  • 可用性,當某個節點、數據中心或網絡連接中斷時,數據庫必須能繼續運行。另外,從此類故障中恢復的時間應盡可能短,一般要求是幾秒鐘。

分布式數據庫架構

針對雙活的應用架構,一般有三種類型的數據庫結構:

  • 使用兩步式提交的分布式事務。
  • 多主數據庫模式,有時也被稱為“無主庫模式”。
  • 分割(分片)數據庫具有多個主分片,每個主分片負責數據的某個唯一片區。

下面讓我們來看看每一種結構的優缺點。

兩步式提交的分布式事務

分布式事務方法是在單次事務中更新所有包含某個記錄的節點,而不是寫完一個節點后,再(異步)復制到其他節點。

該事務保證了所有節點都會接收到更新,否則如果某個事務失敗,則所有節點都恢復到之前的狀態。

雖然兩步式提交協議可以確保持久性和多節點的一致性,但是它犧牲了性能。

兩步式提交協議要求在事務中所有參與的節點之間都要進行兩步式的通信。即在操作的每個階段,都要發送請求和確認,以確保每個節點同時完成了相同的寫入。

當數據庫節點分布在多個數據中心時,會將查詢的延遲從毫秒級別延長到數秒級別。

而在大多數應用,尤其是那些客戶端是用戶設備(移動設備、Web 瀏覽器、客戶端應用等)的應用中,這種響應級別是不可接受的。

多主數據庫

多主數據庫是一種分布式的數據庫,它允許某條記錄只在多個群集節點中一個之上被更新。而寫操作通常會復制該記錄到多個數據中心的多個節點上。

從表面上看,多主數據庫應該是實現雙活架構的理想方案。它使得每個應用服務器都能不受限地讀取和寫入本地數據的副本。但是,它在數據一致性上卻有著嚴重的局限性。

由于同一記錄的兩個(或更多)副本可能在不同地點被不同的會話同時更新。這就會導致相同的記錄會出現兩個不同的版本,因此數據庫(有時是應用本身)必須通過解決沖突來解決不一致的問題。

常用的沖突解決策略是:最近的更新“獲勝”,或是具有更多修改次數的記錄“獲勝”。因為如果使用其他更為復雜的解決策略,則性能上將受到顯著的影響。

這也意味著,從進行寫入到完成沖突解決機制的這個時間段內,不同的數據中心會讀取到某個相同記錄的不同值和沖突值。

分區(分片)數據庫

分區數據庫將數據庫分成不同的分區,或稱為分片。每個分片由一組服務器來實現,而每個服務器都包含一份分區數據的完整副本。這里關鍵在于每個分片都保持著對數據分區的獨有控制權。

對于任何給定時間內的每個分片來說,由一臺服務器充當主服務器,而其他服務器則充當其副本。數據的讀取和寫入被發布到主數據庫上。

如果主服務器出于任何原因的(例如硬件或網絡故障)失敗,則某一臺備用服務器會自動接任為主服務器的角色。

數據庫中的每條記錄都屬于某個特定的分區,并由一個分片來進行管理,以確保它只會被主分片進行寫入。分片內的記錄映射到每個分片的一個主分片,以確保一致性。

由于集群內包含多個分片,因此會有多個主分片(多個主分區),因此這些主分片可以被分配到不同的數據中心,以確保都在每個數據中心的本地都能發生寫入操作,如圖 3 所示:

圖 3:分區數據庫

分片數據庫可用于實現雙活的應用架構,其方法是:至少部署與數據中心一樣多的分片,并為分片分配主分片,以便每個數據中心至少有一個主分片,如圖 4 所示:

圖 4:具有分片數據庫的雙活架構

另外,通過配置分片能保證每個分片在各種數據中心里至少有一個副本(數據的副本)。

例如,圖 4 中的圖表描繪了跨三個數據中心的分布式數據庫架構:

  • 紐約(NYC)
  • 倫敦(LON)
  • 悉尼(SYD)

群集有三個分片,每個分片有三個副本:

  • NYC 分片在紐約有一個主分片,在倫敦和悉尼有副本。
  • LON 分片在倫敦有一個主分片,在紐約和悉尼有副本。
  • SYD 分片在悉尼有一個主分片,在倫敦和紐約有副本。

通過這種方式,每個數據中心都有來自所有分片的副本,因此本地應用服務器可以讀取整個數據集和一個分片的主分片,以便在其本地進行寫入操作。

分片數據庫能滿足大多數使用場景的一致性和性能要求。由于讀取和寫入發生在本地服務器上,因此性能會非常好。

從主分片中讀取時,由于每條記錄只能分配給一個主分片,因此保證了一致性。

例如:我們在美國的新澤西州和俄勒岡州有兩個數據中心,那么我們可以根據地理區域(東部和西部)來分割數據集,并將東海岸用戶的流量路由到新澤西州的數據中心。

因為該數據中心包含的是主要用于東部的分片;并將西海岸用戶的流量路由到俄勒岡州數據中心,因為該數據中心包含的是主要用于西部的分片。

我們可以看到分片的數據庫為我們提供了多個主數據庫的所有好處,而且避免了數據不一致所導致的復雜性。

應用服務器可以從本地主服務器上進行讀取和寫入,由于每個主服務器擁有各自的記錄,因此不會出現任何的不一致。相反,多主數據庫的解決方案則可能會造成數據丟失和讀取的不一致。

數據庫架構比較

圖 5:數據庫架構比較

圖 5 提供了每一種數據庫架構在滿足雙活應用需求時所存在的優缺點。在選擇多主數據庫和分區數據庫時,其決定因素在于應用是否可以容忍可能出現的讀取不一致和數據的丟失問題。

如果答案是肯定的,那么多主數據庫可能會稍微容易部署些。而如果答案是否定的,那么分片數據庫則是***的選擇。

由于不一致性和數據丟失對于大多數應用來說都是不可接受的,因此分片數據庫通常是***的選擇。

MongoDB 雙活應用

MongoDB 是一個分片數據庫架構的范例。在 MongoDB 中,主服務器和次服務器集的構造被稱為副本集。副本集為每個分片提供了高可用性。

一種被稱為區域分片(Zone Sharding)的機制被配置為:由每個分片去管理的數據集。如前面所提到的,ZoneSharding 可以實現地域分區。

白皮書《MongoDB多數據中心部署》:

  • https://www.mongodb.com/collateral/mongodb-multi-data-center-deployments?utm_medium=dzone-synd&utm_source=dzone&utm_content=active-application&jmp=dzone-ref

Zone Sharding 相關文檔:

  • https://docs.mongodb.com/manual/tutorial/sharding-segmenting-data-by-location/的“分區(分片)數據庫”部分描述了 MongoDB 具體實現和運作的細節。

其實許多組織,包括:Ebay、YouGov、Ogilvyand Maher 都正在使用 MongoDB 來實現雙活的應用架構。

除了標準的分片數據庫功能之外,MongoDB 還提供對寫入耐久性和讀取一致性的細粒度控制,并使其成為多數據中心部署的理想選擇。對于寫入,我們可以指定寫入關注(write concern)來控制寫入的持久性。

Writeconcern 使得應用在 MongoDB 確認寫入之前,就能指定寫入的副本數量,從而在一個或多個遠程數據中心內的服務器上完成寫入操作。籍此,它保證了在節點或數據中心發生故障時,數據庫的變更不會被丟失。

另外,MongoDB 也補足了分片數據庫的一個潛在缺點:寫入可用性無法達到 100%。

由于每條記錄只有一個主節點,因此如果該主節點發生故障,則會有一段時間不能對該分區進行寫入。

MongoDB 通過多次嘗試寫入,大幅縮短了故障切換的時間。通過多次嘗試的寫入操作,MongoDB 能夠自動應對由于網絡故障等暫時性系統錯誤而導致的寫入失敗,因此也大幅簡化了應用的代碼量。

MongoDB 的另一個適合于多數據中心部署的顯著特征是:MongoDB 自動故障切換的速度。

當節點或數據中心出現故障或發生網絡中斷時,MongoDB 能夠在 2-5 秒內(當然也取決于對它的配置和網絡本身的可靠性)進行故障切換。

發生故障后,剩余的副本集將根據配置去選擇一個新的主切片和 MongoDB 驅動程序,從而自動識別出新的主切片。一旦故障切換完成,其恢復進程將自動履行后續的寫入操作。

對于讀取,MongoDB 提供了兩種功能來指定所需的一致性級別。

首先,從次數據進行讀取時,應用可以指定***時效值(maxStalenessSeconds)。

這可以確保次節點從主節點復制的滯后時間不能超過指定的時效值,從而次節點所返回的數據具有其時效性。

另外,讀取也可以與讀取關注(ReadConcern)相關聯,來控制查詢到的返回數據的一致性。

例如,ReadConcern 能通過一些返回值來告知 MongoDB,那些被復制到副本集中的多數節點上的數據。

這樣可以確保查詢只讀取那些沒有因為節點或數據中心故障而丟失的數據,并且還能為應用提供一段時間內數據的一致性視圖。

MongoDB 3.6 還引入了“因果一致性(causal consistency)”的概念,以保證客戶端會話中的每個讀取操作,都始終只“關注”之前的寫入操作是否已完成,而不管具體是哪個副本正在為請求提供服務。

通過在會話中對操作進行嚴格的因果排序,這種因果一致性可以確保每次讀取都始終遵循邏輯上的一致,從而實現分布式系統的單調式讀?。╩onotonic read)。而這正是各種多節點數據庫所無法滿足的。

因果一致性不但使開發人員,能夠保留過去傳統的單節點式關系型數據庫,在實施過程中具備的數據嚴格一致性的優勢;又能將時下流行架構充分利用到可擴展和具有高可用性的分布式數據平臺之上。

[[223635]]

陳峻(Julian Chen) ,有著十多年的 IT 項目、企業運維和風險管控的從業經驗,日常工作深入系統安全各個環節。作為 CISSP 證書持有者,他在各專業雜志上發表了《IT運維的“六脈神劍”》、《律師事務所IT服務管理》 和《股票交易網絡系統中的安全設計》等論文。他還持續分享并更新《廉環話》系列博文和各種外文技術翻譯,曾被(ISC)2 評為第九屆亞太區信息安全***成就表彰計劃的“信息安全踐行者”和 Future-S 中國 IT 治理和管理的 2015 年度踐行人物。

【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2017-11-27 09:14:29

2020-12-09 09:21:41

微服務架構數據

2022-06-02 12:56:25

容器網絡云原生

2021-05-24 09:28:41

軟件開發 技術

2017-12-22 09:21:02

API架構實踐

2023-02-27 08:37:52

2009-02-27 14:46:09

AjaxGWT開發

2019-01-02 22:49:45

數據中心高可用性網絡

2024-04-26 00:28:14

異地多活架構

2024-08-12 08:04:00

2019-04-08 10:09:04

CPU緩存高性能

2020-11-10 07:46:09

服務器高并發高性能

2017-07-10 17:25:40

開發單號高可用

2023-08-22 13:16:00

分布式數據庫架構數據存儲

2021-07-27 16:01:29

高并發定時器高性能

2025-11-05 01:55:00

2017-11-16 09:35:56

高性能高可用架構

2024-10-15 09:10:10

2024-03-08 09:46:53

2009-05-05 10:24:48

應用架構設計原則
點贊
收藏

51CTO技術棧公眾號

国产日韩av高清| 99re热视频这里只精品| 欧美国产亚洲另类动漫| 国产精品一区av| 国产一区二区高清| 91精品国产全国免费观看| 国产网站免费在线观看| 精品国内自产拍在线观看视频| 欧美日韩小视频| 日韩资源在线| 成人免费高清视频| 天天综合中文字幕| 久久电影国产免费久久电影| 99国产超薄丝袜足j在线观看| 亚洲精品不卡在线观看| 国产亚洲精品一区二区| 电影亚洲精品噜噜在线观看| 日韩av网站在线| 色就是色亚洲色图| 国产精品自拍毛片| 日韩中文一区二区三区| 久久久xxx| 国产成人精品免费视频| av在线日韩| 欧美大码xxxx| 国产v综合v| 久热国产精品视频| 女一区二区三区| 2024亚洲男人天堂| 欧美福利视频| 欧美日韩精品中文字幕一区二区| 免费在线观看一区二区三区| av片在线免费| 婷婷一区二区三区| 欧美草逼视频| 久久久久久久久国产精品| 成人性生活视频| 人人澡人人澡人人看欧美| 久久精品国产亚洲5555| 91在线视频免费| 精品动漫av| 18禁男女爽爽爽午夜网站免费| 国产日韩欧美一区| 丁香六月婷婷| 午夜精品免费在线| 国产精品毛片久久久久久久久久99999999| 久久久久久久久久婷婷| 亚洲精品专区| 国产嫩草在线观看| 亚洲国产高清福利视频| 日韩免费视频| 久久精品国产91精品亚洲| 91精品在线麻豆| 在线视频91| 怡红院av一区二区三区| 在线观看免费网站黄| 国产91对白在线播放| 麻豆国产欧美一区二区三区| 在线天堂日本| 欧美激情在线一区| 久久成人麻豆午夜电影| 亚洲色图16p| 国产黄色片大全| 91久久久久久国产精品| 久久久人人人| 在线观看欧美激情| 亚洲欧美日韩国产一区二区三区| 3d玉蒲团在线观看| 人体精品一二三区| 波波电影院一区二区三区| 黄黄的网站在线观看| 57pao精品| 亚洲精品国产精品乱码不99| 四虎4545www国产精品| 久久免费一级片| 7777精品伊人久久久大香线蕉的 | 狠狠热免费视频| 亚洲一品av免费观看| 久久久蜜桃一区二区人| 狠狠操一区二区三区| 奇米四色中文综合久久| 国产欧美精品日韩区二区麻豆天美 | 久久影视一区| jizzjizzjizz亚洲女| 久久亚洲精品一区| 国产精品中文欧美| 日本国产亚洲| 97影院理论| 国产成人综合亚洲| 欧美性xxxx在线播放| 91精品综合| 欧美卡一卡二| 草草视频在线免费观看| 555www成人网| 欧美视频一区二区三区| 精品一区二区三区免费播放 | 韩国成人福利片在线播放| 日韩欧乱色一区二区三区在线| 国产精品igao| av噜噜色噜噜久久| 国产香蕉一区二区三区在线视频| 91麻豆国产福利在线观看| 欧美日韩国产在线观看网站| av在线app| 成人av影视| 一区二区三区一级片| 亚洲图片制服诱惑| 亚洲一区二区三区四区在线| 蜜桃av一区二区三区| 国产麻豆精品久久| 国产黄色影视| av成人观看| 尤物九九久久国产精品的特点| 国产精品你懂的在线欣赏| 欧美精品激情| 日本中文字幕视频一区| 邻居大乳一区二区三区| 欧美在线一区视频| 精品中文字幕一区| 青青草一区二区| 91国在线观看| 一区二区三区欧美在线观看| 国产一区二区三区四区五区美女 | 国产一区二区精品久| 91亚洲精品在看在线观看高清| 麻豆视频在线观看免费网站| 91看片在线免费观看| 久久成人福利视频| 亚洲999一在线观看www| 欧美在线视频一区二区| www.国产精品一二区| 欧美群妇大交群的观看方式| 欧美日韩午夜激情| 久久久精品国产免费观看同学| 国产成人午夜电影网| 日本色综合中文字幕| 国产日韩欧美在线播放不卡| 欧美**字幕| 亚洲精品无吗| 亚洲福利天堂| 99er精品视频| 免费一级欧美片在线观看网站| 不卡的国产精品| 91在线观看| 免费在线稳定资源站| 亚洲女优视频| a级网站在线播放| 男女小视频在线观看| 一区二区在线高清视频| 亚洲欧洲精品在线 | 美女av免费在线观看| 免费在线a视频| 神马影院一区二区| 99久久99久久| 欧美最大成人综合网| aa在线免费观看| 久青草视频在线播放| 欧美 日韩 国产 高清| 四虎国产精品成人免费4hu| 福利在线一区二区三区| 久久国产情侣| 成人日韩欧美| 国产亚洲精品美女久久| 亚洲午夜在线| 成人性视频免费网站| 亚洲国产裸拍裸体视频在线观看乱了 | 91精品观看| 国产日韩在线亚洲字幕中文| 中文字幕一区不卡| 99久久婷婷国产综合精品电影| 国产精品第13页| 精品在线欧美视频| 91在线免费网站| 人妻av中文系列| 搞黄视频免费在线观看| 精品自拍视频| 99精品热6080yy久久| 成人午夜又粗又硬又大| 欧美狂野另类xxxxoooo| 国产丝袜一区视频在线观看 | 亚洲精品久久久久久久久久久久 | 欧美日韩精品在线观看| 亚洲精品一区二区三区精华液| 精品调教chinesegay| 国产在线一区二区三区四区 | 99久久伊人网影院| 欧美午夜精品久久久久久人妖| 在线亚洲欧美视频| 国产女主播一区二区| 国产69精品久久久久孕妇| 麻豆一区在线| 国内精品伊人久久久久影院对白| 亚洲一区二区三区视频在线 | 97色成人综合网站| 91亚洲精品乱码久久久久久蜜桃| 欧美一二三四在线| 国产精品一区二区三区毛片淫片| 香蕉视频禁止18| 日韩极品少妇| 色猫猫国产区一区二在线视频|