應用系統演進過程當中,應用層能夠經過服務化,微服務,雲化作擴展,數據庫則每每成爲難以擴展的點或者變爲系統瓶頸。數據庫
數據庫實例自己擴展能夠採用主備架構,主從架構,主主架構等方案。安全
但若是更大規模的數據要求下,好比咱們最近在設計新的面向億級單量的新架構升級,就須要採起多機甚至多數據中心方案了。服務器
單中心多機器方案能夠採用主從式架構,數據讀寫請求落在主機,從機承擔讀請求。 主從同步問題每每是這種架構的主要問題,這也就引發了主從一致問題,線上case也有幾回是由於主從同步延遲形成的。 因此咱們須要在應用架構角度去考慮主從延遲形成數據不一致的問題。 主從系統的主成爲了系統可用性的問題點,須要考慮主服務器健康狀態監控,及若是主機出現問題,如何快速切換,且處理時間窗口內數據問題。網絡
固然主從方式,受限於單機實例的承載能力,適用於小數據,規模小的應用場景。架構
針對於主機寫壓力的瓶頸,能夠採用分散數據方式,將寫數據落到多臺實例上,共同承擔壓力,能夠承載必定規模的業務場景。 固然這種問題的難點在於數據的負載均衡,數據之間的數據備份處理,一樣在多實例節點上下線過程當中的負載均衡和事實擴展。負載均衡
當架構發展到更大規模,服務更多用戶時,一般會將數據中心部署在多個地區。這也能夠避免光纜被挖斷的黑天鵝事件。 可是多機房一樣存在數據可用性及數據一致性問題。微服務
因此咱們須要將多中心數據進行友好的切分,來將數據部署在不一樣的數據中心中,這樣每一個分區存儲一部分數據,能夠保證必定的數據和服務可用性。設計
數據中心根據地理位置劃分能夠解決必定的數據中心間網絡同步形成的延遲。事件
因爲一個數據中心只存儲一部分數據,因此數據備份又是須要考慮的問題。這樣能夠避免一個地區故障形成數據問題而可能影響全局。資源
數據備份能夠採用一下三種方式:
集中式備份 是將數據同步到獨立的數據中心備份以保證數據安全。這種結構簡單,可是投入成本高,存在極大的資源浪費與閒置問題,一樣集中的數據中心也會有單點問題。
獨立式備份 是給每一個數據中心創建一個對應的備份節點,來起到容災做用。這樣投入成本一樣巨大,可是更簡單易實現,擴展性更好。
互備式備份 上面兩種數據中心數據備份都存在各自的不足,因而能夠結合以上兩種方案的優勢及特性設計互備式備份。 這種方案成本不會特別大,不須要創建額外的數據備份中心,各個節點之間進行數據互備,好比A節點備份B節點數據,B節點備份A節點數據,若是三個以上的分區,能夠作到循環備份。 固然在實現角度來講,這種方式是最複雜的,擴展性也是最差的,可是在資源使用率上是最高的。
三種備份方式各有特色,具體採用哪一種方式須要結合本身的業務特色和數據量特色設計。