刘培
新手
新手
  • UID409
  • 粉丝0
  • 关注0
  • 发帖数3
阅读:5317回复:0

Cassandra介绍

楼主#
更多 发布于:2019-03-19 16:25
       Apache Cassandra是一套开源分布式Key-Value存储系统。Cassandra不是一个传统的关系型数据库,它是一个混合型的非关系的数据库它以完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。
Cassandra特点:
  • 高容错性 数据被自动复制到多个节点以进行容错,支持跨多个数据中心的复制,故障节点可以不停机地替换。
  • 去中心化 没有单一节点宕机故障,没有网络瓶颈,集群中的每  个节点都是相同的。
  • 弹性可扩展 随着新节点的加入,读写吞吐量都呈线性增长,应用程序不用停机或中断。
  • 高稳定性 没有单一节点宕机故障,没有网络瓶颈,集群中的每个节点都是相同的。

Cassandra存储信息分类:Memtable、Commit Log、SSTable

       Memtable在内存中记录着最近所做的修改,而SSTable则在磁盘上记录着Cassandra所承载的绝大部分数据。在SSTable内部记录着一系列根据键排列的一系列键值对。通常情况下,一个Cassandra表会对应着一个Memtable和多个SSTable。除此之外,为了提高对数据进行搜索和访问的速度,Cassandra还允许软件开发人员在特定的列上创建索引。
      鉴于数据可能存储于Memtable,也可能已经被持久化到SSTable中,因此Cassandra在读取数据时需要合并从Memtable和SSTable所取得的数据。同时为了提高运行速度,减少不必要的对SSTable的访问,Cassandra提供了一种被称为是Bloom Filter的组成:每个SSTable都有一个Bloom Filter,以用来判断与其关联的SSTable是否包含当前查询所请求的一条或多条数据。如果是,Cassandra将尝试从该SSTable中取出数据;如果不是,Cassandra则会忽略该SSTable,以减少不必要的磁盘访问。在经由Bloom Filter判断出与其关联的SSTable包含了请求所需要的数据之后,Cassandra就会开始尝试从该SSTable中取出数据了。首先,Cassandra会检查PartitionKey Cache是否缓存了所要求数据的索引项Index Entry。如果存在,那么Cassandra会直接从Compression Offset Map中查询该数据所在的地址,并从该地址取回所需要的数据;如果Partition Key Cache并没有缓存该Index Entry,那么Cassandra首先会从Partition Summary中找到Index Entry所在的大致位置,并进而从该位置开始搜索Partition Index,以找到该数据的Index Entry。
       在写入时,Cassandra会首先将数据写入到Memtable中,同时在Commit Log的末尾添加该写入所对应的记录。这样在机器断电等异常情况下,Cassandra仍能通过Commit Log来恢复Memtable中的数据。在持续地写入后,Memtable的大小将逐渐增长。在其大小到达某个阈值时,Cassandra的数据迁移流程就将被触发。该流程一方面会将Memtable中的数据添加到相应的SSTable的末尾,另一方面则会将Commit Log中的写入记录移除。

Cassandra集群机制:
  • 最终一致性  成功写入后读取的并不一定是最新数据,但过一段时间(毫秒级),所有副本才能达成一致,Cassandra支持一致性调节。
  • Gossip协议  Cassandra集群没有中心节点,各个节点的地位完全相同,节点之间通过Gossip协议进行通信,用于维护集群的状态。
  • 数据备份机制  Cassandra是一个支持容灾的系统,即数据会在集群中保留多份,当某一个机器失效的时候,其他机器任然有数据备份,从而保证整个服务正常。
Cassandra适用场景:
  • 快速开发应用程序  cassandra的设计机制决定了,它的数据模式(列的增减)的改动的成本是非常低的。Cassandra可以快速适应应用的初期变更。
  • 大量写入、统计和分析  
    Cassandra的列族设计是囊括数据关联和排序的,并且可以不存储不需要的数据,这极大减省了表联接和冗余字段带来的性能开销,后者恰恰是高并发写入操作、统计分析时关系型数据库的瓶颈。
  • 需要扩展的部署结构
    Cassandra是面向分布式的设计,可以灵活地水平扩展,以在运维阶段满足扩容的需求,而不必考虑“将数据迁往更高性能的服务器”这样的问题。且Cassandra扩容性能成线性增长。

最新喜欢:

何光强何光强
游客

返回顶部