Cassandra介绍(一)

news2024/11/26 9:48:17

1.1. 概念 

Apache Cassandra 是高度可扩展的,高性能的分布式 NoSQL 数据库。 Cassandra 旨在处理许
多商品服务器上的大量数据,提供高可用性而无需担心单点故障。
Cassandra 具有能够处理大量数据的分布式架构。 数据放置在具有多个复制因子的不同机器上,
以获得高可用性,而无需担心单点故障。

1.2. 数据模型

Key Space (对应 SQL 数据库中的 database )
1. 一个 Key Space 中可包含若干个 CF,如同 SQL 数据库中一个 database 可包含多个 table
Key (对应 SQL 数据库中的主键)
2. 在 Cassandra 中,每一行数据记录是以 key/value 的形式存储的,其中 key 是唯一标识。
column (对应 SQL 数据库中的列)
3. Cassandra 中每个 key/value 对中的 value 又称为 column,它是一个三元组,即:name,
value 和 timestamp,其中 name 需要是唯一的。
super column (SQL 数据库不支持)
4. cassandra 允许 key/value 中的 value 是一个 map(key/value_list),即某个 column 有多个
子列。
Standard Column Family (相对应 SQL 数据库中的 table )
5. 每个 CF 由一系列 row 组成,每个 row 包含一个 key 以及其对应的若干 column。
Super Column Family (SQL 数据库不支持)
6. 每个 SCF 由一系列 row 组成,每个 row 包含一个 key 以及其对应的若干 super column。

1.3. Cassandra 一致 Hash 和虚拟节点

一致性 Hash (多米诺 down 机)
为每个节点分配一个 token,根据这个 token 值来决定节点在集群中的位置以及这个节点所存储
的数据范围。

虚拟节点( (down 机 机 多节点托管) )
由于这种方式会造成数据分布不均的问题,在 Cassandra1.2 以后采用了虚拟节点的思想:不需要
为每个节点分配 token,把圆环分成更多部分,让每个节点负责多个部分的数据,这样一个节点移
除后,它所负责的多个 token 会托管给多个节点处理,这种思想解决了数据分布不均的问题。

 如图所示,上面部分是标准一致性哈希,每个节点负责圆环中连续的一段,如果 Node2 突然
down 掉,Node2 负责的数据托管给 Node1,即 Node1 负责 EFAB 四段,如果 Node1 里面有
很多热点用户产生的数据导致 Node1 已经有点撑不住了,恰巧 B 也是热点用户产生的数据,这样
一来 Node1 可能会接着 down 机,Node1down 机,Node6 还 hold 住吗?
下面部分是虚拟节点实现,每个节点不再负责连续部分,且圆环被分为更多的部分。如果 Node2
突然 down 掉,Node2负责的数据不全是托管给Node1,而是托管给多个节点。而且也保持了一
致性哈希的特点。

1.4. Gossip 协议

Gossip 算法如其名,灵感来自办公室八卦,只要一个人八卦一下,在有限的时间内所有的人都
会知道该八卦的信息,这种方式也与病毒传播类似,因此 Gossip 有众多的别名“闲话算法”、
“疫情传播算法”、“病毒感染算法”、“谣言传播算法”。 Gossip 的特点:在一个有界网络中,
每个节点都随机地与其他节点通信,经过一番杂乱无章的通信,最终所有节点的状态都会达成一
致。因为 Gossip 不要求节点知道所有其他节点,因此又具有去中心化的特点,节点之间完全对等,不需要任何的中心节点。实际上 Gossip 可以用于众多能接受“最终一致性”的领域:失败检测、路由同步、Pub/Sub、动态负载均衡。

Gossip 节点的通信方式及收敛性
Gossip 两个节点( A 、 B )之间存在三种通信方式 ( push 、 pull 、 push&pull )
1. push: A 节点将数据(key,value,version)及对应的版本号推送给 B 节点,B 节点更新 A 中比自
己新的数据。
2. pull:A 仅将数据 key,version 推送给 B,B 将本地比 A 新的数据(Key,value,version)推送
给 A,A 更新本地。
3. push/pull:与 pull 类似,只是多了一步,A 再将本地比 B 新的数据推送给 B,B 更新本地。
如果把两个节点数据同步一次定义为一个周期,则在一个周期内,push 需通信 1 次,pull 需 2 次,
push/pull 则需 3 次,从效果上来讲,push/pull 最好,理论上一个周期内可以使两个节点完全一
致。直观上也感觉,push/pull 的收敛速度是最快的。
gossip 的协议 和 seed list (防止集群分列)
cassandra 使用称为 gossip 的协议来发现加入 C 集群中的其他节点的位置和状态信息。gossip 进
程每秒都在进行,并与至多三个节点交换状态信息。节点交换他们自己和所知道的信息,于是所
有的节点很快就能学习到整个集群中的其他节点的信息。gossip 信息有一个相关的版本号,于是
在一次gossip信息交换中,旧的信息会被新的信息覆盖重写。要阻止分区进行gossip交流,那么
在集群中的所有节点中使用相同的 seed list,种子节点的指定除了启动起 gossip 进程外,没有其
他的目的。种子节点不是一个单点故障,他们在集群操作中也没有其他的特殊目的,除了引导节
点以外

