Cassandra基本介绍(3) - 架

发布时间:2019-09-02 07:39:22编辑:auto阅读(1588)

        通过上面2节,大家了解到了RDBMS遇到的问题,以及对Cassandra有了基本的了解。下面将介绍下Cassandra内部简单结构。

        通过本章,大家应该了解到:

    1. Cassandra Write流程

    2. 什么是SSTable

    3. Cassandra Read流程


    • Cassandra Write流程

    1. Writes可以被写入到集群中的任意节点

    2. Writes被写入到commit log,同时写到memtable

    3. 每一个write包含一个timestamp

    4. Memtable定期flush到硬盘中(sstable)

          当memtable的内容超过了其配置的限制,它包含的数据就会被放到一个队列中并刷新到磁盘。你可以通过修改cassandra.yaml中 memtable_flush_queue_size的值来改变队列的长度

    5. 新的memtable在内存中创建

    6. 删除是一种特殊write,称之为”tombstone”(墓碑)

    wKioL1dWfYWS986iAAB9v7Fk5YE723.png

    wKiom1dWfH6RgmDsAACklsVSMaA321.png

    • 什么是SSTable

        SSTable有序字符串表(Sorted String Table),是从Google的Bigtable里借鉴过来的概念。一旦memtable被刷写入磁盘,成为一个SSTable,它就是不可变的了。

        特点如下:

    1. 数据文件:存储记录,不可变

    2. 每一个write包含一个timestamp

    3. Partition被分割到多个SSTable

    4. 新的memtable在内存中创建

    5. 通过compaction合并,只保存最新的timestamp

    6. 删除被标记为tombstone

    wKioL1dWft_xHBdVAAE8z8vtlA8483.png

    • Cassandra Read流程

    1. 任何server都可以作为coordinator被查询

    2. 通过查询key定位交互的nodes

    3. 在每一个node上,数据都是从SSTable拉取并合并

    4. 一致性< ALL时,将会在后台执行read repaire(read_repaire_chance)

    wKiom1dWgKnSHRvTAAFspihkQPs096.png-wh_50

    wKioL1dWgbHDoTIGAACMp7OCMQg792.jpg-wh_50


关键字