Cassandra 集羣配置

 

集羣機制

一致性哈希(數據一致性)

Token算法

Range數據庫

Partitoner服務器

 

 

Gossip協議(流言,無中心獲取領導者)

用於在環內節點之間傳播狀態信息網絡

週期運行,每次在環中隨機挑選一個對象節點,發起會話數據結構

每次會話傳送三條消息函數

Phi增量故障檢測算法spa

 

Snitch(機架感知)

複製策略

Cassandra的數據存儲

  1) commit log: 保存對數據庫的DML操做。記錄的是操做動做,不是數據(redo)

    · 進行寫操做時,首先要寫commit logexcel

    · 只有操做被寫入 commit log 的數據,纔算寫入成功對象

    · 當發生掉電,實例崩潰等問題的時候,可使用commit log 進行回覆blog

  memtable:

    · 數據操做成功寫入到 commit log後,就開始寫入內存中的memtable

    · memtable中的數據達到必定閾值後,就開始寫入硬盤中的 SSTable,而後內存中從新創建一個memtable接收下一批數據

    · 上述刷寫過程是非阻塞的

    · 查詢時先查詢memtable

   SSTable:

    · 起源於Google的Bigtable

    · 墓碑: 刪除數據並非物理刪除,實際上打刪除標記,軟刪除

    · 壓緊: 對用戶透明,數據庫本身控制。(墓碑打標記行刪除 / 重建索引)

    · Bloomfilter(布隆過濾器):相比其餘的數據結構,Bloom Filter再空間和時間方面都有巨大的優點,Bloom Filter存儲空間和插入/查詢時間都是常數。另外,Hash函數相互之間沒有關係,方便由硬件並行實現,Bloom Filter不須要存儲元素自己,再某些對保密要求很是嚴格的場合有優點。

  2) data:

  3) saved_caches:

 

集羣配置

安裝JAVA環境

部署Cassandra安裝包

修改Cassandra配置文件,設置集羣名

規劃IP地址,設置做爲seed的IP

決定snitch

Cassandra還能夠支持多數據中心集羣

修改其它可能的配置

啓動Cassandra並加入集羣

 

安裝過程: 節點1

1、安裝JAVA

2、設置JAVA_HOME環境變量

3、解壓Cassandra安裝包

4、建立/var/lib/cassandra和/var/log/cassandra目錄並改變屬主,若是目錄已經存在先進行清理

5、修改配置文件 conf/cassandra.yaml

cluster_name: 'cluster01'

num_tokens: 256

seeds: "192.168.1.100"        --種子機

listen_address: 192.168.1.100

rpc_address: 192.168.1.100

rpc_port: 9160

rpc_keepalive: true

endpoint_snitch: SimpleSnitch  --假設全部服務器都在一個機架

 

6、啓動Cassandra

 

 

安裝過程:節點2

1、安裝過程與節點1相似

2、修改配置文件略有不一樣

3、Seeds寫節點1的IP

4、啓動節點2

 

副本放置策略

簡單策略

舊網絡拓撲策略(機架感知設定)

網絡拓撲策略 (用戶本身設定)

  Snitch(指定機架結構)

    · Simple Snitch:經過IP地址判斷

    · PropertyFileSnitch: 指定IP屬於哪一個數據中心,哪一個機架

副本因子

  建立keyspace時候指定

  create keyspace excelsior with replication = {'class':'SimpleStrategy', 'replication_factor' : 3};

  create keyspace "Excalibur" with replication = {'class':'NetworkTopologyStrategy','dc1':3,'dc2':2};

相關文章
相關標籤/搜索