• Cassandra架构、设计(集群&表)和性能报告


    系统架构:

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

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

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

    数据模型

    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 操作, 将同一条数据不同的版本进行合并, 过时数据也会在此过程中被删除; 分层数据压缩, 有效减少数据体积

    及磁盘

    系统设置(集群)

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

    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. 处理器参数为Intel Xeon CPU E5 2620 v2 2. 10GHz 主频为2. GHz 存大小为 256 GB ;6 块4TB SATA 硬盘; 服务器间通过万兆光纤连接。Cassandra 数据库版本为2. 2.

    高可用性测试

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

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

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

    块SATA 硬盘, 其中 块做 RAID1, 安装操作 件; 4TB 个RAID0 用于存储数据。

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

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

     

    读取性能测试

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

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

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

     

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

    )50 用户并发和100 并发 客户 型数据进行 。以 T639 WIND/100 例, 50 100用 并发与单用 读取相 关数据 均时间 均在20 ms 左右。

    在100 并发情况下, 从数据库 取数据 所消 ms量级为 小于在samba

    3) 数据读取时 比,即单个数 大, 费的时间 越长。

    结语

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

  • 相关阅读:
    flask -服务端项目搭建
    蓝图 Blueprint
    flask-session
    flask-数据库操作 / ORM/Flask-SQLAlchemy/数据表操作/数据操作/数据库迁移
    在 Flask 项目中解决 CSRF 攻击
    Flask-Script 扩展/自定义终端命令/Jinja2模板引擎
    Flask项目创建/http的会话控制/Cookie/Session/请求钩子/异常捕获/context
    redtiger sql injection 练习
    流畅的python--序列构成的数组
    流畅的python--python的数据模型
  • 原文地址:https://www.cnblogs.com/Soy-technology/p/11308982.html
Copyright © 2020-2023  润新知