application发送数据到server
- application 发送请求到server
- 根据设置的load balance 规则从cluster中挑选一个coordinator,一般使用轮询即可。cluster 中的cassandra node 不仅作为数据库的储存节点,同样作为request 请求处理的server。所以保证每个节点处理的request 一样的balance算法即可
- 然后根据插入数据的主键hash value,来将第一份数据写入到对应节点中
- 然后根据replicator,write consistency,replication strategy ,来写副本
eg.replicator=3,write consistency=2,replication strategy=simple strategy
则表示成功写入到2个节点中,application的写操作才算成功。
simple strategy 表明副本是放在第一个node 节点环位置的下一个节点
Note-很重要的一点
通过上面描述,发现可以根据hash value 来确定一条数据存放在哪个节点上,然后根据replication的参数设置,我们可以确定数据副本存放在哪个节点上。那么对于read 操作,我们就可以根据条件的hash value 来找到存放数据的第一个节点,然后根据数据副本来找其他replicate 数据。
上面认识是错误的
首先,考虑下如果我们添加node到cluster中,假如数据存放的第一个node hash 受到影响,数据要移