1.5. 数据复制 

Partitioners( (计算 计算 primary key token 的 的 hash 函数 函数) )
在 Cassandra 中,table 的每行由唯一的 primarykey 标识,partitioner 实际上为一 hash 函数用
以计算 primary key 的 token。Cassandra 依据这个 token 值在集群中放置对应的行
两种可用的复制策略: 两种可用的复制策略:
SimpleStrategy : 仅用于单数据中心,
将第一个 replica 放在由 partitioner 确定的节点中,其余的 replicas 放在上述节点顺时针方向的
后续节点中。
NetworkTopologyStrategy :可用于较复杂的多数据中心。
可以指定在每个数据中心分别存储多少份 replicas。
复制策略在创建 keyspace 时指定,如
CREATE KEYSPACE Excelsior WITH REPLICATION = { 'class' :
'SimpleStrategy','replication_factor' : 3 };
CREATE KEYSPACE Excalibur WITH REPLICATION = {'class' :'NetworkTopologyStrategy',
'dc1' : 3, 'dc2' : 2};

1.6. 数据 写请求和协调者

协调者 协调者(coordinator)
协调者(coordinator)将 write 请求发送到拥有对应 row 的所有 replica 节点,只要节点可用便获取
并执行写请求。写一致性级别(write consistency level)确定要有多少个 replica 节点必须返回成功
的确认信息。成功意味着数据被正确写入了 commit log 和 memtable。

1.7. 数据读请求和后台修复

1. 协调者首先与一致性级别确定的所有 replica 联系,被联系的节点返回请求的数据。
2. 若多个节点被联系,则来自各 replica 的 row 会在内存中作比较,若不一致,则协调者使用含
最新数据的 replica 向 client 返回结果。那么比较操作过程中只需要传递时间戳就可以,因为要
比较的只是哪个副本数据是最新的。
3. 协调者在后台联系和比较来自其余拥有对应 row 的 replica 的数据,若不一致,会向过时的
replica 发写请求用最新的数据进行更新 read repair。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1175865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

学习c++的第十三天

目录 文件和流 打开文件 关闭文件 写入文件 读取文件 读取 & 写入实例 文件位置指针 异常处理 扩展知识 抛出异常 标准的异常 定义新的异常 文件和流 到目前为止,我们已经使用了 iostream 标准库,它提供了 cin 和 cout 方法分别用于从标…

一文搞懂优先队列及相关算法

大家好,我是 方圆。优先队列在 Java 中的定义是 PriorityQueue,它基于 二叉堆 数据结构实现,其中的元素并不是全部有序,但它能够支持高效地 获取或删除最值元素。 二叉堆是一种特定条件的 完全二叉树,树的根节点为堆顶…

vivo 网络端口安全建设技术实践

作者:vivo 互联网安全团队 - Peng Qiankun 随着互联网业务的快速发展,网络攻击的频率和威胁性也在不断增加,端口是应用通信中的门户,它是数据进出应用的必经之路,因此端口安全也逐渐成为了企业内网的重要防线之一&…

公司团建小游戏开发小程序游戏互动小游戏

在现代工作环境中,团队合作和员工士气是取得成功的关键因素。为了增强团队合作、提升员工士气,并促进员工之间的互动,公司团建小游戏成为了一种备受欢迎的方式。本文将探讨如何开发公司团建小游戏,以达到这些目标。 1. 游戏概念 …

2023下半年软考信息系统项目管理师上午真题及答案

1.( B )不属于项目建议书的核心内容。 A.项目的必要性 B.初步可行性研究 C.项目的市场预测 D.项目建设必需的条件 解析: 2.在监控项目工作过程中,当遇到变更请求时,为使项目工作绩效重新与项目管理计划致,而进行的有目的的活动…

【双指针+简化去重操作】Leetcode 15 三数之和

【双指针简化操作】Leetcode 15 三数之和 解法1 解法1 新建一个嵌套列表&#xff1a;List<List<Integer>> result new List<>(); 初始化一个ArrayList并直接赋值&#xff1a;ArrayList<Integer> result new ArrayList<>(Arrays.asList(1, 2…

又来安利了,这个Itbuilder在线数据库设计工具用起来太顺手了

对于测试、开发、DBA、运维来说&#xff0c;数据库是再熟悉不过了。 我们都知道如今的数据是多么复杂和难以管理&#xff0c;但幸运的是有数据库设计工具可以帮助我们&#xff0c;可以在市场上找到很多的数据库设计工具&#xff0c;包括itbuilder。这些数据库设计工具可以帮助我…

如何选择SVM中最佳的【核函数】

参数“kernel"在sklearn中可选以下几种 选项&#xff1a; 接下来我们 就通过一个例子&#xff0c;来探索一下不同数据集上核函数的表现。我们现在有一系列线性或非线性可分的数据&#xff0c;我们希望通过绘制SVC在不同核函数下的决策边界并计算SVC在不同核函数下分类准确…

