數(shù)據(jù)庫(kù)為何需要多區(qū)域應(yīng)用程序架構(gòu)?
譯文?譯者 | 布加迪
審校 | 孫淑娟
多區(qū)域應(yīng)用程序架構(gòu)是任何云應(yīng)用系統(tǒng)最重要的方面之一。它的意義不僅僅在于覆蓋全球和接近客戶(hù),還在于確保應(yīng)用程序可以在不同的區(qū)域和國(guó)家順利運(yùn)行。
因此,您的數(shù)據(jù)庫(kù)應(yīng)駐留在多個(gè)區(qū)域,那樣即使遇到自然災(zāi)害或電力中斷等意外問(wèn)題,也能確保高可用性和高性能。
多區(qū)域意味著什么?
多區(qū)域意味著您的應(yīng)用程序覆蓋多個(gè)區(qū)域。每個(gè)區(qū)域都是一個(gè)獨(dú)立的數(shù)據(jù)中心,含有自己的數(shù)據(jù)庫(kù)和負(fù)載均衡系統(tǒng)。不同區(qū)域的數(shù)據(jù)庫(kù)彼此之間沒(méi)有連接,但是它們都有相同的模式,因此可以跨所有區(qū)域使用一組查詢(xún)。
每個(gè)區(qū)域都有自己的服務(wù)器,這意味著對(duì)應(yīng)用程序的任何請(qǐng)求都沒(méi)有單一故障點(diǎn)。如果一個(gè)數(shù)據(jù)中心出現(xiàn)故障,來(lái)自其他地方的用戶(hù)的流量將自動(dòng)轉(zhuǎn)移到另一個(gè)數(shù)據(jù)中心,用戶(hù)不會(huì)注意到網(wǎng)站有任何異常。
為何使用多區(qū)域應(yīng)用程序?
- 縮短延遲:多區(qū)域應(yīng)用程序架構(gòu)使您能夠?qū)?shù)據(jù)庫(kù)托管在不同的區(qū)域,從而縮短延遲。如果您的用戶(hù)位于世界各地,這一點(diǎn)尤其有用。
- 減少數(shù)據(jù)丟失:使用多區(qū)域應(yīng)用程序架構(gòu),您可以在多個(gè)區(qū)域之間使用同步復(fù)制,并確保即使出現(xiàn)硬件/網(wǎng)絡(luò)故障或任何其他災(zāi)難,數(shù)據(jù)也不會(huì)丟失。就算其中一個(gè)區(qū)域因網(wǎng)絡(luò)中斷或硬件故障等某個(gè)原因出現(xiàn)故障,您的數(shù)據(jù)仍然在其他區(qū)域可以使用。
- 降低成本:您可以將數(shù)據(jù)庫(kù)托管在云平臺(tái)上,而不是購(gòu)買(mǎi)昂貴的服務(wù)器在本地托管,從而節(jié)省成本,因?yàn)樵铺峁┥虒?duì)其服務(wù)的收費(fèi)低于本地托管提供商(這同樣適用于其他的IT基礎(chǔ)設(shè)施部件,比如存儲(chǔ))。
如何著手構(gòu)建多區(qū)域應(yīng)用程序?
想構(gòu)建多區(qū)域應(yīng)用程序,您需要使用在多個(gè)區(qū)域可用的數(shù)據(jù)庫(kù)。比如說(shuō),如果您有一個(gè)駐留在A(yíng)WS上的應(yīng)用程序,并將亞馬遜關(guān)系數(shù)據(jù)庫(kù)服務(wù)(RDS)用于數(shù)據(jù)庫(kù),那么您可以將RDS實(shí)例配置為在多個(gè)區(qū)域可用。
還可以從具有多區(qū)域可用性的數(shù)據(jù)庫(kù)中進(jìn)行選擇。Microsoft Azure SQL數(shù)據(jù)庫(kù)就是一個(gè)典型例子:在該數(shù)據(jù)庫(kù)中,用戶(hù)可以創(chuàng)建數(shù)據(jù)庫(kù),可用性集(availability set)由復(fù)制相連接。您還可以使用Microsoft SQL Server 2017或更高版本的服務(wù)代理功能,使用流復(fù)制或合并復(fù)制跨不同區(qū)域復(fù)制數(shù)據(jù)。
第三種選擇是使用支持多區(qū)域故障切換的數(shù)據(jù)庫(kù),因?yàn)槠涔收锨袚Q流程不需要任何停運(yùn),而是立即切換到另一個(gè)區(qū)域,不會(huì)中斷服務(wù),性能在切換期間也保持不變!
多區(qū)域架構(gòu)的好處
多區(qū)域架構(gòu)讓您可以在不同的區(qū)域擁有數(shù)據(jù)庫(kù)的多個(gè)副本。每個(gè)副本可以位于不同的區(qū)域,每個(gè)區(qū)域可以為相同的數(shù)據(jù)庫(kù)使用不同的版本和語(yǔ)言。這為您在針對(duì)數(shù)據(jù)冗余和高可用性設(shè)計(jì)架構(gòu)時(shí)提供了極大的靈活性。
您可能希望在一個(gè)區(qū)域保留存儲(chǔ)成本較低的舊版本作為備份,而在另一個(gè)區(qū)域使用存儲(chǔ)需求較高的新版本作為主版本,那樣如果前者有任何問(wèn)題,您可以比較輕松地切換到后者。
多區(qū)域架構(gòu)面臨的挑戰(zhàn)
雖然區(qū)域部署架構(gòu)的好處顯而易見(jiàn),但它也有自己的一系列挑戰(zhàn)。最大的挑戰(zhàn)是成本。雖然運(yùn)行多區(qū)域數(shù)據(jù)庫(kù)的成本可能低于單區(qū)域環(huán)境,但仍可能比在不同地方運(yùn)行單區(qū)域環(huán)境的成本更高。原因是您需要為每個(gè)區(qū)域維護(hù)單獨(dú)的基礎(chǔ)設(shè)施和服務(wù)——比如說(shuō),您可能擁有跨區(qū)域的獨(dú)立計(jì)算資源和存儲(chǔ)實(shí)例,而不是依賴(lài)貴公司內(nèi)的共享基礎(chǔ)設(shè)施。多區(qū)域數(shù)據(jù)庫(kù)的另一個(gè)挑戰(zhàn)是數(shù)據(jù)延遲:兩個(gè)距離遙遠(yuǎn)的地方因網(wǎng)絡(luò)延遲或網(wǎng)絡(luò)擁塞而導(dǎo)致延遲增加時(shí),就會(huì)出現(xiàn)數(shù)據(jù)延遲。
雖然在多個(gè)地區(qū)管理如此大的數(shù)據(jù)集變得更容易,因?yàn)樗鼈儗⑷萘糠植嫉轿挥诓煌貐^(qū)(數(shù)據(jù)中心)的多臺(tái)服務(wù)器上,在不影響性能和可用性的情況下有助于降低操作成本。但是說(shuō)到可擴(kuò)展性和安全問(wèn)題,情況變得棘手起來(lái),因?yàn)橐砸恢碌姆绞酱_保這些工作負(fù)載正常運(yùn)行可能需要額外的工作。
通過(guò)將應(yīng)用程序分布到每個(gè)區(qū)域內(nèi)的多個(gè)數(shù)據(jù)中心,可以減少應(yīng)用程序的延遲和成本,并提高可靠性、性能和可用性。
在為數(shù)據(jù)庫(kù)構(gòu)建多區(qū)域應(yīng)用程序架構(gòu)時(shí),還可以跨多個(gè)區(qū)域改進(jìn)安全,比如數(shù)據(jù)加密。
除此之外,還有其他好處:
增強(qiáng)可擴(kuò)展性——在任何一個(gè)區(qū)域出現(xiàn)高負(fù)載或流量突發(fā)的情況下,您都可以在部署應(yīng)用程序的任何位置添加更多的計(jì)算資源,從而輕松提高容量。這讓您在沒(méi)有任何停運(yùn)的情況下進(jìn)行擴(kuò)展,同時(shí)在高峰使用時(shí)間保持高性能。
簡(jiǎn)化管理——管理跨多個(gè)位置部署的應(yīng)用程序需要的管理開(kāi)銷(xiāo)比管理單個(gè)位置的應(yīng)用程序要少。
結(jié)論
我們已了解了使用多區(qū)域應(yīng)用程序架構(gòu)的原因。多區(qū)域數(shù)據(jù)庫(kù)架構(gòu)是個(gè)復(fù)雜的領(lǐng)域,需要數(shù)據(jù)管理、數(shù)據(jù)庫(kù)和云解決方案等方面的專(zhuān)業(yè)知識(shí)。我們還討論了在貴公司使用多區(qū)域數(shù)據(jù)庫(kù)架構(gòu)的好處。
原文標(biāo)題:??Why You Want Multi-Region Application Architecture for you Database???,作者:Hiren Dhaduk?