Cassandra架構、設計(集群&表)和性能報告


系統架構:

Cassandra No -SQL 數據庫系統, 基於一致性哈希算法的 P2P 環形結構。 這種結構 各節點功能完全相 同, 可靈活添加節點來完成系 統的擴充或刪除節點, 且無需大規模轉移數據, 時徹底避免系 統因 單點故障

導致的不穩定性; 每個節點通過 Gossip 機制進行消息同步; 數據 個節 點( 是通過參數配置的副本因 子), 統利 數據

的復制機將存儲在各節點上的數據復制到其他節點上, 實現了數據的高度可獲得性與安全性。

 

 

數據模型

Cassandra 使用 型, 記錄是以 Key Value 形式進行存儲, 其中 Key為 唯一標識。 個Key- Value Value 為Column, 組,

Column Name Column Value timestamp CF 由一個 Key及其對應的若干個 Column 標識組成。一個

keyspace 包含若干 CF 類似關系 型數據庫中一個

database 可有 個table

 

個Column 型數據模型。

 

 

 

 

CPA理論:

NoSQL Eric Brewer 的CAP 理論   依據此理論, 在一個大規模的分布式數據系統中, 有三個需求是彼此循環依賴的, 一致性( consistency availability 耐受性( partition tolerance

一致性: 對所有數據庫客戶 使 據;

可用性:  據;

分區耐受性:  上, 即使發生 障, 務。

 

CAP 可簡單描述

  滿 以上三個 性, 滿 個。

Cassandra 主要支持 性。 

Cassandra 數據 性,

可用 性。

 

 

存儲機制

Cassandra 依賴本地的文件系統通過內存與磁盤的雙重存儲機制來保證數 據的持久性

Cassandra 有三 個重 構, 記錄

Memtable Commit Log和

SSTable

Memtable 改, 而SSTable 記錄着數據庫 所承載的 絕大部分數據。通常 下, Cassandra

Memtable 和多 個SSTable

Cassandra 接收到 客戶端發送來的數據, 首先將寫操作記錄到 位於磁

盤的 CommitLog 中; 上述操作成功 后, 更新位於內存中 Memtable 構。 數據, 使得 Memtable 逐漸增長, 其數據量到 達某個閾 值時, Cassandra 的數據遷移被觸發, 方面將

Memtable 的SSTable 另一方面將 CommitLog 入記錄移除。 對於讀操作,

Memtable 中的數據, 若無法獲取所需信息, 檢索本地磁盤。

Cassandra 會定期執行壓緊compact 操作, 將同一條數據不同的版本進行合並, 過時數據也會在此過程中被刪除; 分層數據壓縮, 有效減少數據體積

及磁盤

 

系統設置(集群)

針對實時氣象數據存儲系統, 用戶對該系統讀取的性能需求遠遠高於寫入數據 通過對副本數進行合理設置, 可分散讀取壓力 對於5 節點集群, 將副本數設置為

Row 分區 模式:

采用自動分區方式, 使不同的 Row Key 均勻分布在各節點上, 有利於數據讀取壓力的分散。

 

 

Cassandra 表設計

作為典型的非結構化數據,氣象數據可以由多維索引 來確定一個唯一的數據。

業務用戶常見的操作包括“最新數據”“左右翻頁”“上下翻頁”等。

 

數據表

根據不同數據類型建立相應數據表, 用於存儲數據內容, 包括:

ECMWFHR(高分辨率數值預報產品 )、

SATELLITE 資料)、

UPPERAIR (高空站點資料)、

SINGLERADAR (雷達資料) 等。

“ T639 ”為 例 說明 數據表結構(表 1 )。

建表 句: CREATE TABLE "T639 "

"dataPath " text , column1  text

value blob PRIMARY KEY " dataPath " ,

column1

 

層次表

用於存儲所有模式或實況的層次信息, 表名為level 客戶 端進行上下翻頁操作, 從level 表中獲取當前層次的上一層或下一層信息; 利用層次表與數據表, 可檢索到不同層次的數據(表2 )。

建表語 句: CREATE TABLE level

"dataPath " text , column1 int , value int , PRIMARY KEY " dataPath " , column1 )) ;

 

最新時刻表

用於存儲各類數據的最新時刻信息, 表名 為latestdatatime 最新時刻表, 用戶能通過客戶端快速查找到最新數據文件名。 用戶根據完整索引 (文件路徑與最新數據文件名), 例: T639 WIND 500 17030108. 000 即可在“數據表”中獲取到對應數據(表 3 )。

建表語句: CREATE TABLE latestdatatime

" dataPath " text column1  text value text ,PRIMARY KEY " dataPath " , column1 )) ;

 

 

 

 

存儲系統性能測試

測試環境

選用5台相同配置的服務器用來搭建分布式存儲系統。 操作 Red Hat Enter -prise Linux Server release 7. 處理器參數為Intel Xeon CPU E5 2620 v2 2. 10GHz 主頻為2. GHz 存大小為 256 GB ;6 塊4TB SATA 硬盤; 服務器間通過萬兆光纖連接。Cassandra 數據庫版本為2. 2.

 

高可用性測試

個節點所組成分布式存儲系統, 其結構上具有如下特點。

)服務器雙網卡綁定, 即將兩個物理網卡虛擬成一個邏輯網卡; 提升服務器之間的傳輸帶寬,實現網卡冗余。

)用於集群內部數據交換的兩台萬兆光纖交換機, 采取級聯方式, 可互為備份。

塊SATA 硬盤, 其中 塊做 RAID1, 安裝操作 件; 4TB 個RAID0 用於存儲數據。

)服務器集群為環形結構, 沒有 master 節點, 各節點功能完全一樣。

 

按照表4中內容, 對系統的基礎設施層(包括網絡設備、存儲設備等)、 軟件層(數據庫) 進行測試, 來驗證系統的高可用 性; 從表中結論可知, 系統中用於內部數據交換的光纖或網卡、交換機及任一 Cassandra 服務器故障, 均不影響 MICAPS4客戶端調取數據。

 

 

 

讀取性能測試

通過讀取數據的腳本文件(可獲取數據字節數信息, 表5中 ECMWF _ HR TMP 100 錄下數 132642 SATELLITE

FY2E L1 IR3 EQUAL 下數據字節數為554944字節

T639 WIND 100 下數據字節數為1449052字節), 模擬單用戶及50 100 客戶 端對同一類型數據進行讀取, 共分 組, 即對三種不同類型的數據進行測試, 測試性能見表5 注意測試結果包含網絡傳輸時間。

 

 

 

從數據讀取的測試結果可以看出

)50 用戶並發和100 並發 客戶 型數據進行 。以 T639 WIND/100 例, 50 100用 並發與單用 讀取相 關數據 均時間 均在20 ms 左右。

在100 並發情況下, 從數據庫 調 取數據 所消 ms量級為 小於在samba

3) 數據讀取時 比,即單個數 大, 費的時間 越長。

 

結語

利用 Cassandra 分布式數據庫搭建的存儲環境, 提高了實時氣象數據存儲效率與檢索速度, 通過統一的數據平台, 實現了運維人員對該系統維護。 通過在實際業務環境中進行測試, 驗證了該分布式數據環境的高可用性; 以毫秒級為單位的數據讀取時間, 能很好地滿足業務對數據時效性的需求。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM