我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Cassandra教程(3)---- 架

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Cassandra教程(3)---- 架

  1. 架构简介

    Cassandra是设计用于跨多节点方式处理大数据,它没有单点故障;这种架构设计之初就考虑到了系统和硬件故障。Cassandra地址发生失效问题,通过采用跨节点的分布式系统,将数据分布在集群中的所有节点上解决。每个节点使用P2P的gossip协议来改变集群中的自己和其他节点的状态信息。写操作按顺序记录在每个节点的commit log上,以确保数据持久化。数据写入到一个in-memory结构,叫做memtable,类似于一个write-back缓存。每当memtable满了时,数据就写入到硬盘SSTable数据文件中。所有的写都自动分区和复制。Cassandra定期的使用compaction压缩SSTable。丢弃标记为tombstone的过期数据。为了保证集群数据的一致性,可以采用不同的repair机制。

Cassandra是一个分区行存储数据库,行被保存在tables且必须有一个primary key。Cassandra的架构允许任何授权用户连接到任意数据中心的任意节点,使用CQL语言访问数据。为了使用简单,CQL使用类SQL语法。开发人员通过使用cqlsh,DevCenter和应用驱动来访问CQL。典型的,一个集群有一个keyspace对于每个应用,包含了很多不同的tables,类似于schema。

    客户端的读和写可以被发送到集群中的任意节点。当一个客户端连接到一个节点,那个节点服务器作为特殊的客户端操作的coordinator。Coordinator作为客户端应用和节点之间的代理。Coordinator基于集群的配置,决定了请求被发送到哪个节点上。


  2.关键结构

  • Node

    存储数据的地方,是Cassandra的基础组件。

  • Data center

相关节点的集合。Data center可以是物理的datacenter或者是虚拟的data center。不同的workloads应该使用不同的data center。使用不同的data center可以预防Cassandra事物不被其他的workloads影响,保证请求发送到低延迟的data center。依赖于复制因子,数据可以被写入到多个data center。Data centers不能跨物理位置。

  • Cluter

    一个集群包含一个或多个data centers。它可以跨物理位置。

  • Commit log

    所有的数据第一次都被写入到commit log作持久化。之后数据被flush到SSTables。

  • SStable

A sorted stringtable(SSTable)是一个不可变的数据文件,Cassandra将memtables定期的写入其中。


  3.Cassandra关键组件和配置

  • Gossip

        Gossip是一中P2P的通讯协议,Cassandra用它来发现并分享节点间的地址和状态信息。Gossip的信息也被持久化到本地节点,当有节点启动的时候,这些信息就被立即使用。

  • Partitioner

Partitioner决定了集群节点的数据分布。基本上,partitioner是一个hash函数,计算partition key的token值。每行数据通过partition key进行唯一识别的,通过token值分布在集群。Murmur3Partitioner是新的Cassandra集群的缺省的分区策略,大部分案例都使用这个选项。

你必须设定partitioner,给每个节点分配一个num_tokens值。分配tokens的数据取决于系统的hardwarecapabilities。如果没有使用虚节点(vnodes),使用initial_token设置。

  • Replication factor(复制因子)

集群中副本的总数量。Replication factor为1则每行有1个副本。Replication factor为2则每行有2个副本,每个副本都在不同的节点上。所有的副本都是同等重要的,没有主副本之说。通常情况下应该设置replication factor大于1,但不超过集群节点数量。

  • Replica placement strategy(副本存储策略)

Cassandra存储数据副本在多个节点上,确保了可靠性和容错性。replication strategy决定了哪个节点存放副本。对于大部分部署,建议使用NetworkTopologyStrategy,因为它很容易扩展到多个datacenters。

当你创建keyspace时,你必须指定replica placement strategy和Replication factor。

  • Snitch

Snitch决定了节点属于哪个数据中心和机架。Snitch通知Cassandra网络拓扑以便请求被有效的路由,并且允许Cassandra在服务器增加到数据中心或机架的时候能够分发副本。

创建集群是必须指定snitch。所有的 snitches使用动态snitchlayer,监控性能和选择最佳的副本读取。它是缺省配置并且建议使用它在大部分部署中。在cassandra.yaml配置文件中配置动态snitch阀值。

缺省的SimpleSnitch无法识别数据中心或机架信息。即使用它作为但data center部署。GossipingPropertyFileSnitch建议在生产环境中使用。它定义了节点的data center,使用gossip传播信息到其他节点。

  • cassandra.yaml配置文件

这个是配置集群初始化属性、表的缓存参数、调优和资源利用率属性、超时设置、客户端连接、备份和安全的主要配置文件。

