广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Cassandra教程(3)---- 架
  • 397
分享到

Cassandra教程(3)---- 架

教程Cassandra 2023-01-31 03:01:05 397人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

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

  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.关键结构

    存储数据的地方,是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。



--结束END--

本文标题: Cassandra教程(3)---- 架

本文链接: https://www.lsjlt.com/news/187683.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Cassandra教程(3)---- 架
    架构简介    Cassandra是设计用于跨多节点方式处理大数据,它没有单点故障;这种架构设计之初就考虑到了系统和硬件故障。Cassandra地址发生失效问题,通过采用跨节点的分布式系统,将数据分布在集群中的所有节点上解决。每个节点使用P...
    99+
    2023-01-31
    教程 Cassandra
  • Cassandra基本介绍(3) - 架
        通过上面2节,大家了解到了RDBMS遇到的问题,以及对Cassandra有了基本的了解。下面将介绍下Cassandra内部简单结构。    通过本章,大家应该了解到:Cassandra Write流程什么是SSTableCassan...
    99+
    2023-01-31
    Cassandra
  • Cassandra基本介绍(3) - 架构简介
        通过上面2节,大家了解到了RDBMS遇到的问题,以及对Cassandra有了基本的了解。下面将介绍下Cassandra内部简单结构。  &...
    99+
    2022-10-18
  • Redis教程(3)
    2)hashRedis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象。相较于将对象的每个字段存成单个string类型。将一个对象存储在hash类型中会占...
    99+
    2023-01-31
    教程 Redis
  • GNS-3教程
    [url]www.netemu.cn[/url]网络模拟器致力于网络模拟器的应用。本站同时发布GNS-3 的汉化版本日期:07.06.09汉化人员:错字小王子,小漏整理:小漏时间仓促如有错误请发邮件[email]netemu@gmail.c...
    99+
    2023-01-31
    教程 GNS
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考...
    99+
    2017-08-12
    Python 3 教程
  • Xamarin图表开发基础教程(3)OxyPlot框架
     Xamarin图表开发基础教程(3)OxyPlot框架Xamarin.Android中使用OxyPlot框架在Xamarin.Android平台上实现图表显示需要完成以下的步骤:1.添加OxyPlot.Xamarin.Andro...
    99+
    2023-06-04
  • adminLTE 教程 -3 box
    adminLTE的box算是它样式中最主要的部分,下面的连接是演示地址,这里面基本上列举出来所有的样式和插件,目的就是希望用户可以在这一个网站中,全面的了解adminLTE。并且,更重要的是,我们可以直接在F12的调试窗口,选中我们想要的样...
    99+
    2023-01-31
    教程 adminLTE box
  • Active Directory教程3
    Active Directory 的早期阶段,企业常常在用户可能登录的每个站点均部署域控制器。例如,银行通常在每个支行都安装 DC。其中的逻辑是每个支行的用户都能登录并访问本地网络资源,即使 WAN 失效也能如此。本文是《Active Di...
    99+
    2023-01-31
    教程 Active Directory
  • linux入门教程(3)
    (文:flynng)  3.4 进程管理  Linux是一个多用户多任务的操作系统。多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。  在Linux系统...
    99+
    2023-01-31
    入门教程 linux
  • springmvc经典教程(3)
    springmvc史上最好教程(2)springmvc史上最好教程(1)1.1 需求使用springmvc+mybatis架构实现商品信息维护。  1.2 商品修改1.2.1 dao使用逆向工程自动生成的代码:ItemsMapper.Jav...
    99+
    2023-01-31
    教程 经典 springmvc
  • JavaFX与Jfoenix教程3
    1.升级上一节的Hello World,上一节的样式都是通过代码来实现,本章将通过CSS实现样式编写,引用CSS样式分为行内CSS样式和外部CSS样式,本次教程使用行内CSS样式来实现,实现代码如下package com.dengyunsh...
    99+
    2023-01-31
    教程 JavaFX Jfoenix
  • ***测试实践教程3
    特别声明:本文仅供在校大学生个人学习信息安全知识,不可用于其他用途。转载本文须声明来源,并引述本声明。网络数据分析利器——Wireshark 1我们从Wireshark的安装开始讲起……1.0 安装WiresharkWireshark提供了...
    99+
    2023-01-31
    测试 教程
  • 微信开发教程(3)
    因为微信现在可以开通自定义菜单,很多人都不知道如何创建自定义菜单。我今天来分享一下,自定菜单如何创建! 下面直接看代码:<php //根据申请到的appid要获取access_toke值,https://api.weixin...
    99+
    2023-01-31
    教程
  • Python 3 | 菜鸟教程 (一)
    目录 一、Python3 简介 二、Python 发展历史 三、Python 特点 (一)易于学习 (二)易于阅读 (三)易于维护 (四)一个广泛的标准库 (五)互动模式 (六)可移植 (七)可扩展 (八)数据库 (九)GUI编程 (十)可...
    99+
    2023-08-31
    python 开发语言 编辑器 ide linux
  • NumPy 超详细教程(3):ndarr
     系列文章地址 NumPy 最详细教程(1):NumPy 数组 NumPy 超详细教程(2):数据类型 NumPy 超详细教程(3):ndarray 的内部机理及高级迭代   ndarray 对象的内部机理 在前面的内容中,我们已经...
    99+
    2023-01-31
    教程 详细 NumPy
  • php面向对象教程3
    5.如何实例化对象我们上面说过面向对象程序的单位就是对象,但对象又是通过类的实例化出来的,既然我们类会声明了,下一步就是实例化对象了。当定义好类后,我们使用new 关键字来生成一个对象。$对象名称= new 类名称();<phpcla...
    99+
    2023-01-31
    面向对象 教程 php
  • unix基础教程3 通信
    1、内部通信系统 2、外部通信系统 3、即时通讯 1)交谈命令write(须在线) write username [terminal] $write npp 终端号 (多人同时登录时)...
    99+
    2023-01-31
    基础教程 通信 unix
  • Eclipse安装教程(2023年,3月)
    一、Eclipse下载 进入eclipse官网 官网地址:https://www.eclipse.org/ 点击【Download】 ,进入eclispe下载页面,点击【Download Packages】下载压缩包。(eclipse还...
    99+
    2023-08-31
    eclipse java ide
  • django开发傻瓜教程-3-celer
    Ref: https://www.jianshu.com/p/6f8576a37a3e https://blog.csdn.net/Demo_3/article/details/78119951 https://blog.csdn.net...
    99+
    2023-01-30
    傻瓜 教程 django
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作