1 核心架构
1)Node
节点,存放数据的地方,Cassandra的基础设施。
2)datacenter
- 数据中心,关联节点的集合。可以是物理或虚拟的。
- 复制策略由datacenter设置。数据通过复制因子决定,可写入到多个datacenter
3)Cluster
集群,包含一个或多个数据中心。可跨越物理位置。
4)Commit log
所有数据首先写入 Commit log 以确保持久性。将所有数据刷新到 SSTable 后,可以对其进行存档,删除或回收。
5)SSTable
SSTable(sorted string table)是Cassandra定期写入 memtable 的不可变数据文件。 SSTable 仅能附加数据,并按顺序存储在磁盘上,为每个Cassandra表维护。
6)CQL Table
由表行提取的有序列的集合。此表由列组成,并具有主键。
2 关键组件
1)Gossip
一种点对点通信协议,用于发现和共享有关 Cassandra 集群中其他节点的位置和状态信息。 每个节点在本地持久保存 Gossip 信息,以便在节点重新启动时能立即使用。
2)Partitioner
Partitioner 确定数据的副本在节点之间的分发。
每个节点都有一个唯一的 Token,表明该节点分配的数据范围。Partitioner 是hash 函数,用于计算每个分区键的 token。
分区策略:
- Murmur3Partitioner:根据 Row Key 字段的 HashCode 排序,默认的分区器。
- RandomPartitioner:和 Murmur3Partitioner 类似,只是通过 MD5 计算哈希值,安全性更高。
- ByteOrderedPartitioner:按照 Row Key 的字节数据来排序,支持 Row Key 的范围查询。
- OrderPreservingPartioner:采用 Row Key 的 UTF-8 编码排序,支持 Row Key 范围查询。
3)Replication factor
复制因子:集群中的副本数量,每个副本不在同一个节点。
4)Replica placement strategy
Cassandra在多个节点上存储数据的副本,以确保可靠性和容错能力。
复制策略确定放置副本的节点:
- SimpleStrategy:复制数据副本到协调者节点的 N-1 个后继节点上
- NetworkTopologyStrategy:用于多数据中心部署。可以指定每个数据中心的副本数。
5)Snitch
Snitch 决定复制策略使用哪个数据中心和服务器的节点来放置副本。
Snitches 按实现分为三种:
- SimpleSnitch:默认。这种策略不能识别数据中心和机架信息,适合在单数据中心使用;
- NetworkTopologySnitch:这种策略提供了网络拓扑结构,以便更高效地消息路由;
- DynamicEndPointSnitch:这种策略可以记录节点之间通信时间间隔,记录节点之间的通信速度,从而达到动态选择最合适节点的目的。