cassandra技術分享

2021-08-26 07:33:10 字數 1644 閱讀 1642

背景

cassandras是由facebook的兩位工程開發出來的一款nosql資料庫。它兼有dynamo和bigtable的優點。主要有下面一些特點:

安裝與配置

cassandra的安裝和配置都比較簡單。如果不做集群,直接把下下來的壓縮包解壓後,就可以使用。如果要做集群,那就需要配置conf目錄下的storage-conf.xml檔案。storage-conf.xml檔案中的主要配置引數解釋如下:

配置完storage-conf.xml檔案後,執行bin目錄下的cassandra檔案就可以啟動cassandra.要監視集群的執行狀態可以使用nodeprobe命令.

客戶端api

連線cassandra可以使用兩種api,一種是thrift api,另一種是高階api.下面是一段用thrift api連線cassandra的**

ttransport tr = new tsocket(「192.168.0.1」, 9160);

tprotocol proto = tbinaryprotocol(tr);

tr.open();

cassandra.client client = new cassandra.client(proto);

columnpath cp = new columnpath(「super1」,

「supercolumn_1」.getbytes(「utf-8」), null);

columnorsupercolumn cosc = client.get(「keyspace1」, key, cp,

consistencylevel.one);

supercolumn sc = cosc.super_column;

for (column col : sc.columns)

tr.close();

假設集群有三個結點組成: 192.168.0.1, 192.168.0.2, 192.168.0.3,那麼上面這段連線cassandra的**就有乙個問題: **中只連線192.168.0.1這乙個結點,一旦這個結點宕機就與整個集群失去了聯絡.但其實cassandra是沒有中心結點的,乙個結點宕機不會影響整個集群(假設複製因子大於1),所以在連線cassandra時不能只嘗試連線乙個結點,而應當嘗試連線多個結點.

資料的讀取和寫入

寫入過程如下:

1) 寫入提交日誌

2) 傳送資料到合適的結點

3) 寫入本地日誌並且更新memtables

4) 把memtable中的資料重新整理到磁碟上

5) 刪除提交日誌

6) 如果需要,則對儲存的資料進行compact

讀取過程如下:

1) 通過api訪問任乙個結點

2) 如果該結點存在這個key指定的資料,則返回,否則根據partioner計算該key對應的value在哪個結點,並從該結點取得資料返回.

一致性雜湊和gossip協議

cassandra能做到沒有單點代失敗實際上是由一致性雜湊和gossip協議保證的.

限制

使用cassandra時要注意下面這些限制:

Cassandra技術介紹之配置

所有的配置都在cassandra的安裝目錄下面的conf裡,conf目錄下面有cassandra.yaml這個檔案,所有的配置都可以通過修改這個檔案而達到目的 比較關鍵的幾個配置有 cluster name,partitioner,snitch,以及seed nodes的配置。如上圖,我們知道乙個c...

Cassandra技術介紹之配置

所有的配置都在cassandra的安裝目錄下面的conf裡,conf目錄下面有cassandra.yaml這個檔案,所有的配置都可以通過修改這個檔案而達到目的 比較關鍵的幾個配置有 cluster name,partitioner,snitch,以及seed nodes的配置。如上圖,我們知道乙個c...

mysql可以分享的技術 技術分享 MySQL

1 查詢語句是如何執行的?1 連線 1 建立連線 2 驗證許可權,修改了許可權,建立新的連線才會生效。3 sql執行的臨時記憶體 2 查詢快取 1 先查詢快取,更新操作會導致所有快取失效。2 mysql 8.0功能去掉 3 分析 詞法解析,語法解析 4 優化 1 決定使用哪個索引,比方說根據統計資訊...