令牌环算法

对于刚开始使用Cassandra的人来说,所有术语在开始时可能有点让人不知所措。 如果您有关系数据库方面的经验,则可能会熟悉“行”或“主键”之类的一些概念。 但是,其他看起来简单明了的术语通常会让人有些困惑,尤其是与学习Cassandra时看到的一些视觉效果搭配使用时。

例如,从DataStax OpsCenter管理工具中查看以下屏幕截图:

现在来回答这些问题:

  • 有多少枚令牌环
  • 有几个集群
  • 有多少个数据中心

向新用户介绍Cassandra时使用的这张幻灯片怎么样:

如果您想知道,是的,您的数据实际上就是该图中的“来到美国”(完全出于本意)。 现在回答这些相同的问题:

  • 有多少枚令牌环
  • 有几个集群
  • 有多少个数据中心

你回答两个对所有在这两张图片的问题? 如果您做到了,您将不会孤单,但您也不是正确的。 这是一个术语有点混乱的例子。 让我们遍历这些术语,从最后一个开始,然后逐步进行。

数据中心

这是大多数人在开始使用Cassandra之前所熟悉的术语,如果您对上述问题回答了两个 ,那么您不仅是正确的,而且很容易理解这个概念。 在计算世界中,我们倾向于将数据中心视为计算机所在的物理位置。 对于Cassandra中的数据中心来说也是如此,但是不一定必须如此。

在Cassandra中,数据中心只是节点的逻辑分组。 该分组可以基于节点的物理位置。 例如,我们可能有一个“美国东部”和“美国西部”数据中心。 但是它也可以基于物理位置以外的其他东西。 例如,我们可能会设置一个“事务”和“分析”数据中心来运行不同类型的工作负载,但这些数据中心的节点可能在物理上位于同一位置。

那么,Cassandra如何知道哪些节点属于哪个数据中心? 好吧,这超出了本文的讨论范围,但是简短的答案是Cassandra中的一个部件,称为Snitch。 如果您想进一步挖掘,DataStax Academy上对Snitch的解释非常不错。

在大多数情况下,当我们在OpsCenter或上面的幻灯片中查看Cassandra的可视化描述时,节点都是按数据中心分组显示的。

集群

如果您为这个问题回答了两个,我不会怪您。 毕竟, 群集被定义为“一组彼此靠近的事物或人”,并且在这两张图片中,可以肯定看起来好像有两组单独的节点彼此靠近。 但是正如我们刚刚确定的那样,大多数时候我们看到的图片就像我们看到的是按数据中心分组的节点一样。

在Cassandra中,集群指的是跨所有数据中心的所有节点,这些节点是对等的(即彼此知道)。 对于这两个映像,我们都有两个数据中心,它们之间正在发生复制。 因此,尽管有两个数据中心,但是在这两个图像中仅描绘了一个群集。

令牌环

这给我们留下了关于令牌环数量的问题。 我试图通过询问令牌环而不只是环来具体说明。 通常在Cassandra中,术语“环”(本身)与“集群”可互换使用,以指代所有数据中心中的所有节点。 但是,当我们说令牌环时,我们通常指的是Cassandra数据分发中的特定概念。

如果您一直在使用Cassandra,那么现在您知道在创建表时,您可以选择“主键”。 该主键的一部分(通常是第一列或有时是第一组列)称为分区键。 例如,看一下KillrVideo的users表 :

CREATE TABLE users (userid uuid,firstname text,lastname text,email text,created_date timestamp,PRIMARY KEY (userid)
);

在这里,分区键是userid列。 当我们将数据插入该表时,userid的值用于确定Cassandra中的哪些节点将实际存储数据。 选择主键很重要(如最近的一篇博客文章所强调 ),但这与令牌环有什么关系?

好吧,当Cassandra想知道将数据放置在哪里时,它将获取您的Partition Key值并通过一致的哈希函数运行它。 这种一致的哈希函数产生的哈希有时称为令牌。 在Cassandra中,群集中的节点拥有所有可能标记的范围(或存储桶)。

因此,例如,让我们假设我们有一个散列函数,可输出0-99之间的令牌。 这些标记在八节点群集中所有节点之间的分布可能看起来像这样:

现在这是一个真正简化的示例,因为可用的令牌范围很小。 在实际的Cassandra部署中,大多数人都坚持使用默认的Murmur3分区程序 ,该分区程序输出-2 63到2 63 – 1范围内的令牌,但是即使可用范围更大,原理也是相同的。

可用令牌的总范围及其在群集中的分布通常在Cassandra中称为令牌环。 令牌的范围分布在整个群集中 ,每个节点都拥有令牌环的一部分。 因此,即使我们将我们的8节点群集放在上面,并在两个数据中心之间对节点进行逻辑分组,仍然只有一个令牌环。

这真的很难缠住你的大脑,尤其是当您看到上面两个图片时。 在这些图片中,英语单词中肯定有两个“环”。 但是用Cassandra术语来说,即使节点被分组并显示为两个数据中心,也只有一个令牌环(如果我们将该术语与“集群”互换使用,则只有一个“环”)。

结论

如果您在开始使用Cassandra时遇到一些术语上的麻烦,希望这可以帮助您清除一些问题。 我强烈建议您在DataStax Academy上查阅DS201:Apache Cassandra的基础知识,以更深入地研究其中的许多概念。 复制(和复制策略)之类的东西都是建立在此基础之上的,因此理解这些概念对于成为Cassandra专家可能有很长的路要走。

