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