日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NOS跨分区灾备设计与实现

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NOS跨分区灾备设计与实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文來自網易云社區

作者:王健


摘要

NOS(網易對象存儲)在實現多機房(杭州機房,北京機房等)部署后,允許一個用戶在建桶時選擇桶所屬機房。在此基礎上,我們實現了跨機房的數據復制,進一步實現了跨機房的數據災備方案。用戶可以:

  • 通過簡單的配置,即可讓自己上傳的數據異步準實時地同步到另一個機房,實現跨機房的數據復制

  • 在發生重大災難導致整個機房無法訪問時,可以將桶的上傳下載操作切換到災備機房,極大提升服務可用性

  • 災備恢復服務切回主機房后,災備期間所有上傳到災備機房的數據都會同步回主機房,主機房有用戶全量的數據

  • 通過接入NOS的子服務NCDN和WanProxy,整個災備過程可以對用戶完全透明

  • 本文主要討論NOS多機房部署、跨機房數據復制以及跨機房災備的設計與實現。


    1. 多機房部署

    NOS實現多機房部署的出發點有兩個:

  • 可以讓用戶自主選擇將桶創建在哪個機房(杭州機房,北京機房等)。用戶可以根據自己服務器的地址就近選擇桶所屬機房,提高上傳下載速度;

  • 可以進一步實現跨機房的數據災備,提高災難情況下的系統可用性

  • NOS多機房部署圖如下所示:

    如圖,兩個機房間除了極少量的信息(桶信息)需要同步外,各自都相當于一套獨立的NOS集群。

    多機房部署情況下,CDN的回源地址也需要根據桶所屬的分區來進行配置,如下圖所示:

    2. 跨機房數據復制

    跨機房的數據復制是跨機房災備的基礎,通過實現數據的機房間冗余,才能在一個機房故障時,將服務切到另一個機房并繼續提供讀寫服務。

    跨機房數據復制的核心設計如下圖:

    基本邏輯是:

  • 當一個桶配置了跨分區災備的屬性后,該桶的所有更新操作,均會記錄在NOS_Sync表中(為了保證主從分區數據的一致性,寫入NOS_Sync表必須同原更新操作放在一個事務中)

  • NosSyncer同步程序定期將NOS_Sync表中的數據讀出,進行聚合處理后,將數據同步到指定的分區

  • 跨分區數據復制有一些問題值得討論:

  • 為什么選擇將同步信息放在數據庫中?
    其實,最初想到的辦法并不是將同步信息寫到數據庫中,而是在更新操作完成后,記錄一條日志,并通過日志收集,日志處理,處理結果上傳到隊列服務,再由NosSyncer從隊列服務中獲得待同步的任務并執行數據復制。這種實現方式的好處是,整個數據同步的邏輯是離線的,線上的服務只需要輸出一條日志即可,跨分區數據復制邏輯不會對當前的線上業務產生影響。
    而該方案有兩個明顯的問題:
    1)NOS支持覆蓋寫操作,例如兩個用戶可以同時上傳一個名為A的對象,后上傳成功的會覆蓋先上傳的。因此,同步信息的順序應該同實際插入的順序一致,才能保證同步到災備分區時也是同樣的操作順序,保證主從分區的數據一致性。而采用日志這種方式,多個NOS服務器上的日志收集順序是無法保證先后的(即使日志帶時間戳)。該問題可以通過抓取binlog日志來保證順序性。
    2)該方案需要依賴日志收集,日志處理,隊列等一系列外部的服務,需要的部署和運維精力較大。同時,在我們設計該系統時,這些服務的可靠性還有待驗證,暫時不適用于我們的服務。

  • 為什么將插入NOS_Sync表的操作同更新操作放在同一個事務里?
    這主要是為了保證所有的更新操作和NOS_Sync表中的同步信息一一對應,而同步信息按順序插入,同步程序只需要順序讀取同步信息并以此執行即可,這可以保證復制操作的執行順序和實際更新順序一致。

  • 數據復制的邏輯可以進行什么優化?
    數據復制優化有兩個方向:1) 并發復制; 2)減少復制數據量;
    具體做法是,在取出一組同步信息后,首先在內存中對同步信息進行處理:
    1)過濾不必要的同步操作(例如:上傳A(file1),上傳A(file2),上傳A(file3) 可以合并為 上傳A(file3))
    2)確認哪些操作可以并發執行(例如:上傳A(file1),上傳B(file2)直接可以并發執行)
    在進行數據復制時,首先調用去重操作,如果可以去重上傳,則不傳輸數據。


  • 3. 跨機房數據災備

    3.1. 災備情況分析

    從用戶的視角來看,NOS跨機房災備需要考慮上傳下載等多種情況:

    如圖:

  • 下行災備情況一:用戶過CDN下載,災備時直接切換CDN回源地址,災備過程對客戶端透明(災備切換時間約5分鐘)

  • 下行災備情況二:有邏輯的客戶端,在感知到主分區故障后,主動切換訪問到災備分區,災備過程需要客戶端配合

  • 下行災備情況三:無邏輯的客戶端(如瀏覽器),若要災備則需要切換域名,由于切換域名生效時間過久,線上基本不會操作

  • 上行災備情況一:用戶過WanProxy進行上傳,災備時WanProxy自動將上傳切換到災備機房,災備過程對用戶透明

  • 上行災備情況二、情況三:客戶端依賴產品的上傳服務器來進行上傳,當發生災備時,需要上傳服務器切換(或通知用戶切換)上傳地址,災備過程需要上傳服務器配合

  • 基于以上的討論,我們未來推薦的方式將是,客戶端通過WanProxy進行上傳,通過CDN進行下載,將災備的邏輯統統交給NOS來做。

    3.2. 災備切換

    災備切換邏輯如下:

    如圖,涉及災備的主要是兩個數據庫字段:

  • 災備分區 —— 主機房發生災難時服務切到哪里,正常狀態下,數據從主機房復制到災備機房

  • 是否切換 —— 主機房發生災難時,通過該字段設置主備切換

  • 3.3. 使用建議

    如果用戶對自己的數據有極高的可用性要求,可以嘗試開啟災備服務,此處有幾個建議:

  • 由于硬件條件限制(機房間無專線,數據傳輸走公網),因此不建議對大對象(如視頻)實施災備服務。

  • 用戶可以將自己的數據按照重要程度放在多個桶中(如視頻,圖片,重要文件等),并對最重要的桶開啟災備服務,保證災難狀態時可以提供最基本的服務。

  • 逐漸將產品的上傳切到WanProxy上傳服務,將下載切到NCDN服務,從而透明地實現跨機房災備。


  • 網易云對象存儲服務NOS 支持標準 RESTful API 接口,并提供豐富的數據在線處理服務,一站式解決互聯網時代非結構化數據管理難題。


    網易云免費體驗館,0成本體驗20+款云產品!

    更多網易研發、產品、運營經驗分享請訪問網易云社區。






    相關文章:
    【推薦】?網易云安全DDoS高防全新上線 ,游戲防護實力領先

    轉載于:https://www.cnblogs.com/zyfd/p/9796196.html

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的NOS跨分区灾备设计与实现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。