第三方組件上線的最佳實踐
第三方組件信息
組件信息介紹
1、這個組件是什麼?
2、橫向產品對比,以及此組件的主要優劣勢是什麼?
4、你選擇這個組件的原因是什麼?
工作原理
1、其他關鍵信息(如配置的相關信息)
應用場景
組件測試
測試環境搭建:
測試環境不侷限於硬件環境,不管是理論的區分還是硬件的區分都可以, 主要是必須從某個角度進行環境區分
1、需要在開發機搭建的環境提前:拿到第三方組件信息發送環境搭建的申請郵件(環境搭建包括但不侷限於自建服務和購買雲服務)
2、輸出測試結論,對第三方組件性能進行評估
mirror環境搭建:
測試環境結束後進入mirror環境測試,需要提前告知運維人員進行mirror環境準備工作,mirror測試完成之後輸出測試結論,以及評估上線風險,和運維人員共同協商解決方案。
組件上線
線上環境搭建:
環境搭建完成之後模擬測試,配置組件 監控項 ,進行監控測試,及時調整監控策略,組件上線之後的一個週期需要投入精力觀察線上運行情況,進行必要信息記錄,完成第三方組件上線文檔輸出。
:warning: 注意信息
1)組件信息介紹這一部分是在調研期間完成,開始測試之前需要將組件信息介紹這一部分發送郵件同步。
2)之後開始準備測試等環境,收集相關測試結果,測試完成之後郵件形式同步測試結果
3)搭建mirror環境,收集相關測試結果,mirror測試完成之後郵件形式同步mirror測試結果
4)彙總以上+線上實際運行情況形成沉澱進行同步。
範文
拿之前在遷移數據庫中做過的DTS數據遷移服務作爲簡單的範文介紹,《 自建MySQL數據庫遷入雲服務 》。還有一些沉澱比如: 消息中間件kafka全面解析 、Amazon SQS消息隊列,這些前置沉澱就是第三方組件上線需要跟大家同步的信息,供參考。
第三方組件信息
組件信息介紹:
1、DTS是數據傳輸服務,集數據遷移/訂閱/同步於一體,構建安全、可擴展、高可用的數據架構。
2、橫向產品對比,以及此組件的主要優劣勢是什麼?
-
使用mysqldump以及工具進行數據傳輸
-
無法滿足實時同步,線上測試
-
數據量大導出+導入時間過長
-
數據導出有泄露風險
-
使用DTS可以有效解決mysqldump帶來的問題且主要優勢如下:
-
DTS具備鏈路穩定性和數據可靠性
-
數據傳輸支持同/異構數據源之間的數據交互,提供數據遷移/訂閱/同步交互功能
-
支持節點的故障容災,可實現鏈路的秒級恢復
-
支持斷點續傳,可有效解決因硬件、網絡等異常導致的傳輸中斷。
4、你選擇這個組件的原因是什麼?
要進行數據庫從自建mysql遷移的Aliyun的RDS mysql服務中。遷移過程中需要保證 數據實時傳輸且 保證數據的完整性,在遷移過程中儘量不對業務有影響。DTS可以滿足實時傳輸,可以在前期的測試結束之後將線上業務中對數據庫讀的量 提前遷移到RDS進行線上驗證,DTS可以滿足相關需求,且有強大的售後服務和遷移過程中的在線支持,能夠完整保證服務在遷移過程中運行的穩定性。
工作原理:
1、系統架構(官網提供)
架構說明
-
系統高可用
數據傳輸服務內部每個模塊都有主備架構,保證系統高可用。容災系統實時檢測每個節點的健康狀況,一旦發現某個節點異常,會將鏈路秒級切換到其他節點。
-
數據源地址動態適配
對於數據訂閱及同步鏈路,容災系統還會監測數據源的連接地址切換等變更操作,一旦發現數據源發生連接地址變更,它會動態適配數據源新的連接方式,在數據源變更的情況下,保證鏈路的穩定性。
2、數據遷移基本原理
數據遷移提供多種遷移類型:結構對象遷移、全量數據遷移及增量數據遷移。如果需要實現不停服遷移,需要選擇結構對象遷移、全量數據遷移和增量數據遷移。
對於異構數據庫之間的遷移,DTS會從源庫讀取結構定義語法,根據目標數據庫的語法定義,將語法重新組裝成目標數據庫的語法格式,並導入到目標實例中。
全量數據遷移過程持續較久,在這過程中,源實例不斷有業務寫入,爲保證遷移數據的一致性,在全量數據遷移之前會啓動增量數據拉取模塊,增量數據拉取模塊會拉取源實例的增量更新數據,並解析、封裝、存儲在本地存儲中。
當全量數據遷移完成後,DTS會啓動增量日誌回放模塊,增量日誌回放模塊會從增量日誌讀取模塊中獲取增量數據,經過反解析、過濾、封裝後遷移到目標實例,從而實現增量數據遷移。
我們在遷移過程中使用到了DTS的增量遷移也就是實時同步
3、實時同步基礎原理
實時同步功能能夠實現兩個數據源之間的增量數據實時同步。DTS將陸續支持OLTP->OLAP的數據實時同步。
同步鏈路的創建過程如下:
-
同步初始化
將源實例的歷史存量數據在目標實例初始化一份。
-
增量數據實時同步
當初始化完成後進入兩邊增量數據實時同步階段,該階段DTS將實現源實例和目標實例的數據動態同步。
增量數據實時同步過程,DTS的底層實現模塊主要包括:
-
日誌讀取模塊
日誌讀取模塊從源實例讀取原始數據,經過解析、過濾及標準格式化,最終將數據在本地持久化。日誌讀取模塊通過數據庫協議連接並讀取源實例的增量日誌。如果源數據庫爲RDS MySQL,那麼數據抓取模塊通過Binlog dump協議連接源庫。
-
日誌回放模塊
日誌回放模塊從日誌讀取模塊中請求增量數據,並根據用戶配置的同步對象進行數據過濾,然後在保證事務時序性及事務一致性的前提下,將日誌記錄同步到目標實例。
應用場景:
不停機遷移數據庫 (我們的場景就是不停機遷移數據庫)
數據異地災備
異地多活
組件測試
在這裏簡單介紹一下測試過程,無法提供截圖信息供參考
1、使用DTS進行數據同步,同步完成之後進行數據驗證,當時是寫腳本進行數據比對,主要校驗的表(數據校驗代替測試測試階段)
2、mirror測試階段
保持使用DTS數據實時同步中,切換mirror環境的數據庫連接讀的地址到RDS上面進行數據讀取,測試同學配合驗證mirror環境讀數據相關的數據驗證。
組件上線
這裏的組件上線就是保持DTS數據同步,切換線上環境數據庫讀的量到RDS上面進行數據讀取,線上實測DTS同步的數據 。
以上是大概的範文示例,由於組件或服務不同應用的場景也不同,請參照第三方組件上線必讀完成組件上線相關內容。
拖地先生,從事互聯網技術工作,在這裏每週兩篇文章,聊聊日常的實踐和心得。往期推薦:
如果對你有幫助,讓大家也看看唄~