發布時間: 2023-03-14 16:20:58
Cassandra是一個開源的、分布式的、無中心節點的、有彈性和可擴展的、高度可用的、容錯的、一致和協調的、面向列的NoSQL數據庫。
Cluster
Node(節點):一個運行cassandra的實例
Rack(機架):一組nodes的集合
DataCenter(數據中心):一組racks的集合
Cluster(集群):映射到擁有一個完整令牌圓環所有節點的集合
客戶端連接到某一節點發起讀寫請求時,該節點充當客戶端應用與集群中擁有相應數據節點間的橋梁,稱為協調者,以根據集群配置確定環(ring)中的哪個節點應當獲取這個請求。
使用CQL連接指定的-h節點就是協調節點
1、集群中任何一個節點都可能成為協調者
2、每個客戶端請求都可能由不同的節點來協調
3、由協調者管理復制因子(復制因子:一條新數據應該被復制到多少個節點)
4、協調者申請一致性級別(一致性級別:集群中有多少節點必須相應讀寫的請求)
分區器決定了數據如何在集群內被分發。在Cassandra中,table的每行由唯一的primarykey標識,partitioner實際上為一hash函數用,以計算primary key的token。Cassandra依據這個token值在集群中放置對應的行。
Cassandra提供了三種不同的分區器
Murmur3Partitioner(默認)- 基于MurmurHash hash值將數據均勻的分布在集群
RandomPartitioner - 基于MD5 hash值將數據均勻的分布在集群中
ByteOrderedPartitioner - 通過鍵的字節來保持數據詞匯的有序分布
每個虛擬節點對應一個token值,每個token決定了節點在環中的位置以及節點應當承擔的一段連續的數據hash值的范圍,因此每個節點都擁有一段連續的token,這一段連續的token,組成了一個封閉的圓環。
沒有使用虛擬節點, Ring環的tokens數量=集群的機器數量. 比如一共有6個節點,所以token數=6.因為副本因子=3,一條記錄要在集群中的三個節點存在. 簡單地方式是計算rowkey的hash值,落在環中的哪個token上,第一份數據就在那個節點上,剩余兩個副本落在這個節點在token環上的后兩個節點.
上一篇: 軟考報名資格審核后還能修改信息嗎
下一篇: MySQL生產環境下有哪些常見架構