当前位置: 首页 > news >正文

专业seo网站/永久免费的培训学校管理软件

专业seo网站,永久免费的培训学校管理软件,wordpress侧边栏按钮,上海国际网站建设分布式存储概述 常用的存储可以分为DAS、NAS和SAN三类 DAS:直接连接存储,是指通过SCSI接口或FC接口直接连接到一台计算机上,常见的就是服务器的硬盘NAS:网络附加存储,是指将存储设备通过标准的网络拓扑结构&#xff…

分布式存储概述

常用的存储可以分为DAS、NAS和SAN三类

  • DAS:直接连接存储,是指通过SCSI接口或FC接口直接连接到一台计算机上,常见的就是服务器的硬盘
  • NAS:网络附加存储,是指将存储设备通过标准的网络拓扑结构(比如以太网),连接到计算机上使用。例如NFS和Samba文件共享系统
  • SAN:存储区域网络,目前SAN存储有两种,一是基于光纤通道的FC SAN,二是基于以太网的IP SAN,也就是iscsi

常见的存储类型有文件存储、块存储和对象存储

  • 文件存储:对于需要多个主机实现数据共享的场景可以使用,例如nginx读取由多个tomcat写入的数据场景
  • 块存储:块存储在使用的时候需要格式化为指定的文件系统,然后挂载使用,对操作系统兼容性较好。私有云和公有云虚拟机的磁盘就可以使用块存储
  • 对象存储:适用于数据不会经常变化、删除和修改的场景。例如短视频、APP下载等可以使用对象存储

常用的存储设备包括:单机存储、商业存储和分布式存储。

分布式存储是一种数据存储技术,通过网络使用企业中每台机器上的磁盘空间,并将这些分散的存储资源构建为一个虚拟的存储设备,数据分散存储在企业的各个角落。

常见的分布式存储包括:Ceph、GlusterFS、TFS、FAstDFS等

在分布式存储系统中,将数据分为数据和元数据。元数据就是文件的属性信息(文件名、权限、大小、时间戳等),当客户端将产生的数据写入到分布式存储系统中的时候,,会有一个服务(Name node)提供文件元数据路由的功能,即告诉客户端去哪个服务器请求文件内容,然后再由数据存储节点(Data node)提供数据的读写请求及数据的高可用

ceph介绍

ceph官网:https://ceph.io/en/
ceph官方文档:https://docs.ceph.com/en/quincy/

Ceph是一个开源的分布式存储系统,同时支持对象存储、块设备、文件系统。

Ceph支持EB(1EB=1,000,000,000GB)级别的数据存储,ceph把每一个待管理的的数据流(文件等数据)切分为一到多个固定大小的对象数据,并以其为原子单位完成数据的读写。

ceph的优势:

  • 高性能

    • 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高
    • 能够支持上前节点存储规模,支持TB到PB级别数据存储
  • 高可用性

    • 副本数可以灵活控制
    • 支持故障域分割,强一致性
    • 多种故障场景自动进行修复自愈
    • 没有单点故障,自动管理
  • 高可扩展性

    • 去中心化,扩展灵活
  • 特性丰富

    • 同时支持块、对象和文件存储,支持多语言客户端

ceph架构

在这里插入图片描述
在这里插入图片描述

如上边两张图所示,在ceph存储系统中,最底层是rados存储集群,然后上面是逻辑划分的pool和PG。再上层是librados,相当于rados集群的API接口。

ceph提供三种存储方式:radosgw(对象存储)、rbd(块存储)、cephfs(文件系统存储)。其中radosgw和rbd是基于librados实现的,cephfs则是直接在rados集群上实现的。用户可以通过不同的方式调用这三种存储接口存取数据,当然也可以直接通过librado存取数据。

但不论以哪种方式存取数据都需要指定pool,数据会映射到pool的pg上。

Rados集群

在这里插入图片描述

一个rados集群由monitor、manager、osd和mds这四类节点组成,其中mds是可选的,当使用cephfs接口时需要部署mds节点,用来存储文件元数据。

1. moitor节点
用来运行ceph-mon进程,维护集群状态映射(maintainers maps of the cluster state),比如ceph集群中存储池数量、PG数量以及存储池和PG的映射关系等。包括monitor map、manager map、osd map、mds map和crush map,这些映射map是ceph 守护程序相互协调所需的关键集群状态,此外monitor还负责管理守护程序和客户端之间的身份验证(cephx)。通常需要至少3个monitor节点来实现高可用。