默认情况下,节点用于存储数据的位置配置在cassandra.yaml里面。

在生产环境下,可以把commitlog-directory和data_file_directories放到不同的磁盘驱动器。

  • System keyspace table properties

你可以设置存储配置属性在每一个keyspace或每一个table,基于编程方式或使用客户端应用,比如CQL。



免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Cassandra教程(3)---- 架

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Cassandra教程(3)---- 架

架构简介    Cassandra是设计用于跨多节点方式处理大数据,它没有单点故障;这种架构设计之初就考虑到了系统和硬件故障。Cassandra地址发生失效问题,通过采用跨节点的分布式系统,将数据分布在集群中的所有节点上解决。每个节点使用P
2023-01-31

Cassandra基本介绍(3) - 架

通过上面2节,大家了解到了RDBMS遇到的问题,以及对Cassandra有了基本的了解。下面将介绍下Cassandra内部简单结构。    通过本章,大家应该了解到:Cassandra Write流程什么是SSTableCassandra
2023-01-31

Redis教程(3)

2)hashRedis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象。相较于将对象的每个字段存成单个string类型。将一个对象存储在hash类型中会占
2023-01-31

Python 3 教程

Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
Python 3 教程
2017-08-12

GNS-3教程

[url]www.netemu.cn[/url]网络模拟器致力于网络模拟器的应用。本站同时发布GNS-3 的汉化版本日期:07.06.09汉化人员:错字小王子,小漏整理:小漏时间仓促如有错误请发邮件[email]netemu@gmail.c
2023-01-31

Xamarin图表开发基础教程(3)OxyPlot框架

Xamarin图表开发基础教程(3)OxyPlot框架Xamarin.Android中使用OxyPlot框架在Xamarin.Android平台上实现图表显示需要完成以下的步骤:1.添加OxyPlot.Xamarin.Android组件打
2023-06-04

adminLTE 教程 -3 box

adminLTE的box算是它样式中最主要的部分,下面的连接是演示地址,这里面基本上列举出来所有的样式和插件,目的就是希望用户可以在这一个网站中,全面的了解adminLTE。并且,更重要的是,我们可以直接在F12的调试窗口,选中我们想要的样
2023-01-31

Active Directory教程3

Active Directory 的早期阶段,企业常常在用户可能登录的每个站点均部署域控制器。例如,银行通常在每个支行都安装 DC。其中的逻辑是每个支行的用户都能登录并访问本地网络资源,即使 WAN 失效也能如此。本文是《Active Di
2023-01-31

springmvc经典教程(3)

springmvc史上最好教程(2)springmvc史上最好教程(1)1.1 需求使用springmvc+mybatis架构实现商品信息维护。  1.2 商品修改1.2.1 dao使用逆向工程自动生成的代码:ItemsMapper.Jav
2023-01-31

linux入门教程(3)

(文:flynng)  3.4 进程管理  Linux是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。  在Linux系统
2023-01-31

JavaFX与Jfoenix教程3

1.升级上一节的Hello World,上一节的样式都是通过代码来实现,本章将通过CSS实现样式编写,引用CSS样式分为行内CSS样式和外部CSS样式,本次教程使用行内CSS样式来实现,实现代码如下package com.dengyunsh
2023-01-31

***测试实践教程3

特别声明:本文仅供在校大学生个人学习信息安全知识,不可用于其他用途。转载本文须声明来源,并引述本声明。网络数据分析利器——Wireshark 1我们从Wireshark的安装开始讲起……1.0 安装WiresharkWireshark提供了
2023-01-31

微信开发教程(3)

因为微信现在可以开通自定义菜单,很多人都不知道如何创建自定义菜单。我今天来分享一下,自定菜单如何创建! 下面直接看代码:
2023-01-31

unix基础教程3 通信

1、内部通信系统2、外部通信系统3、即时通讯1)交谈命令write(须在线)write username [terminal]$write npp 终端号 (多人同时登录时)$write npp ...ctrl+d (结束)消息发送结束用o
2023-01-31

php面向对象教程3

5.如何实例化对象我们上面说过面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们类会声明了,下一步就是实例化对象了。当定义好类后,我们使用new 关键字来生成一个对象。$对象名称= new 类名称();
2023-01-31

NumPy 超详细教程(3):ndarr

系列文章地址NumPy 最详细教程(1):NumPy 数组NumPy 超详细教程(2):数据类型NumPy 超详细教程(3):ndarray 的内部机理及高级迭代 ndarray 对象的内部机理在前面的内容中,我们已经详细讲述了 ndarr
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录