系统架构:

Cassandra 是 一 套 开 源 分 布 式 No -SQL 数据库系统, 基于一致性哈希算法的 P2P 环形结构。 这种结构 各节点功能完全相 同, 可灵活添加节点来完成系 统的扩充或删除节点, 且无需大规模转移数据, 同 时彻底避免系 统因 单点故障

导致的不稳定性; 每个节点通过 Gossip 机制进行消息同步; 每 个 数据 项 都 会 被 复 制 到 N 个节 点( N 是通过参数配置的副本因 子), 系 统利 用 数据

的复制机将存储在各节点上的数据复制到其他节点上, 实现了数据的高度可获得性与安全性。

数据模型

Cassandra 使用 宽 列 存 储 模 型, 每 行 数 据 记录是以 Key - Value 形式进行存储, 其中 Key为 唯一标识。 每 个Key- Value 其 中 的 Value 也 称 为Column, 作 为 一 个 三 元 组, 包 含 有

Column Name 、 Column Value 与 timestamp ; 每 个 CF 由一个 Key及其对应的若干个 Column 标识组成。一个

keyspace 包含若干 个 CF , 类似关系 型数据库中一个

database 可有 多 个table 。

下 图 为 一 个Column 型数据模型。

CPA理论:

NoSQL 典 型 遵 循 由 Eric Brewer 提 出 的CAP 理论  , 依据此理论, 在一个大规模的分布式数据系统中, 有三个需求是彼此循环依赖的, 一致性( consistency ) 、 可 用 性 ( availability ) 、 分 区 耐受性( partition tolerance ) 。

一致性: 对所有数据库客户 端 使 用 同 样 查 询 都 可 得 到 相 同 的 数 据;

可用性: 所 有 数 据 库 客 户 端 都 可 读 写 数 据;

分区耐受性: 数 据 库 分 散 到 多 个 服 务 器 上, 即使发生 网 络 故 障, 仍 可 提 供 服 务。

CAP 理 论 可简单描述 为 :

一 个 分 布 式 系 统 不 能 同 时 满 足 以上三个 特 性, 最 多 只 能 同 时 满 足 两 个。

Cassandra 主要支持 可 用 性 和 分 区 耐 受 性。

在 Cassandra 中 , 数据 具 备 最 终 一 致 性, 集 群 整 体 的 完 全

可用 性。

存储机制

Cassandra 依赖本地的文件系统通过内存与磁盘的双重存储机制来保证数 据的持久性 。

Cassandra 有三 个重 要 的 数 据 结 构, 记录 于 内 存

的 Memtable , 保 存 在 磁 盘 中 的 Commit Log和

SSTable 。

Memtable 记 录 最 近 的 修 改, 而SSTable 记录着数据库 所承载的 绝大部分数据。通常 情 况 下, 一 个 Cassandra 表 会 对 应 着 一 个

Memtable 和多 个SSTable 。

Cassandra 接收到 客户端发送来的数据, 首先将写操作记录到 位于磁

盘的 CommitLog 中; 上述操作成功 后, 更新位于内存中 的 Memtable 数 据 结 构。 持 续 的 写 入 数据, 使得 Memtable 逐渐增长, 当 其数据量到 达某个阈 值时, Cassandra 的数据迁移被触发, 一 方面将

Memtable 刷 写 到 本 地 磁 盘 上 成 为 永 久 的SSTable , 另一方面将 CommitLog 中 的 写 入记录移除。 对于读操作, 客 户 端 先 查 询

Memtable 中的数据, 若无法获取所需信息, 则 检索本地磁盘。

Cassandra 会定期执行压紧compact 操作, 将同一条数据不同的版本进行合并, 过时数据也会在此过程中被删除; 分层数据压缩, 有效减少数据体积

及磁盘 I / O 。

系统设置(集群)

针对实时气象数据存储系统, 用户对该系统读取的性能需求远远高于写入数据。 通过对副本数进行合理设置, 可分散读取压力 。 对于5 节点集群, 将副本数设置为 3 ;

Row 分区 模式:

采用自动分区方式, 使不同的 Row Key 均匀分布在各节点上, 有利于数据读取压力的分散。

Cassandra 表设计

作为典型的非结构化数据,气象数据可以由多维索引 来确定一个唯一的数据。

业务用户常见的操作包括“最新数据”“左右翻页”“上下翻页”等。

数据表

根据不同数据类型建立相应数据表, 用于存储数据内容, 包括:

ECMWFHR(高分辨率数值预报产品 )、

SATELLITE ( 卫 星 资料)、

UPPERAIR (高空站点资料)、

SINGLERADAR (雷达资料) 等。

以“ T639 ”为 例 说明 数据表结构(表 1 )。

建表 语 句: CREATE TABLE "T639 "