2. manager节点
用于运行ceph-mgr进程,ceph-mgr负责跟踪运行时指标和ceph集群的当前状态,包括存储利用率,当前性能指标和系统负载。ceph-mgr还托管基于python的模块来管理和公开ceph集群信息,包括基于WEB的ceph仪表盘和REST API。通常需要至少两个manager节点来实现高可用。

3. OSD节点
用于运行ceph-osd进程,用来存储数据,正常情况下,操作系统上的一个磁盘就是一个osd守护程序,osd用于处理集群数据复制、恢复、重均衡等,并通过检查其它osd守护程序的心跳来向监视器和管理器提供一些监视信息。 通常需要至少3个osd节点才能实现数据高可用。

4. mds节点
配和cephfs接口使用,用来存储文件元数据

ceph数据读写流程

首先说明一下pool和PG

Pool:存储池,用于组织PG,存储池的大小取决于底层的存储空间
PG(Placement group):逻辑归置组,PG用来对object进行组织和位置映射,object属于PG,PG属于pool。pool和PG都是抽象的逻辑概念

ceph集群部署完成后,要先创建存储池才能向ceph写入数据,创建存储池时需要指定PG数量。

在这里插入图片描述

在这里插入图片描述

客户端向ceph存储文件的过程具体如下:

第一步,文件到object的映射

将File切分为固定大小的对象(默认4M),计算出每个对象的oid,oid=(ino + ono)
ino:inode number,文件的元数据序列号,可以理解为File的唯一Id
ono:File切分产生的某个object的序列号
oid:每个切分出来的object的唯一id,由ino和ono组合得到

第二步,object到PG的映射

在file映射到object之后,就需要将每个object映射到pg,计算公式如下
hash(oid) & mask -> pg-id
mask=存储池pg数量-1
首先对oid进行hash计算得到一个值,然后将这个值与mask进行按位与运算的到pgid

第三步,PG到OSD的映射

通过CRUSH算法将pgid带入其中,计算得到n个osd。这n个osd共同负责存储维护这个个PG中的所有object数据
crush(pgid) -> (osd1, osd2, ...)

第四步,client与主osd通信写入数据
第五步,主osd将数据同步给备份osd,等待备份osd返回确认消息
第六步,所有备份osd确认写入完成后,主osd返回确认消息给客户端

ceph元数据保存方式

在ceph中,对象的元数据以key-value的形式存在,在rados中有两种实现:xattrs和omap。

  • xattrs(扩展属性):是将元数据保存在对象对应文件的扩展属性中并保存到系统磁盘上,这要求存储对象的本地文件系统(一般是xfs)支持扩展属性
  • omap(object map对象映射):是将元数据存储在本地文件系统之外的独立key-value存储系统中,在使用filestore时是leveldb,在使用bluestore时是rocksdb。

ceph可选后端支持多种存储引擎,比如filestore、bluestore、memstore等。早期主要使用filestore,但由于filestore存在一些问题(对ssd设备支持不够好,写放大等),所以目前主要使用bluestore。

filestore与leveldb

ceph早期使用filestore+leveldb组合来保存数据和元数据,leveldb是一个持久化存储的KV系统,和Redis这种内存型的KV系统不同,level是将大部分数据存储在磁盘上,但是需要将磁盘上的空间格式化为文件系统。

Filestore将数据保存在与Posix兼容的文件系统(例如xfs,btrfs,ext4)。在Ceph后端使用传统的Linux文件系统虽然提供了一些好处,但也有代价,如性能、对象属性与磁盘本地文件系统属性匹配存在限制等。
在这里插入图片描述

Bluestore和rocksdb

由于leveldb依然需要磁盘文件系统的支持,后期facebook对其进行改进产生了rocksdb。

使用bluestore时,会在osd中划分出一部分空间,格式化为BlueF文件系统用于保存rocksdb中的元数据信息,并实现元数据的高可用。

Bluestore的最大特点是构建在裸磁盘设备之上,并且对诸如SSD等设备做了很多优化工作。它拥有以下优势:

  • 对全SSD及NVMe SSD闪存适配
  • 绕过本地文件系统层,直接管理裸设备,缩短IO路径
  • 严格分离元数据和数据,提高索引效率
  • 使用KV索引,解决文件系统目录结构遍历效率低的问题
  • 解决filestore日志双写问题
  • 增加数据校验和数据压缩功能

RocksDB通过中间层BlueRocksEnv访问文件系统接口。这个文件系统就是BlueFS,它与传统的Linux文件系统是不同的,它不是VFS下的通用文件系统,而是一个用户态的逻辑。BlueFs通过函数接口(API,非POSIX)的方式为BlueRocksEnv提供类似文件系统的能力。