翻译自: https://www.javacodegeeks.com/2016/04/one-token-ring-rule.html

令牌环算法

令牌环算法_一环(令牌)将它们全部统治相关推荐

  1. 约瑟夫环 java代码_约瑟夫环算法的Java实现代码

    相信大家都知道这是一个的算法问题,约瑟夫环的c语言实现是利用了指针链表的形式,java实现呢,我的这个是用了内部类. 算法描述:n个人围成一圈,每人有一个各不相同的编号,选择一个人作为起点,然后顺时针 ...

  2. 【算法】约瑟夫环原理及其公式

    问题描述 将n个人围成一个圈,从1开始依次数数,数到k或者k的倍数时,这个人出局,如此循环直到环中只剩一个人的时候这个人获胜 算法原理 参考文章最浅显易懂的约瑟夫环讲解_秃头哥编程-CSDN博客_约瑟 ...

  3. JS数据结构与算法_链表

    上一篇:JS数据结构与算法_栈&队列 下一篇:JS数据结构与算法_集合&字典 写在前面 说明:JS数据结构与算法 系列文章的代码和示例均可在此找到 上一篇博客发布以后,仅几天的时间竟然 ...

  4. 深度学习算法和机器学习算法_啊哈! 4种流行的机器学习算法的片刻

    深度学习算法和机器学习算法 Most people are either in two camps: 大多数人都在两个营地中: I don't understand these machine lea ...

  5. 算法_深度LSTM笔记[博]

    原创博客链接:算法_深度LSTM笔记 本文适合有一定基础同学的复习使用,不适合小白入门,入门参考本文参考文献第一篇 结构_静态综合图 结构_分步动图 进一步,向量化参数和引入问题 1, cell 的状 ...

  6. LeetCode_初级算法_数组

    LeetCode|初级算法_数组 题目如下: 1.1 从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间 ...

  7. 数据挖掘经典十大算法_条件熵、信息增益介绍

    数据挖掘经典算法_条件熵.信息增益介绍 一.条件熵 首先与信息熵进行类比,从信息熵的计算公式中我们知道它是考虑到该随机变量的所有可能取值,即所有可能发生事件所带来信息量的期望.由此顾名思义 条件熵的定 ...

  8. cb32a_c++_STL_算法_查找算法_(5)adjacent_find

    cb32a_c++_STL_算法_查找算法_(5)adjacent_find adjacent_find(b,e),b,begin(),e,end() adjacent_find(b,e,p),p-p ...

  9. Python_机器学习_算法_第4章_4.决策树算法

    Python_机器学习_算法_第4章_4.决策树算法 文章目录 Python_机器学习_算法_第4章_4.决策树算法 决策树算法 学习目标 4.1 决策树算法简介 学习目标 小结 4.2 决策树分类原 ...

  10. 典型的Top K算法_找出一个数组里面前K个最大数

    原文 典型的Top K算法_找出一个数组里面前K个最大数...或找出1亿个浮点数中最大的10000个...一个文本文件,找出前10个经常出现的词,但这次文件比较长,说是上亿行或十亿行,总之无法一次读入 ...

最新文章

  1. php中类和对象的操作
  2. java中的关键字static(静态变量)和final定义常量
  3. SAP ECM的相关设定(ECN)
  4. python【数据结构与算法】完全背包(附代码)
  5. Graylog2+mongdb+rsyslog中央日志服务器对syslog的web管理--转载
  6. SqlConnection就一定要关闭吗?
  7. 揭秘 | 大流量场景下发布如『丝般顺滑』背后的原因
  8. 点击关闭按钮时缩小到系统任务栏
  9. C语言编程规范--------2 注释
  10. [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Toolbar功能(四)
  11. 七牛服务器入门教程_教程:使用无服务器,StepFunction和StackStorm构建社区的入门应用程序…...
  12. stm32无源蜂鸣器定时器_使用STM32控制无源蜂鸣器发声播放音乐
  13. 后端程序员不得不会的 Nginx 转发匹配规则
  14. [.NET] 使用 .NET Framework 開發 ActiveX Control
  15. (转)DPDK内存管理 04 ---- rte_malloc内存管理
  16. linux中如何实时同步时间,linux实现时间同步有哪几种方法
  17. DW1820A/BCM94350ZAE/BCM94356ZEPA50DX插入的正确姿势
  18. Math工具的使用 abs,ceil floor round
  19. editplus里python技巧_editplus调试python
  20. 数据库设计之商品表分析2

热门文章

  1. 爬取中国天气网获取全国城市编码并存入mysql数据库
  2. 条形码的码制分类详解
  3. python下载付费文档教程-用Python批量爬取付费vip数据,竟然如此简单
  4. C++定时器和时间轮
  5. 小鲸云隔空充电设备如何解决你的手机充电烦恼?
  6. 数学建模案例【人口模型 】(马尔萨斯人口模型,Logistic模型)
  7. 51单片机c语言轻松入门,单片机的C语言轻松入门资料
  8. _beginthread
  9. C语言基础视频教程-欧阳坚-专题视频课程
  10. 10个 截屏工具 FastStone Capture9.3注册码