浅谈云计算05 | 云存储等级及其接口工作原理
一、云存储设备

在当今数字化飞速发展的时代,数据已然成为个人、企业乃至整个社会的核心资产。从日常生活中的珍贵照片、视频,到企业运营里的关键业务文档、客户资料,数据量呈爆炸式增长。面对海量的数据,如何安全、高效且便捷地存储,成为了大家共同面临的关键挑战。云存储设备,恰如应运而生的璀璨新星,正逐步取代传统存储模式,引领数据存储迈向全新未来。
云存储设备,简单来说,是依托云计算技术,通过互联网将数据存储于远程服务器集群中的创新存储方案。它打破了传统存储对本地物理设备的依赖,让数据存储不再受限于硬盘容量、地理位置等因素。无论是身处繁华都市的办公室,还是在偏远地区出行,只要接入互联网,用户就能随时随地访问、管理自己的数据,真正实现数据随身,存储无界。
二、云存储等级
2.1 文件存储:为企业办公提供高效协作支持
文件存储,就如同我们日常使用的电脑文件夹,它以文件和文件夹的形式来组织、存储数据。这种存储方式对结构化数据极为友好,例如办公文档、电子表格等。在企业办公场景中,员工们可以通过云存储平台轻松上传、下载各类办公文件,并且能够实时共享、协同编辑,大大提高了团队协作效率。像腾讯文档、石墨文档等在线协作平台,便是依托文件存储技术,让分布在各地的团队成员宛如在同一办公室般紧密协作,共同推动项目进展。
2.2 块存储:数据库等高性能需求场景的首选
块存储则是将数据切割成固定大小的数据块,每个数据块都有独立的地址标识,就好比把一个大型仓库划分成众多小隔间,每个隔间都有精准编号。它专为那些对输入输出(I/O)性能要求苛刻的应用场景量身打造,如数据库管理系统、企业资源规划(ERP)软件等。以金融行业为例,银行的核心交易系统需要在瞬间处理海量的交易数据读写请求,块存储凭借其超低延迟、超高吞吐量的特性,确保交易数据能够快速、准确地被存储和读取,保障金融业务的稳定运行。
2.3 数据集存储:数据安身立命之所
一般而言,数据集中的数据在关系数据库里以表格形式巧妙编排。这些表格中的数据,是由一条条记录有序排列而成。每一条记录都像是一个独特的 “故事片段”,完整地描述了某个具体对象或事件。以进一步剖析每条记录,我们会发现它是由包含不同信息的各个字段所构成。用户信息表为例,一条记录可能就代表着一位特定用户的所有相关信息,从姓名、性别到联系方式,乃至注册时间等,无一遗漏。合理的数据集存储方式,能够确保数据的高效访问与处理。
2.4 对象存储:灵活应对海量非结构化数据
对象存储,是一种相对新颖且极具创新性的存储方式。这里的 “对象”,可简单理解为包含了数据本身、元数据(描述数据的相关信息,如数据类型、创建时间、所有者等)以及唯一标识符的数据集合。打个比方,就像图书馆里的每一本书,书的内容是数据,书的作者、出版年份、分类标签等信息就是元数据,而每本书独一无二的馆藏编号便是唯一标识符。对象存储特别适合存储图片、视频、音频等海量的非结构化数据。如今,社交媒体平台上每天都会产生数以亿计的图片、视频,云存储服务商利用对象存储技术,能够轻松应对如此庞大且零散的数据,为用户提供可靠的存储服务,确保数据随时可访问,永不丢失。
三、云存储接口的基本工作原理
3.1 文件存储接口:NFS、CIFS
在云存储的文件存储领域,NFS(Network File System,网络文件系统)和 CIFS(Common Internet File System,通用互联网文件系统)是两大核心协议。它们都遵循 POSIX(Portable Operating System Interface,可移植操作系统接口)标准,这意味着无论在何种操作系统下,只要支持该标准,就能无缝对接使用。
NFS 起源于 UNIX 系统,它基于远程过程调用(RPC)机制实现。当客户端向服务器发起文件访问请求时,如读取一个文档,客户端的 NFS 模块会将请求封装成 RPC 消息,发送到服务器端。服务器端的 NFS 守护进程接收并解析请求,从本地文件系统获取相应数据,再通过 RPC 回复给客户端。在企业内部的 Linux 服务器集群环境中,员工们使用的各种 Linux 工作站可通过 NFS 挂载共享的文件存储目录,实现代码、文档等资源的共享,协同开发项目,仿佛所有文件就在本地磁盘一样便捷。
CIFS 则主要应用于 Windows 环境,它脱胎于微软的 SMB(Server Message Block,服务器消息块)协议。CIFS 采用请求 - 响应模式,在 Windows 网络中,当用户在 “网络邻居” 里访问共享文件夹时,背后便是 CIFS 在发挥作用。例如,一家小型公司内部搭建了基于 Windows Server 的文件服务器,员工们通过各自的 Windows 电脑,使用 CIFS 协议轻松访问共享的办公文件,进行日常的文档编辑、资料查阅等工作,极大提高了办公效率。
3.2 块存储接口:SCSI
SCSI(Small Computer System Interface,小型计算机系统接口)协议在块存储里扮演着关键角色。它定义了一套完整的命令集,用于主机和存储设备之间的数据传输、设备管理等操作。
SCSI协议采用典型的总线结构,在这一总线上,能够连接包括主机适配器(一般指 SCSI 控制器)以及众多不同类型的 SCSI 外围设备。每个设备都被赋予一个独一无二的 SCSI ID(标识符),这个标识符就如同设备在 SCSI 总线上的 “身份证”,用于在复杂的系统环境中精准识别和区分各个不同的设备。例如,在一个由多块硬盘组成的 SCSI 硬盘阵列里,每一块硬盘都拥有属于自己独立且唯一的 SCSI ID,确保数据传输的准确性与高效性。
当主机有数据交互需求时,SCSI 控制器发起含操作码、逻辑单元号及相关参数的 SCSI 命令,如主机读取硬盘数据时生成特定命令。接着,SCSI 控制器通过总线发含目标设备 SCSI ID 的 “选择” 信号,目标设备识别 ID 后响应并与主机建立连接。之后,目标设备解析命令并执行,如硬盘接读取命令后定位并读取数据。数据传输方向分设备到主机与主机到设备,有同步和异步两种模式,不同 SCSI 标准同步速率有所区别。命令执行完,目标设备向主机返回状态信息及其他消息,主机据此决定后续操作,保障系统稳定高效运行。
3.3 对象存储接口:RESTful API、S3 API
对象存储的接口主要围绕对象展开。对象,作为对象存储的核心单元,整合了数据、元数据以及唯一标识符。其存储接口主要包括 RESTful API 和 S3 API。
REST(Representational State Transfer)是一种软件架构风格,RESTful API 基于 HTTP 协议,以资源为核心,将对象存储中的每个对象、容器等视为资源,为其赋予唯一 URL 用于定位。客户端借助标准 HTTP 方法操作资源,像 GET 获取对象数据、PUT 上传或更新对象、DELETE 删除对象等。请求时,客户端需提供如访问密钥和秘密密钥等身份验证信息,以在请求头或查询参数中发送,服务端验证其有效性,判断客户端是否有权限执行操作。服务端接收请求后,依据请求操作处理资源,并返回含状态码(指示成功或各类错误情况)、响应头(包含元数据)及响应体(对象数据或错误信息)的 HTTP 响应,客户端据此进行相应处理。
S3(Simple Storage Service)API 是亚马逊公司开发的对象存储接口,已成为事实上的行业标准,许多对象存储系统都兼容 S3 API。它提供了一组简单的操作,用于在云端存储和检索数据对象。S3 API 以桶作为对象存储的容器,客户端通过CreateBucket操作创建桶,并可指定名称与位置等属性,借助ListBuckets操作获取桶列表,以桶名访问特定桶。针对对象操作,客户端使用PutObject操作,指定桶名、对象键及对象数据上传对象;运用GetObject操作,依据桶名和对象键下载对象;通过DeleteObject操作删除指定桶中的对象。在身份验证方面,S3 API 采用签名机制,客户端利用访问密钥和秘密密钥,按特定规则对请求关键信息(如 HTTP 方法、请求头、请求时间等)进行组合与哈希计算生成签名,服务端接收请求后,使用相同规则与客户端访问密钥验证签名有效性,只有验证通过的请求才会被处理。此外,对象和桶均可关联元数据,客户端上传对象时可通过PutObject请求头部信息添加,服务端响应时会返回相关元数据,方便客户端了解资源详情。
3.4 数据库存储接口
3.4.1 关系型数据库
关系型数据库以其结构化的数据存储模式著称,数据按照表、行、列的形式组织,就像规整的电子表格。常见的代表有 MySQL、Oracle 等。
它们通常使用 SQL(Structured Query Language,结构化查询语言)作为数据接口协议。企业的客户关系管理(CRM)系统,大量的客户信息、订单记录、售后反馈等数据存储在关系型数据库中。当业务人员需要查询某个客户的所有订单时,通过在前端界面输入 SQL 查询语句,数据库系统解析该语句,依据预设的表结构关系,从众多关联表中精准提取所需数据,快速返回结果,助力企业精准把握客户需求,优化业务决策。
3.4.2 非关系型数据库
非关系型数据库则针对海量、半结构化或非结构化数据而生,数据存储形式更为灵活多样,常见类型有键值对、文档、列族、图形等。代表产品如 MongoDB(文档型)、Redis(键值对型)。
以 MongoDB 为例,它使用类似 JSON 的 BSON(Binary JSON)格式存储文档数据,其接口提供丰富的操作方法,如插入文档、查询文档、更新文档等。在社交媒体平台,用户的动态、评论、点赞等复杂多样且频繁更新的数据,通过 MongoDB 的接口高效存储与管理。当用户刷新社交页面时,后台迅速调用接口从数据库中抓取最新动态数据,实时呈现给用户,营造活跃的社交互动氛围。
相关文章:
浅谈云计算05 | 云存储等级及其接口工作原理
一、云存储设备 在当今数字化飞速发展的时代,数据已然成为个人、企业乃至整个社会的核心资产。从日常生活中的珍贵照片、视频,到企业运营里的关键业务文档、客户资料,数据量呈爆炸式增长。面对海量的数据,如何安全、高效且便捷地存…...
linux:文件的创建/删除/复制/移动/查看/查找/权限/类型/压缩/打包,文本处理sed,awk
关于文件的关键词 创建 touch 删除 rm 复制 cp 权限 chmod 移动 mv 查看内容 cat(全部); head(前10行); tail(末尾10行); more,less,grep 查找 find 压缩 gzip ; bzip 打包 tar 编辑 sed 文本处理 awk 创建文件 格式: touch 文件名 删除文件 复制文…...
CentOS 8 如何安装java与mysql
在CentOS 8上安装Java和MySQL的步骤如下: 1. 安装 Java 1.1 安装 OpenJDK(推荐) CentOS 8 默认的软件仓库提供了 OpenJDK 包,您可以直接使用 dnf 命令安装。 # 更新系统 sudo dnf update -y# 安装 OpenJDK 11(Cent…...
Go语言之路————go基本语法、数据类型、变量、常量、输出
Go语言之路————go基本语法、数据类型、变量、常量 前言一、基本语法知识二、数据类型三、常量四、变量五、作用域六、输入输出 前言 我是一名多年Java开发人员,因为工作需要现在要学习go语言,Go语言之路是一个系列,记录着我从0开始接触G…...
音视频入门基础:MPEG2-PS专题(7)——通过FFprobe显示PS流每个packet的信息
音视频入门基础:MPEG2-PS专题系列文章: 音视频入门基础:MPEG2-PS专题(1)——MPEG2-PS官方文档下载 音视频入门基础:MPEG2-PS专题(2)——使用FFmpeg命令生成ps文件 音视频入门基础…...
Docker安装和卸载(centos)
Docker安装和卸载 一,已安装Docker,卸载Docker 1.方法一 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine 如果出现以下提示就证明没卸载…...
YOLOv8从菜鸟到精通(二):YOLOv8数据标注以及模型训练
数据标注 前期准备 先打开Anaconda Navigator,点击Environment,再点击new(new是我下载anaconda的文件夹名称),然后点击创建 点击绿色按钮,并点击Open Terminal 输入labelimg便可打开它,labelimg是图像标注工具,在上篇…...
Winforms开发基础之非主线程操作UI控件的误区
前言 想象一下,你正在开发一个桌面应用程序,用户点击按钮后需要执行一个耗时操作。为了避免界面卡顿,你决定使用后台线程来处理任务。然而,当你在后台线程中尝试更新UI控件时,程序突然崩溃了。这是为什么呢࿱…...
Flutter中Get.snackbar和Get.dialog关闭冲突问题记录
背景: 在使用GetX框架时,同时使用了Get.snackbar提示框和Get.dialog加载框,当这两个widget同时存在时,Get.dialog加载框调用Get.back()无法正常关闭。 冲突解释: 之所以会产生冲突,是因为Get.snackbar在关…...
springcloudalibaba集成fegin报错ClassNotFoundException解决方案
集成fegin遇到问题: java.lang.ClassNotFoundException: com.netflix.config.CachedDynamicIntProperty 解决方案: 在pom文件中添加依赖 <dependency><groupId>com.netflix.archaius</groupId><artifactId>archaius-core</artifactId><versi…...
【HTML+CSS+JS+VUE】web前端教程-31-css3新特性
圆角 div{width: 100px;height: 100px;background-color: saddlebrown;border-radius: 5px;}阴影 div{width: 200px;height: 100px;background-color: saddlebrown;margin: 0 auto;box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);}...
力扣264. 丑数 II
给你一个整数 n ,请你找出并返回第 n 个 丑数 。丑数 就是质因子只包含 2、3 和 5 的正整数。 //用一个数组来保存第1到第n个丑数 //一个丑数必须是乘以较小的丑数的 2、3 或 5来得到。 //使用三路合并方法:L2、L3 和 L5三个指针遍历2、3、5倍的丑数序列…...
计算机网络之---TCP连接管理
TCP连接管理 TCP(传输控制协议)是面向连接的协议,在数据传输之前需要建立连接,在数据传输完成后需要断开连接。TCP连接的建立和断开都遵循特定的规则,分别称为三次握手(Three-Way Handshake)和四…...
《CPython Internals》阅读笔记:p118-p150
《CPython Internals》学习第 8 天,p118-p150 总结,总计 33 页。 一、技术总结 补充一些本人整理的关于 Context-Free Grammar(CFG) 的知识。 1.symbol(符号) A mathematical symbol is a figure or a combination of figures that is used to repre…...
C/C++ 数据结构与算法【排序】 常见7大排序详细解析【日常学习,考研必备】带图+详细代码
常见7种排序算法 冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)希尔排序(Shell Sort)归并排序(Merge Sort)快速排序(…...
三只松鼠携手爱零食,社区零售新高峰拔地而起
合纵连横,这是当前零售行业发展的一个主旋律。从商超之王胖东来的全国调改,到社区零售正在进行的渠道变革,竞争的激烈和商业模式的升级令人目不暇接。 量贩零食赛道在过去一年就是如此,有杀伐,有并购,刀光…...
Java聊天小程序
拟设计一个基于 Java 技术的局域网在线聊天系统,实现客户端与服务器之间的实时通信。系统分为客户端和服务器端两类,客户端用于发送和接收消息,服务器端负责接收客户端请求并处理消息。客户端通过图形界面提供用户友好的操作界面,服务器端监听多个客户端的连接并管理消息通…...
Kibana操作ES基础
废话少说,开干!!!!!!!!!!!!截图更清晰,复制在下面 #库操作#创建索引【相当于数据库的库】 PUT /first_index#获…...
MYSQL8创建新用户报错:You have an error in your SQL syntax;check...
本文所用——MYSQL版本:8.0.25 baidu都是直接创建新用户并赋权,如下: GRANT ALL PRIVILEGES ON *.* TO 用户名% IDENTIFIED BY 密码 WITH GRANT OPTION;但是我用的MYSQL版本它就不行,会报错! 经查阅资料发现——MY…...
动漫周边商城系统|Java|SSM|VUE| 前后端分离
【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
