閆娟雅

摘要:針對傳統的集中式網絡數據存儲方式存儲數據效率低的問題,研究了基于Kubernetes的海量網絡數據存儲方法。對海量網絡數據動態合并處理后,設計Kubernetes集群并部署外部上傳端與Kubernetes服務的訪問過程,從而實現對海量數據的存儲。對比實驗結果顯示,該存儲方法相比能夠減少約62%的運算內存占用,并且存儲操作速度快,更能滿足實際需求。
關鍵詞:Kubernetes;海量數據;網絡數據;數據存儲
中圖分類號:TP392? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)27-0028-02
Kubernetes是用于管理云平臺中多個主機上的容器應用部署方式[1]。相比于傳統系統綁定并通過插件、腳本或者沉重的虛擬機來安裝應用的應用部署方式,Kubernetes可以通過部署互相隔離的存儲容器的方式,在避免不同數據進程互相干擾的同時,還能利用容器各自的文件系統有效區分計算資源。將Kubernetes應用于網絡海量數據存儲中,能夠改善集中式數據存儲方法并發率低的問題。因此,本文將研究基于Kubernetes的海量網絡數據存儲方法,并對該方法的可行性進行驗證。
1 基于Kubernetes的海量網絡數據存儲方法研究
1.1 海量網絡數據動態合并處理
網絡海量數據因網絡的互聯互通特殊性,網絡中的數據大多存在一定的相關性。為節省數據存儲過程中占用的內容,需要對網絡海量數據進行動態合并處理。在本研究中,使用子集檢測的頻繁項挖掘算法,找出存在關聯關系的網絡數據,從而實現網絡海量數據的動態合并,提高網絡海量數據的訪問速度,減少數據存儲過程中的輸入輸出次數[2]。
網絡海量數據不僅數據量大,而且數據更新累加速度極快,為提高數據的存儲效率采用并行化算法實現海量網絡數據動態合并處理,具體處理步驟如下:
1)統計在某一時間段T內,需要存儲的網絡海量數據個數。找到該時間段內數據個數的最大值K,并設定該值為需要動態合并的數據數量。
2)掃描網絡數據記錄日志,得到數據對應的IP地址、時間、數據量等信息,并建立對應時間段的網絡數據子集。
3)統計輸出所有時間段的網絡數據子集的數量。如果時間段的網絡數據子集的個數大于設定的閾值,并且子集項在大于K的子集項中沒有出現過,將所有子集輸出。
對于大小為K的網絡數據子集,將子集中的前K項初始化為1,后N-K項初始化為0。按順序掃描子集中所有元素,將排序為“10”交換為“01”。判斷在所有時間段的網絡數據子集中,k個標記為“1”的元素全部移動到子集序列的最右端,則停止處理。對每一組的網絡數據進行分片,以逗號分隔元素,獲取所有大小為K的網絡數據子集,并且輸出[3]。重復上述過程直至將所有時間段的網絡數據子集都完成動態合并。海量網絡數據動態合并后,設計部署數據存儲容器的Kubernetes集群。
1.2 Kubernetes 集群設計
根據Kubernetes的理論,若存儲大量的網絡數據,需要設計集群,通過對Kubernetes集群的部署,保持網絡數據狀態信息的同時,避免單存儲點方式故障造成的數據存儲停滯。
在Kubernetes集群中,利用分布式鍵值數據庫Etcd組件保存Kubernetes集群上的應用信息、配置參數以及管理存儲對象的時間狀態信息。在對多個Etcd組件部署時,利用Raft算法產生分布式鍵值數據庫Etcd組件的Leader節點處理所有組件對數據的管理操作信息提交。若Etcd組件的Leader節點失效,Kubernetes集群集群會自動重新選舉Leader節點從而保障Etcd數據存儲服務不受故障影響,實現高可用的目的[4]。根據Raft算法的處理原理,選舉的Leader節點通常為奇數節點,因此按照以下具體過程對Etcd集群部署:
1)在Kubernetes集群中下載和分發分布式鍵值數據庫Etcd組件安裝文件。
2)創建Etcd組件各節點的TLS證書,證書用于加密數據上傳與Etcd集群和Etcd集群間的通信。
3)創建分發分布式鍵值數據庫Etcd組件的systemd unit文件,并根據數據存儲目標配置Etcd組件的服務參數。
4)檢查Kubernetes集群工作狀態。
在Kubernetes集群部署過程中,分發分布式鍵值數據庫Etcd組件集群確保了與Kubernetes集群部署運行相關操作信息數據的可靠存儲。而利用Kubernetes集群中的 Master節點可以為接入集群的上傳設備提供集群入口和所有資源管理接口的API Server、管理集群資源的Controller Manager、負責集群調度的Schedule三個重要組件。為滿足網絡海量數據存儲時,Kubernetes集群的部署需求,以及保證各個組件不會因單獨的故障而影響集群的穩定運行,采用分別在多個集群Master節點上部署操作副本即可[5]。與Etcd組件各節點相類似,通過競爭選舉機制產生leader節點,當leader節點不可用后,剩余Master節點再次進行選舉,從而產生新的leader節點從而保證kubernetes集群服務的可用性。
1.3 實現海量數據存儲
采用Kubernetes集群對網絡海量數據進行存儲容器部署時,由于Kubernetes集群中的應用服務無法直接對外服務,因此,為保證網絡海量數據能正常接入Kubernetes集群,需對Kubernetes集群由內部向外部服務接口暴露出來,從而實現網絡數據的訪問存儲。
考慮到接入網絡海量數據的服務數量較多,采用Ingress方式設計Kubernetes集群設計網絡外端口訪問。Ingress可以通過定義了外部URL請求到內部服務的轉發規則,具體轉發實現由Ingress Controller完成將對外界服務請求的響應轉換為Kubernetes集群內部服務。