mysql job_MySQL数据传输中dtle 之 job 实现简析-爱可生
原標題:MySQL數據傳輸中dtle 之 job 實現簡析-愛可生
作者:呂海龍
愛可生 DTLE 團隊成員,負責 DTLE 開發 ,日常問題處理以及相關問題的排查。
本文來源:原創投稿
*愛可生開源社區出品,原創內容未經授權不得隨意使用,轉載請聯系小編并注明來源。
從 job 文件到源端目標端的數據傳輸,dtle 到底是如何實現的?
傳輸過程中的高可用,又是由誰實現呢?
下面,我們就簡單的介紹一下,job 實現的大體流程。
結構
如上圖所示,在 job 被傳入服務器中,為了將 job 中的任務映射到客戶端,job 會形成兩個 allocation,task,以及 driver,而 job 實現期間的服務器分配,則是通過 evaluation 來實現。
evaluation:評估是 dtle 做出調度決策的機制。
allocation:分配是作業中的任務組和客戶端節點之間的映射。分配由 dtle 服務端創建,作為評估期間的調度決策的一部分。
task:job 中聲明的 task,記錄了源端,或者目標端的連接信息以及所需要復制的庫表信息。
driver:驅動,功能的具體實現,dtle 數據傳輸的具體實現,有 driver 進行用實現。
詳解
evaluation
評估是 dtle 做出調度決策的機制。當理想的狀態(作業)或實際的狀態(客戶端)發生變化時,dtle 創建一個新的評估,以確定是否必須采取任何行動。在創建一個 job 后,同樣會觸發一次評估。
allocation
allocation,表示 job 的分配,它記錄了 task 的詳細的信息,同時,它是 dtle 進行高可用部分調度的一環,在 dtle 的官方文檔中,我們可以通過對應的 api 接口,查看 allocation 的信息,并且從中查看到 task 的運行狀態等等信息,報錯信息等等,用戶可以通過 allocation 的報錯信息,確定問題來自于源端,或者目標端。
task
通過官方文檔中的 job 結構,我們可知,task 被分為了源端和目標端,他們各自記載了對應的數據庫信息以及所要傳輸的庫表信息,總體來說,task 是一個任務實現的最基本單元,他指定任務的驅動、驅動的配置、約束和所需的資源。在 task 啟動之后,則會調用對應的 driver。
{{ "Name":"dtle-demo", "Tasks":[ { "Type":"Src", "Config":Object{...} }, { "Type":"Dest", "Config":Object{...} } ]}}
driver
driver:driver,執行任務的具體方法,driver 承擔了數據傳輸的具體實現,從讀取 binglog,到數據的回放,都由 driver 進行實現。driver 只為數據傳輸服務。
總結
以上,便是一個 job,從請求提交,到最終實現所經歷的一個簡單流程。總體來說,我們一般將 job 的實現分為兩個部分,一個部分是調度,調度部分實現 job 的高可用,以及 job 轉移等一系列事物。而來另外一部分,則是傳輸部分的具體實現,從源端目標端的連接,到數據的抽取、清洗、回放。
責任編輯:
總結
以上是生活随笔為你收集整理的mysql job_MySQL数据传输中dtle 之 job 实现简析-爱可生的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: anjuta 连接mysql_ubunt
- 下一篇: java底层原理书籍_阿里面试题:Jav