如何对ppt文件设置修改权限?

PPT文件会应用在会议、演讲、课件等工作生活中&#xff0c;当我们制作好了PPT之后&#xff0c;保护内容防止在演示时出错是很重要的&#xff0c;那么如何将PPT文件设置成禁止修改模式呢&#xff1f;今天分享几个方法给大家。 方法一 将PPT文件直接保存或者另存为一份文件&…

【Effective Modern C++】条款2:理解auto类型推导

条款2&#xff1a;理解auto类型推导 条款1中&#xff0c;模板类型推导的函数模板形如&#xff1a; template<typename T> void f(ParamType param);当变量采用auto声明时&#xff0c;auto扮演了模板中的T这个角色&#xff0c;而变量的类型扮演的是ParamType的角色。 条…

如何提高CRM系统的使用率?

​ CRM客户管理系统采购以后不投入使用&#xff0c;或者用了却用不好&#xff0c;都是极大的浪费。在知道CRM系统使用率低的原因之后&#xff0c;就要通过有效的方法提升CRM使用率。下面整理了六个方法&#xff0c;告诉您如何提高CRM系统的使用率。 有人演奏不出优美的曲子&a…

本地如何安装多个node版本

使用nvm 1官网下载 Releases coreybutler/nvm-windows GitHub 2.安装完 nvm -v检查是否按照成功 三、nvm的使用 安装完毕后&#xff0c;找到安装的路径&#xff0c;一些简单配置&#xff0c;打开setting.txt (是下载完毕之后自动帮你生成npm 下载node包之后不用重复安装…

【23真题】满分!最高150分!评级A+!

今天分享的是23年西南交通大学924的信号与系统试题及解析。这套卷子是回忆版&#xff0c;我已经尽力去还原了&#xff0c;全网仅此一份。如果有疏漏的地方&#xff0c;欢迎大家和我反馈。 本套试卷难度分析&#xff1a;平均分在124分&#xff0c;最高分有满分150分&#xff01…

高清Logo素材无忧:这5个网站解决所有问题!

今天给大家分享几个素材网站&#xff0c;基本上可以下载各大企业的 Logo&#xff0c;而且还是矢量格式哦~ 即时设计 即时设计是一款国产免费的 Logo 在线设计制作工具&#xff0c;浏览器内打开即用&#xff0c;对于使用系统没有任何限制。在即时设计&#xff0c;你可以从 0 到…

【数智化案例展】正官庄——全球商业数智化实践案例

‍ Marketingforce案例 本项目案例由Marketingforce投递并参与数据猿与上海大数据联盟联合推出的《2023中国数智化转型升级创新服务企业》榜单/奖项”评选。 大数据产业创新服务媒体 ——聚焦数据 改变商业 电商行业持续发展&#xff0c;而对于品牌来说&#xff0c;面对多个分…

陈海波:OpenHarmony技术领先,产学研深度协同,生态蓬勃发展

11月4日&#xff0c;以“技术筑生态&#xff0c;智联赢未来”为主题的第二届OpenHarmony技术大会在北京隆重举办。本次大会由OpenAtom OpenHarmony&#xff08;简称“OpenHarmony"&#xff09;项目群技术指导委员会&#xff08;TSC&#xff09;主办&#xff0c;由华为技术…

第十一章 Python 常用标准库

系列文章目录 第一章 Python 基础知识 第二章 python 字符串处理 第三章 python 数据类型 第四章 python 运算符与流程控制 第五章 python 文件操作 第六章 python 函数 第七章 python 常用内建函数 第八章 python 类(面向对象编程) 第九章 python 异常处理 第十章 python 自定…

解决Lightroom Classic无法使用修改照片的问题

Lightroom Classic是一款广泛使用的照片编辑软件&#xff0c;但在使用过程中&#xff0c;可能会遇到无法修改照片的问题。修改照片这个模块无法使用&#xff0c;功能按钮呈现灰色&#xff0c;无法点击。本文将介绍几种常见的解决方法&#xff0c;帮助您快速解决Lightroom无法使…

Banana Pi BPI-W3 RK3588平台驱动调试篇 [ PCIE篇一 ] - PCIE的开发指南

RK3588平台驱动调试篇 [ PCIE篇 ] - PCIE的开发指南 1、PCIE接口概述 PCIe&#xff08;Peripheral Component Interconnect Express&#xff09;是一种用于连接计算机内部组件的高速接口标准。以下是关于PCIe接口的简要介绍&#xff1a; 高速传输&#xff1a; PCIe接口提供了…

springboot 文件上传 阿里云OSS

一、介绍 文件上传&#xff0c;是指将本地图片、视频、音频等文件上传到服务器上&#xff0c;可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛&#xff0c;我们经常发抖音、发朋友圈都用到了文件上传功能。 实现文件上传服务&#xff0c;需要有存储的支持&…