( "dataPath " text , column1  text ,

value blob , PRIMARY KEY (" dataPath " ,

column1 ) ) ;

层次表

用于存储所有模式或实况的层次信息, 表名为level ; 用 户 在 客户 端进行上下翻页操作, 从level 表中获取当前层次的上一层或下一层信息; 利用层次表与数据表, 可检索到不同层次的数据(表2 )。

建表语 句: CREATE TABLE level (

"dataPath " text , column1 int , value int , PRIMARY KEY (" dataPath " , column1 )) ;

最新时刻表

用于存储各类数据的最新时刻信息, 表名 为latestdatatime 。 利 用 最新时刻表, 用户能通过客户端快速查找到最新数据文件名。 用户根据完整索引 (文件路径与最新数据文件名), 例: T639 / WIND / 500 / 17030108. 000 , 即可在“数据表”中获取到对应数据(表 3 )。

建表语句: CREATE TABLE latestdatatime

( " dataPath " text , column1  text , value text ,PRIMARY KEY (" dataPath " , column1 )) ;

存储系统性能测试

测试环境

选用5台相同配置的服务器用来搭建分布式存储系统。 服 务 器 操作 系 统 为 Red Hat Enter -prise Linux Server release 7. 1 , 处理器参数为Intel ( R ) Xeon ( R ) CPU E5 - 2620 v2 @ 2. 10GHz , 主频为2. 1 GHz ; 内 存大小为 256 GB ;6 块4TB SATA 硬盘; 服务器间通过万兆光纤连接。Cassandra 数据库版本为2. 2. 5 。

高可用性测试

由 5 个节点所组成分布式存储系统, 其结构上具有如下特点。

( 1 )服务器双网卡绑定, 即将两个物理网卡虚拟成一个逻辑网卡; 提升服务器之间的传输带宽,实现网卡冗余。

( 2 )用于集群内部数据交换的两台万兆光纤交换机, 采取级联方式, 可互为备份。

( 3 ) 6 块SATA 硬盘, 其中 2 块做 RAID1, 安装操作 系 统 及 软 件; 另 外 4 块 4TB 用 作 两 个RAID0 , 用于存储数据。

( 4 )服务器集群为环形结构, 没有 master 节点, 各节点功能完全一样。

按照表4中内容, 对系统的基础设施层(包括网络设备、存储设备等)、 软件层(数据库) 进行测试, 来验证系统的高可用 性; 从表中结论可知, 系统中用于内部数据交换的光纤或网卡、交换机及任一 Cassandra 服务器故障, 均不影响 MICAPS4客户端调取数据。

读取性能测试

通过读取数据的脚本文件(可获取数据字节数信息, 表5中 ECMWF _ HR / TMP / 100 目 录下数 据 字 节 数 为 132642 字 节, SATELLITE /

FY2E / L1 / IR3 / EQUAL 下数据字节数为554944字节,

T639 / WIND / 100 下数据字节数为1449052字节), 模拟单用户及50 用 户 、 100 用 户 客户 端对同一类型数据进行读取, 共分 3 组, 即对三种不同类型的数据进行测试, 测试性能见表5 , 注意测试结果包含网络传输时间。

从数据读取的测试结果可以看出 :

( 1 )50 用户并发和100 用 户 并发 客户 端 同 时 对 同 一 类 型数据进行 读 取 的 时 间 与 单 用 户 读 取 时 间 相 当 。以 T639 / WIND/100 为 例, 50 用 户 并 发 和 100用 户 并发与单用 户 读取相 关数据 所 花 费 的 平 均时间 均在20 ms 左右。

( 2 ) 在100 用 户 并发情况下, 从数据库 中 调 取数据 所消 耗 的 时 间 均 以 ms量级为 单 位 ( 包 含 网 络 传 输 时 间 ) , 时 间 远 远 小于在samba 服 务 器 上 读 取 数 据 的 时 间 。

( 3) 数据读取时 间 和 单 个 数 据 的 字 节 数 近 似 成 正 比,即单个数 据 文 件 字 节 数 越 大, 读 取 数 据 所 花 费的时间 则 越长。

结语

利用 Cassandra 分布式数据库搭建的存储环境, 提高了实时气象数据存储效率与检索速度, 通过统一的数据平台, 实现了运维人员对该系统“零”维护。 通过在实际业务环境中进行测试, 验证了该分布式数据环境的高可用性; 以毫秒级为单位的数据读取时间, 能很好地满足业务对数据时效性的需求。

转载于:https://www.cnblogs.com/Soy-technology/p/11308982.html

