Cassandra架构
基本流程: Cassandra数据库是一个点对点分布式系统,集群中各节点平等,数据分布于集群中各节点,各节点间每秒交换一次信息。每个节点的commit log提交日志捕获写操作来确保数据持久性。
数据先被写入MemTable(内存中的数据结构),待MemTable满后数据被写入SSTable(硬盘的数据文件)。
所有的写内容被自动在集群中partition分区并replicate复制。
库表结构: Cassandra数据库面向行。用户可连接至集群的任意节点,通过类似SQL的CQL查询数据。
集群中,一个Application一般包含一个keyspace,一个keyspace中包含多个表。
读写请求: 客户端连接到某一节点发起读或写请求时,该节点充当客户端应用与拥有相应数据的节点间的coordinator协调者以根据集群配置确定环(ring)中的哪个节点应当获取这个请求。
CQL是客户端,Driver也是一种客户端. 使用CQL连接指定的
-h节点就是协调节点.
图解: 协调节点(10)负责和客户端的交互.真正的数据在节点1,3,6上,分别表示数据的三个副本,最终只要节点1上的数据返回即可.
关键词
| KeyWord | Explain |
|---|---|
Gossip |
点对点通信协议,用以Cassandra集群中节点间交换位置和状态信息。 |
Partitioner |
决定如何在集群中的节点间分发数据,即在哪个节点放置数据的第一个replica。 |
Replica placement strategy |
决定在哪些节点放置每行数据的其他replica。Cassandra在集群中的多个节点存储数据的多份拷贝(replicas)来确保可靠和容错。 |
Snitch |
定义了复制策略用来放置replicas和路由请求所使用的拓扑信息 |
Virtual nodes |
虚拟节点, 指定数据与物理节点的所属关系 |
Token Ring |
令牌环 |