在这里插入图片描述
Bluestore的逻辑架构如上图所示,其中各模块的作用如下:

  • RocksDB:Bluestore将元数据全部存放RocksDB中,这些元数据包括存储预写式日志(WAL)、对象元数据、ceph的omap数据信息以及分配器的元数据。
  • BlueRocksEnv:这是RocksDB与BlueFS交互的接口;RocksDB提供了文件操作的接口EnvWrapper(Env封装器),可以通过继承实现该接口来自定义底层的读写操作,BlueRocksEnv就是继承自该EnvWrapper实现对BlueFs的读写
  • BlueFS:BlueFS是Bluestore针对RocksDB开发的轻量级文件系统,用于存放RocksDB产生的.sst文件和.log文件
  • BlockDevice:Bluestore抛弃了传统的ext4、xfs文件系统,使用直接管理裸盘的方式;Bluestore支持同时使用多种不同类型的设备,在逻辑上Bluestore将存储空间划分为三层:慢速(Slow)空间、高速(DB)空间、超高速(WAL)空间,不同的空间可以指定使用不同的设备类型,当然也可以使用同一块设备

Bluestore的设计考虑了Filestore中存在的一些问题,抛弃了传统的文件系统直接管理裸磁盘设备,缩短了IO路径,同时采用ROW方式,避免日志双写问题,在性能上有了极大提高。

CRUSH算法简介

CRUSH是指Controllers replication under scalable hashing,可控的、可复制的、可伸缩的一致性hash算法

Ceph使用Crush算法来存放和管理数据,它是Ceph的智能能数据分发机制。Ceph使用Crush算法来准确计算数据应该被保存到哪里,以及从哪里读取数据。和存储元数据不同的是,Crush按需计算出元数据,因此它就消除了对中心式的服务器/网关的需求,它使得Ceph客户端能够计算出元数据,该过程也称为Crush查找,然后直接和OSD通信。

相关文章:

Ceph介绍

分布式存储概述 常用的存储可以分为DAS、NAS和SAN三类 DAS:直接连接存储,是指通过SCSI接口或FC接口直接连接到一台计算机上,常见的就是服务器的硬盘NAS:网络附加存储,是指将存储设备通过标准的网络拓扑结构&#xff…...

remove 和 erase 的区别