Cassandra架构、设计(集群表)和性能报告相关推荐

  1. MySQL数据库(九) 集群 Cluster 和性能优化

    文章目录 6 MySQL 集群 Cluster 6.1 MySQL主从复制 6.1.1 主从复制架构和原理 6.1.2 实现主从复制配置 6.1.3 主从复制相关 6.1.4 实现级联复制 6.1.5 ...

  2. 大型互联网架构与集群技术

    java架构必须掌握的几点技术? 关于学习架构,必须会的几点技术 1. java反射技术 2. xml文件处理 3. properties属性文件处理 4. 线程安全机制 5. annocation注 ...

  3. 大型互联网架构与集群技术(Java方向)

    java架构必须掌握的几点技术? 关于学习架构,必须会的几点技术 1. java反射技术 2. xml文件处理 3. properties属性文件处理 4. 线程安全机制 5. annocation注 ...

  4. Infortrend CS分布式NAS集群强项之性能篇

    Infortrend CS分布式NAS集群强项之性能篇 嵌入式存储系统,集成一体化集群,性能更具优势 采用自主研发的嵌入式架构,极简的IO处理指令,使得硬件发挥出最大性能.产品软件硬件一体化设计,将软 ...

  5. JavaEE架构之传统三层架构,集群架构,分布式架构,微服务架构

    javaEE架构 1.传统三层架构(all in one项目) 传统三层架构大致可以分为表现层,业务层和持久层(数据访问层).其中表现层负责接受请求和转发请求.业务层负责处理请求(注:事务管理,日志记 ...

  6. 分布式架构和集群架构的区别

    目录 1.分布式架构 2.集群架构 1.分布式架构 分布式架构是每个服务器都是运行不同的程序,提供的功能不一样,相互协作形成一个完整的生态,再对外提供服务,各个服务器之间有存在相互通信调用的情况,架构 ...

  7. clickhouse集群表删除_携程用ClickHouse轻松玩转每天十亿级数据更新

    作者介绍 蔡岳毅,携程酒店大数据高级研发经理,负责酒店数据智能平台研发,大数据技术创新工作.喜欢探索研究大数据的开源技术框架. 一.背景 携程酒店每天有上千表,累计十多亿数据更新,如何保证数据更新过程 ...

  8. 项目:网站架构,集群

    网站架构的演变 问题 单机版LNMP 独立数据库服务器 Web服务器集群与Session保持 动静分离.数据库集群 各种缓存服务器 业务模型 单机版LNMP 单机版网站,拓扑如图所示. 用户量少时使用 ...

  9. 走近伏羲,谈5000节点集群调度与性能优化

    原文链接:http://click.aliyun.com/m/13935/ 5K项目是飞天平台的里程碑,系统在规模.性能和容错方面都得到了飞跃式的发展,达到世界领先水平.伏羲作为飞天平台的分布式调度系 ...

最新文章

  1. Android Camera 通过V4L2与kernel driver的完整交互过程
  2. 利用现有资源快速实现汉语专用分词系统
  3. python开发面试题目_Python测试开发面试笔试题
  4. 是时候改变自学编程方法了,这篇国外网友的教程被fast.ai创始人点赞
  5. mysql中xml类型_使用 SQLXML 数据类型
  6. ZkServer服务启动的逻辑-ServerCnxnFactory.createFactory
  7. 细数家庭安防五大乱象 何时能步入正轨
  8. java搭建线程池框架,JAVA线程池管理及分布式HADOOP调度框架搭建
  9. 阿里云linux绑定域名
  10. mongodb数据库扩展名_MongoDB权威指南
  11. 使用java理解程序逻辑 第十二章_Java多线程中锁的理解与使用(二)
  12. python之路 《四》 字典
  13. 单片机开发软件keil4和proteus的使用教程(超详细)_☆往事随風☆的博客
  14. c语言英文背单词软件下载,英语百词斩下载,背单词最好的软件排名?
  15. Ubuntu10.04下搞定D-Link DWA-125无线网卡驱动
  16. 微信文件指定应用打开并获取文件路径,以及遇到的一个坑
  17. 网站设计的思路是怎么样的?如何设计一个好网站?|优漫动游
  18. mac安装虚拟机配置win10系统
  19. DT(Detect to Track and Track to Detect)论文详读
  20. 做ppt课件直播(课堂直播)使用云课堂直播软件的教程

热门文章

  1. 【python】组合搜索
  2. android:activity的生命周期及它们之间的传值
  3. Thinking in UML 学习笔记(四)——UML活动图来看核心
  4. 使用Azure portal Create Virtual Machine
  5. Linux入门第三集!JDK8的Linux版本资源分享!jdk-8u301-linux-x64.rpm官方资源分享!Linux安装JDK8教程!
  6. python拍7游戏代码_Python基础语法-7(小游戏)
  7. mysql数据库有几种连接方法_几种常见的数据库连接方法
  8. android美颜功能,Android
  9. python django报错 no such column:
  10. 可微偏导数一定存在_【导数压轴题】“偏导数”与含参不等式