1.3 節點 按照我們給Laxcus集群的設計定義,Laxcus集群被分為內部和外部兩個網路環境。內部網路由集群的所有權人負責實施和管理,為保證集群能夠有效可靠運行,需要遵守一系列的集群部署和管理規定。外部網路是用戶負責範圍,用戶可以通過互聯網或者VPN的方式,遠程登錄進入集群,然後通過交互命令傳達 ...
1.3 節點
按照我們給Laxcus集群的設計定義,Laxcus集群被分為內部和外部兩個網路環境。內部網路由集群的所有權人負責實施和管理,為保證集群能夠有效可靠運行,需要遵守一系列的集群部署和管理規定。外部網路是用戶負責範圍,用戶可以通過互聯網或者VPN的方式,遠程登錄進入集群,然後通過交互命令傳達到集群上,執行數據操作。這樣一個佈局,可以理解為集群層面的客戶機/伺服器結構。此外,如果集群組織者沒有對外服務的需要,也可以將集群全部部署在內部網路里,成為一個純粹的Intranet集群。
如前所述,節點是Laxcus集群的基本單位,由前端節點、網關節點、工作節點、管理節點4類節點組成。理論上,一臺物理電腦上可以部署任意多個節點,包括組成一個小型的集群。從節點的工作性質來看,它具有雙重身份,即是伺服器又是客戶機。當它做為伺服器使用時,它接受其它節點的命令請求和執行數據處理;當處於客戶機狀態時,又可以向其它節點發送命令。軟體層面上,節點實質是操作系統下的一個進程,在後臺運行,通過網路與外界保持聯繫。在Laxcus 2.0版本中,節點共設計有4類11種節點。對每一種節點,我們都規定了它們的工作內容和處理範圍,以下將逐一進行介紹。
圖1.1 Laxcus集群
1.3.1 Top節點
Top是管理節點,在Laxcus集群的二級管理構架中,是整個集群的核心,必須保證絕對存在。集群中的其它節點都是Top節點的下屬節點。按照Laxcus集群管理規定,這些節點的工作,必須在Top節點啟動後啟動,在Top節點停止前停止。因為Top的頂級管理節點身份,它節點只負責最關鍵的數據資源管理工作,包括用戶賬號的建立、刪除、查詢,用戶操作許可權的授權和回收,資料庫資源的分配、釋放、檢查。Top有兩個直接的下屬節點:Home、Aid,Top要接受它們的註冊,以及監測它們的運行狀態。由於Top節點在集群中的重要性,它的故障將造成整個集群的管理混亂,所以在實際部署時,要求一個Top節點在運行的同時,還應該有最少一個Top備用節點。為了區分這兩類節點,在Laxcus集群管理規定里,我們把接受和執行業務處理中的Top節點稱為Master節點,備用的Top節點稱為Monitor節點。Monitor節點的工作,除了監視Master節點運行外,還會同步備份它的數據資源和運行記錄。當Master節點發生故障失效後,Monitor節點將啟動故障切換過程,接手它的全部管理工作。如果有多個Monitor節點,它們會通過協商的方式,在它們中間推舉一個Monitor節點成為新的Master節點。新的Master節點會要求原來的下屬節點重新註冊它的下麵,來保證集群繼續有效運行,同時新Master節點還把故障和切換過程通知集群管理員,由管理員來負責後續的故障電腦檢查、維修工作。
因為Top節點只負責數據資源管理,以及與Home、Aid節點保持少量的通信,所以通常情況下,它的工作負荷很輕。
1.3.2 Home節點
Home是管理節點,在Laxcus集群二級管理架構中,它是子域集群的核心。對上,向Top節點註冊,和接受Top節點的管理;對下,接受下屬節點的註冊,以及監督和協調它們的運行。在Laxcus集群里,工作節點全部運行在Home節點下麵,並且弱中心化管理思想也主要體現在Home節點上。運行過程中,它只負責兩項工作:追蹤工作節點運行狀態,收集和分析工作節點元數據。這些工作的數據量和產生的計算量都很小,不會對Home節點正常運行構成影響。與Top節點一樣,Home也要求有一個Master節點和最少一個Monitor節點。當Master節點發生故障時,Monitor節點可以接替Master節點的工作。
1.3.3 Task節點
Task是工作節點,註冊到Top節點下麵,為用戶的分佈任務組件提供存儲、管理、轉發服務。在實際使用時,Top會把它重定向給關聯的Home節點,再經過Home節點結合自己的數據資源進行判斷後,分派給自己的下屬節點,讓它們與Task節點進行數據交互。與Task節點進行直接數據交互的節點有Data、Work、Build、Call四種節點,它們將根據自己的業務需要,請求關聯的分佈任務組件,並把分佈任務組件下載下來,部署在自己的節點上,為用戶提供分佈數據處理。同時,每一個與Task節點執行過成功交互的節點,Task節點會記錄下它們的信息,當有新的分佈任務組件上傳後,Task節點會把這些新的分佈組件,同步推送給這些節點,使得用戶在發佈分佈任務組件後,集群可以立即部署和生效,省卻了用戶的等待時間。
按照上述流程介紹,實質上,Task節點是跨子域集群存在的,我們為Task節點設計了一個Top/Home/Home下屬節點的三層定向機制,每個Task節點可以為整個集群提供分佈任務組件服務,而不必拘泥於某個子域集群的限制。管理員也可以按照自己的需要,設置規則,為不同的用戶選擇合適的發佈空間,提高了管理靈活性。
1.3.4 Log節點
Log節點是工作節點,註冊到Home節點下麵。為本集群的其它節點保存它們的日誌數據,並提供格式化的日誌檢索服務。這樣的工作內容使得Log節點成為Laxcus集群里最簡單的一個節點。對於上傳的日誌,Log節點將根據每個節點的類型和地址,在磁碟上分別建立目錄和文件,然後按照時間的格式排列保存下來。在Laxcus集群里,各節點上傳的日誌內容,通常是它們的工作流程和運行錯誤,這些信息為分佈狀態下的數據追蹤和分析、程式調試、快速定位和判斷節點運行故障提供了重要的依據。所以Log節點的工作雖然簡單,但是非常重要,這也是為什麼要單獨把日誌單獨保存並且列為一類節點的原因。
1.3.5 Data節點
Data節點是工作節點,註冊到Home節點下麵,提供基於磁碟和記憶體的數據存取服務。在Laxcus集群里,Data節點保存著整個集群的數據,是所有數據處理的源頭。為了保證正確的數據處理,我們在Data節點上,為數據處理設計了一系列的可靠性保證,包括數據完整性、一致性要求,以及各種數據糾錯和冗餘能力。這些元素的加入,使得Data節點的複雜性,遠高於集群中的其它節點,它在集群中的重要性,也僅次於Top、Home節點。
另外Data節點與其它節點不同的是,Data節點具有“級別”概念,在運行時,被分為主節點(Prime Site)和從節點(Slave Site)兩種類型。它們的區別在於,主節點具有“讀寫”能力,可以執行全部數據操作,包括添加、刪除、更新、檢索。從節點只擁有“讀”的能力,即數據檢索操作。這個特點在實際應用中是非常重要的,它為Laxcus集群的許多初始指標,如數據冗餘、平衡計算、並行處理,提供了基本的保證,成為了Laxcus集群實施大規模數據處理的必要條件。
1.3.6 Work節點
Work節點是工作節點,註冊到Home節點下麵,提供數據計算服務。在Laxcus集群中,Work節點承接來自Data節點的數據,大量重要性高、計算量大的數據處理工作都發生在Work節點上,這使得Work節點在整個Laxcus集群中,成為工作負荷最重的節點,也因此成為體現數據處理效率最關鍵的一環。
為了獲得更高的數據處理效率,在Laxcus 2.0中,Work節點通常會把有限的硬體資源集中起來,採用任務隊列的手段和快進快出的原則,來解決幾個最重要的數據計算工作,從而避免因為無謂的任務空耗硬體資源,而其它需要作業的任務又不能獲得工作許可的問題。使得Work節點在應對大規模數據處理時,能夠充分利用硬體資源,來加快數據計算速度,同時也提高了數據處理效率。
1.3.7 Build節點
Build節點是工作節點,註冊到Home節點,提供ETL服務。ETL是的提取、轉換、裝載(extract、transform、load)的簡稱,這個名詞很好地描述了一種數據處理過程,是當前許多商業數據應用和互聯網數據處理業務的重要組成部分,可以理解為數據計算的前奏和加速器。ETL的核心要旨是把各種數據,按照各自不同的需求,經過重新組織整理後,形成新的數據。這些新的數據,將成為後續數據計算的必要材料。
在許多業務處理中,我們通常是採用ETL的方式,把一些數據組合工作從數據計算過程中分離出來,做成一個獨立的單元,提前完成,來供後面的數據計算使用,以達到簡化數據計算流程的目的。實際上,這種簡化的數據計算工作,在很多大規模數據處理業務中使用時,不止是簡化了數據處理流程,往往還獲得了更高的處理效率。
1.3.8 Call節點
Call節點是網關節點,註冊到Home節點下,提供分佈數據管理和任務調度服務。在Laxcus集群中,Call節點是一個“中間人”的角色,起到類似路由器的作用。對內,它收集Data、Work、Build節點的元數據,並把這些元數據按照各種要求重新組合,保存在記憶體里。對外,它只接受Front節點的註冊和命令請求,同時具有對外屏蔽了集群內部拓撲結構的作用,防止可能由外部發起的網路攻擊,即使因此發生宕機現象,也可以做到儘量避免波及到集群內部其它節點。當收到Front節點的命令後,它將按照命令的要求,為Front節點篩選集群內部的數據資源,和定位目標節點。在目標節點完成數據處理後,Call節點把數據結果返回給Front節點,從而完成一次數據處理工作。
與Task節點一樣,Call節點也是可以跨越多個子域集群的。至於是否需要跨越,則由註冊的Front節點來決定。當Front節點需要的數據分別存在於多個子域集群時,那麼Call節點將自動發生跨越子域集群行為。
1.3.9 Aid節點
Aid節點是網關節點,註冊到Top節點下麵,提供賬號和賬號資源的管理服務。Aid節點唯一的服務對象是Front節點,所有類型的Front節點都要首先註冊到Aid節點下麵,才能獲得進入集群和操縱數據的權力。Front節點發出的每一道命令,當通過Aid節點審核後,才能交給Call節點並轉發到集群內部。與Call節點一樣,Aid節點也對Front節點屏蔽內部網路環境,避免可能的網路攻擊行為影響到內部集群運行。Aid節點這種佈局和處理方式,具有分解數據業務負荷和保證集群安全的雙重作用。
在Laxcus 2.0版本中,Aid節點新增加事務處理能力,這樣命令在獲得核准前,為了防止命令之間可能存在的事務衝突,Aid節點給每個命令都增加了事務檢查環節。
1.3.10 Front節點
Front節點是Laxcus集群唯一的前端節點,由用戶操作和使用,被要求註冊到Aid節點下麵,為用戶提供進入集群和操作集群數據的能力。當Front節點成功註冊到Aid節點後,Front節點會向Aid節點請求關聯的Call節點地址,然後主動與它們建立聯繫,來獲得執行命令的能力。
在Laxcus集群里,Front節點被分為三種類型:字元界面的控制台、圖形界面的終端、沒有操作界面的驅動程式。前兩種被用戶直接使用,分別針對了Linux和Windows用戶的使用習慣。用戶在視窗上輸入命令後,通過Aid、Call這兩道網關節點的審查,被髮往集群內部處理。後一種是嵌入到其它軟體中使用(如Apache、Tomcat這類Web軟體),命令由這些開放介面傳遞過來,經過Aid、Call節點審查通過,發往集群內部處理。圖形界面的Front節點現在有三種語言版本:英文、中文、西里爾語,另外其它語種的圖形版Front節點也在籌劃中。
三類Front節點允許同時並行存在,每一類又可以同時併發多組命令,所有命令都在Aid節點管理下,各自執行自己的數據處理工作,不會發生衝突。至於命令最大併發數,則由集群管理員分配,Aid節點負責執行。
圖1.3.10.1 Front控制台
圖1.3.10.2 Front終端
1.3.11 Watch節點
Watch是工作節點,可以選擇註冊到Top或者Home節點下麵,提供監視主域集群或者子域集群的服務。在Laxcus集群里,Watch節點是唯一完全由集群管理員操縱的節點,它也是Laxcus集群另一種擁有圖形操作界面的節點,為集群管理員提供可視化的管理工作。集群管理員通過Watch節點,能夠實時追蹤和檢查所有節點、所有用戶的當前狀態。當集群中的節點需要通知管理員,或者感知、捕獲到運行故障時,也會通過網路傳遞給Watch節點,Watch節點將以文字、圖像、聲音的方式,提醒管理員加予關註,或者要求管理員去排除已經發生的故障。
圖1.3.11 Watch節點圖形界面