remove 和 erase 的区别 以容器vector来说明remove和erase的区别 在STL中,vector容器也提供了remove()和erase()函数,用于从vector中删除元素。虽然这两个函数都可以实现删除元素的功能,但是它们之间还是有一些区别的。 remove() remove(…...

NFTScan:怎么使用 NFT API 开发一个 NFT 数据分析平台?

对很多开发者来说,在 NFT 数据海洋中需要对每个 NFT 进行索引和筛选是十分困难且繁琐的,NFT 数据获取仍是一大问题。而数据平台提供的 API 使得开发者可以通过接口获取区块链上 NFT 的详细信息,并对其进行分析、处理、统计和可视化。在本篇文…...

ECOLOY直接更换流程表单后导致历史流程中数据为空白的解决方案

用户反馈流历史流程打开是空白了没有内容。 一、问题调查分析: 工作流“XX0204 员工培训协议审批流程”workflowId37166产生的7个具体流程中,创建日期为2021年的4个具体流程原先引用的数据库表单应该是“劳动合同签订审批表”(formtable_main_190)&…...

mysql中的共享锁,排他锁,间隙锁,意向锁及死锁机制

一、前言(以下均为读完 高性能Mysql第四版 后的个人理解,建议阅读,挺不错的)在写锁机制前先简单贴出mysql InnoDB引擎中的事务特性与隔离级别:事务的ACID标准(1)原子性-atomicity:一个事务作为一个不可分割…...

SpringBoot整合MybatisPlus

文章目录前言一、MybatisPlus是什么?二、使用步骤1.导入依赖2.编写配置文件3.编写Controller和实体类4.编写持久层接口mapper5.启动类加包扫描注解6.测试总结前言 本篇记录一下SpringBoot整合MybatisPlus 一、MybatisPlus是什么? MyBatis-Plus&#xff…...

中电金信Gien享汇・大数据专题|金融行业数据架构及模型演进

本期嘉宾 陈子刚 中电金信商业分析事业部华南区总经理 毕业于复旦大学,硕士研究生;拥有16年以上金融行业商业智能领域从业经验;曾就职于中国工商银行、Teradata、东亚银行,服务于平安银行、广发银行、招商银行、广东农信、招商…...

Cadence Allegro 导出Design Cross Section报告详解

⏪《上一篇》   🏡《上级目录》   ⏩《下一篇》 目录 1,概述2,Design Cross Section作用3,Design Cross Section示例4,Component Report导出方法4.1,方法14.2,方法2B站关注“硬小二”浏览更多演示视频 1,概述 <...

【LeetCode】剑指 Offer 23. 链表中环的入口节点 p139 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/c32eOV/ 1. 题目介绍&#xff08;23. 链表中环的入口节点&#xff09; 给定一个链表&#xff0c;返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环&#x…...

LeetCode-96. 不同的二叉搜索树

题目来源 96. 不同的二叉搜索树 递归 1.我们要知道二叉搜索树的性质&#xff0c;对于一个二叉搜索树&#xff0c;其 【左边的节点值 < 中间的节点值 < 右边的节点值】&#xff0c;也就是说&#xff0c;对于一个二叉搜索树&#xff0c;其中序遍历之后形成的数组应该是一…...

JavaWeb基础

Servlet 是在服务器上运行的小程序。这个词是在 Java applet的环境中创造的&#xff0c;Java applet 是一种当作单独文件跟网页一起发送的小程序&#xff0c;它通常用于在客户端运行&#xff0c;结果得到为用户进行运算或者根据用户互作用定位图形等服务。服务器上需要一些程序…...

C++基础了解-03-C++变量类型

C变量类型 一、变量类型 变量其实只不过是程序可操作的存储区的名称。C 中每个变量都有指定的类型&#xff0c;类型决定了变量存储的大小和布局&#xff0c;该范围内的值都可以存储在内存中&#xff0c;运算符可应用于变量上。 变量的名称可以由字母、数字和下划线字符组成。…...

树莓派4b——通过mjpg-streamer使用摄像头

参考博文&#xff1a;(51条消息) 树莓派4b如何打开摄像头_树莓派打开摄像头_会飞的小东的博客-CSDN博客(51条消息) 树莓派4B &#xff08;系统版本11&#xff0c;bullseye&#xff09;更换清华源_树莓派更换清华源_ASSSSHION的博客-CSDN博客这个坑踩了我一星期&#xff0c;找各…...

MySQL运维篇之读写分离

04、读写分离 4.1、介绍 读写分离&#xff0c;简单地说是把对数据库的读和写操作分开&#xff0c;以对应不同的数据库服务器。主数据库提供写操作&#xff0c;从数据库提供读操作&#xff0c;这样能有效地减轻单台数据库的压力。 通过Mycat即可轻易实现上述功能&#xff0c;…...

windows程序最小化到托盘并显示提示信息

windows程序最小化到托盘并显示提示信息背景干货直接上代码解析控制窗口显示初始化托盘添加第一条消息更新界面结束啦背景 有些时候需要程序在最小化的时候可以看到程序进度&#xff0c;甚至需要完全关闭界面&#xff0c;只留下托盘显示&#xff0c;这篇文章就是在这个背景下诞…...

使字符串平衡的最少删除次数(简单动态规划)

给你一个字符串 s &#xff0c;它仅包含字符 a 和 b​​​​ 。 你可以删除 s 中任意数目的字符&#xff0c;使得 s 平衡 。当不存在下标对 (i,j) 满足 i < j &#xff0c;且 s[i] b 的同时 s[j] a&#xff0c;此时认为 s 是 平衡 的。 请你返回使 s 平衡 的 最少 删除次…...

linux网络广播使用

广播使用的特殊的IP地址: 最后一位是255时的IP地址是给广播预留的IP地址, 如:192.168.1.255 UDP服务器在广播数据时,数据报使用的地址不是UDP服务器地址,而是广播地址 如:UDP服务器地址是:192.168.1.110 UDP服务器广播数据时使用地址是:192.168.1.255 UDP数据包发送给交换机…...

Kubernetes源码学习

kubernetes源码剖析 1.下载和编译源码 go 1.18.3 kubernetes 1.24.2 centos 7.9 进入目录$GOPATH/src/k8s.io/kubernetes&#xff0c;执行以下命令即可全量构建&#xff0c;并且构建结果只包含linux平台的&#xff1a; KUBE_BUILD_PLATFORMSlinux/amd64 make all GOFLAGS…...

筑基九层 —— 指针详解

目录 前言&#xff1a; 指针详解 前言&#xff1a; 1.CSDN由于我的排版不怎么好看&#xff0c;我的有道云笔记比较美观&#xff0c;请移步有道云笔记 2.修炼必备 1&#xff09;入门必备&#xff1a;VS2019社区版&#xff0c;下载地址&#xff1a;Visual Studio 较旧的下载 -…...

内存清理、动画制作、CPU检测等五款实用软件推荐

人类与99%的动物之间最大差别在于是否会运用工具&#xff0c;借助好的工具&#xff0c;能提升几倍的工作效率。 1.内存清理软件——MemReduct MemReduct是一款内存清理软件&#xff0c;现在越来越多的软件由于硬件的普遍发展&#xff0c;对内存的使用都开始肆无忌惮起来&…...

RocketMQ 5.0 学习笔记

1. 需求 背景&#xff1a;业务需要&#xff0c;平台将使用rocketMQ来实现消息的发送与消费&#xff0c;替代redis的消息功能。 需要在搭建好rocketMQ平台后&#xff0c;进行研究和验证。 技术&#xff1a;Springboot RocketMQ5.0 使用场景&#xff1a;签到活动&#xff0c…...

796.子矩阵的和

输入一个 n行 m列的整数矩阵&#xff0c;再输入 q个询问&#xff0c;每个询问包含四个整数 x1,y1,x2,y2&#xff0c;表示一个子矩阵的左上角坐标和右下角坐标。 对于每个询问输出子矩阵中所有数的和。 输入格式 第一行包含三个整数 n&#xff0c;m&#xff0c;q。 接下来 n…...

【PySide6】信号(signal)和槽函数(slot),以及事件过滤器

说明 在PYQT中&#xff0c;父控件可以通过两种方式响应子控件的事件&#xff1a; 通过信号(signal)和槽函数(slot)机制连接子控件和父控件父控件可以通过设置eventFilter()方法来监听响应子控件的事件 一、信号(signal)和槽函数(slot) 示例 在PYQT中&#xff0c;每个组件都…...

canal admin管理端配置(二)

下载安装 下载地址&#xff1a; 下载解压即可 配置 修改canal.admin-1.1.5\conf\application.yml server:port: 8089 #端口根据是否冲突修改 spring:jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT8spring.datasource:address: 192.0.16.12:3306#数据库ip和端口…...

Servlet 生命周期

Servlet的生命周期有四个阶段&#xff1a;加载并实例化、初始化、请求处理、销毁。主要涉及到的方法有init、service、doGet、doPost、destory等 加载并实例化 Servlet容器负责加载和实例化Servelt。当Servlet容器启动时&#xff0c;或者在容器检测到需要这个Servlet来响应第一…...

redis集群模式登陆

总结redis单机模式时&#xff0c;登陆redis的命令格式&#xff1a; ./redis-cli -h 地址 -p 端口redis集群模式时&#xff0c;登陆redis的命令格式&#xff1a; ./redis-cli -h 地址 -p 端口 -c举例1&#xff1a;redis单机模式下登陆rootubuntu:/usr/local/redis/redis-7.0.0/b…...

04-useMemo 、React.memo、useCallback

useMemo 、React.memo、useCallback 一、useMemo 基本用法 缓存数据&#xff0c;模拟 Vue 中的计算属性。 同样useMemo跟vue中component一样&#xff0c;也是有缓存的&#xff0c;会将结果缓存下来 import React, { useMemo, useState } from react;export default functio…...

windows下安装emqx Unable to load emulator DLL@if ===/ SET data_dir=“

1.报错内容 I:\0-software\02-emqx\emqx-5.0.19-windows-amd64\bin>emqx start Unable to load emulator DLL (I:\0-software\02-emqx\emqx-5.0.19-windows-amd64\erts-12.3.2.9\bin\beam.smp.dll) 此时不应有 SET。 I:\0-software\02-emqx\emqx-5.0.19-windows-amd64\bin&…...

Redis常见问题(未完待续)

Redis常见问题Redis为什么快 &#xff1f;Redis为什么快 &#xff1f; 根据官方数据&#xff0c;Redis 的 QPS 可以达到约 100000&#xff08;每秒请求数&#xff09;&#xff1b; 基于内存 对于磁盘数据库来说&#xff0c;首先要将数据通过 IO 操作读取到内存里再读取&#x…...

2024秋招BAT核心算法 | 详解图论

图论入门与最短路径算法 图的基本概念 由节点和边组成的集合 图的一些概念&#xff1a; ①有向边&#xff08;有向图&#xff09;&#xff0c;无向边&#xff08;无向图&#xff09;&#xff0c;权值 ②节点&#xff08;度&#xff09;&#xff0c;对应无向图&#xff0c;…...