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 分佈式數據庫搭建的存儲環境, 提升了實時氣象數據存儲效率與檢索速度, 經過統一的數據平臺, 實現了運維人員對該系統維護。 經過在實際業務環境中進行測試, 驗證了該分佈式數據環境的高可用性; 以毫秒級爲單位的數據讀取時間, 能很好地知足業務對數據時效性的需求。

相關文章
相關標籤/搜索