zoukankan      html  css  js  c++  java
  • Cassandra的架构

    第5章 Cassandra 的架构

    5.1 system keyspace

                Cassandra有一个称为system的内部keyspace,用于存储关于集群的元数据。包括:节点令牌,集群名,用于支持动态装载的keyspace和schema的定义,迁移数据,节点是否自举成功。

    5.2 对等结构

                主从架构通常是主节点读写,从节点读,数据从主节点向从节点单向复制,存在很严重的单点故障问题。

                Cassandra采用对等结构(P2P)的分布式模型。所有节点地位相同,利于系统可用性和扩展性;任意节点的掉线会影响系统吞吐,但是不会中断服务;支持动态增加节点。

    5.3 gossip与故障检测

                gossip:Cassandra内部维护一个环形节点列表(Gossiper类)用于故障检测。gossiper的流程如下:

    (1)   gossiper 周期性运行,在环里面随机选择一个节点(假设为A)发起gossip会话,每轮发送三条消息。

    (2)   gossip发起者先向A发送一个Sync消息

    (3)   A收到消息后回复一条Ack1消息

    (4)   发起者收到Ack1后再向A发送Ack2消息。至此完成本轮gossip

    (是不是很像tcp三次握手?)

    一轮gossip能判断一个节点的存活状态,考虑到网络的不稳定性,在死和活之间引入中间值——嫌疑级别。

                具体gossip细节《Cassandra权威指南》并没有讲明白。

    5.4 逆商与读修复

                逆商是Cassandra的副本同步机制,用于保障不同节点上数据都更新到最新的版本。

                具体细节《Cassandra权威指南》没有讲明白

    5.5 commit log、memtable和SSTable

                简要介绍下写操作:

                先写commit log(写操作成功)——>

                写内存memtable(每个列族可能有多个memtable)——>

                memtable达到一定数量后,写入SSTable文件

    commit log有两阶段提交的意思,书翻译描述不清楚。

    以上写操作都是顺序进行的,性能很高;配合后续的压紧操作获得更好的读性能。

    5.6 提示移交

                提示移交:在某个节点因为网络、硬件等原因导致不可写入时,其他节点会把这个写入信息记录下来,等待该节点重新上线后把记录发给它。这使得Cassandra写操作永远可用。

    5.7 压紧

                压紧操作用于合并SSTable。键进行合并,列被组合,丢弃墓碑,创建新索引。

                压紧是后台操作。

    5.8 Bloom filter

                能判断一个元素一定不在集合中(真阴性),可能在一个集合中(假阳性)。

    大致原理,将一个元素映射到一个位数组,判断位数组的0/1值来确定元素在集合中的存在性。优势是内存占用少,访问速度远远大于磁盘扫描。

                比如,url白名单,快速判断一个url在不在一个超大超大的集合中(当hash算法内存不足的时候)。

    5.9 墓碑

                软删除,应用并不直接执行数据库的delete删除操作,而是使用update操作把某列值标记为“已删除”。

                Cassandra中,上述操作在删除的值上放置墓碑。那么,在执行压紧操的的时候,比墓碑更旧的数据都会被清除。

    5.10 分阶段事件驱动

                没太看明白

    5.11 管理与服务

                Cassandra守护进程

                存储服务

                消息服务

                提示移交管理器

  • 相关阅读:
    C++ Primer 学习笔记
    闷热的北京
    EasyUI实现购物车、菜单和窗口栏等最常用的用户界面功能.
    详细解读-this-关键字在全局、函数、对象、jQuery等中的基础用法!
    对于JavaScript原生的JS
    关于JavaScript原生的JS。工作接近一年,发现对于原生JS的基础内容总是不够掌握,特定抽出三个周的周末,结合本人的工作经验还有菜鸟教程及w3school的基础内容等整理了如下内容。对JS的常用知识进行概括!希望对大家能够有所帮助。
    最简单实用的JQuery实现banner图中的text打字动画效果!!!
    一路慢行的JavaScript之旅(add)!!!
    一路慢行的CSS之旅
    一路慢行的HTML5之旅!
  • 原文地址:https://www.cnblogs.com/x-x-736880382/p/11477480.html
Copyright © 2011-2022 走看看