共计 5323 个字符,预计需要花费 14 分钟才能阅读完成。
近期,AIGC、GPT 大模型、数据中台等热点话题备受关注,那么具体在不同的行业场景下,如何选择对应的存储介质呢?选型的时候该考虑哪些因素呢?
通过本文主要介绍常用的存储类型及它们之间的对比差异,辅助帮助大家在不同需求和场景下选择合适的存储类型。
存储类型简介
存储的物理层实际无非就是磁盘(disk),即磁记录技术存储数据的存储器。磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失。早期计算机使用的磁盘是软磁盘(Floppy Disk,简称软盘),如今常用的磁盘是硬磁盘(Hard disk,简称硬盘)。
磁盘知识简介
存储磁盘常见的三大指标:吞吐量、IOPS、时延。三个指标之间存在着关系,具体呈现为如下公式:每秒吞吐 = I/Osize * IOPS * 并行度(IOPS- 延时)。
1. 吞吐量是指对网络、设备、端口、虚电路或其他设施,单位时间内成功地传送数据的数量(以比特、字节、分组等测量)。
2.IOPS 是(Input/Output Operations Per Second)是一个用于计算机存储设备(如机械硬盘 HDD、固态硬盘 SSD、混合硬盘 HHD 或存储区域网络 SAN 等)性能测试的量测方式,可以视为是每秒的读写次数。
3. 时延是发起读取数据请求到读取到数据之间的时间间隔。
阿里云存储产品底层原理
阿里云存储是在物理层的磁盘资源上利用虚拟化技术将物理存储资源池化,架构分布式资源调度系统——盘古系统,可以为用户、客户提供类似于水电煤资源使用按量付费、按需取用的使用体验。
存储类型区别
存储方式区别
文件、块和对象是三种以不同的方式来保存、整理和呈现数据的存储格式。
1. 文件存储 NAS 会以文件和文件夹的层次结构来整理和呈现数据;
2. 块存储 EBS 会将数据拆分到任意划分且大小相同的卷中;
3. 对象存储 OSS 会管理数据并将其链接至关联的元数据。
接口协议区别
三种存储产品的接口协议也不一样。
1. 文件存储 NAS 文件系统构造的协议为 NFS、SMB 协议,支持 POSIX 接口访问;
2. 块存储 EBS 协议为阿里云自研协议,封装接口为 iSCSI;
3. 对象存储 OSS 协议为 HTTP/HTTPS 协议(Restful API),通过 URL 域名地址定位文件,支持 AWS 的 S3 接口。
应用场景区别
由于三款产品存储数据存储结构的不同,适用于不同的应用场景。
文件存储 NAS
NAS 文件系统存储架构是目录树状结构,可以支持上千台虚拟机通过 POSIX 接口同时、高并发访问,支持随机读写、在线修改、直读直写。
块存储 EBS
1、EBS 的优势是性能高、时延低,适合于 OLTP 数据库、NoSQL 数据库等 IO 密集型的高性能、低时延应用工作负载,支持随机读写。
2、EBS 是裸磁盘,挂载到 ECS 后不能被操作系统应用直接访问,需要格式化成文件系统(ext3、ext4、NTFS 等)后才能被访问。
3、EBS 无法实现容量弹性扩展,单盘最大容量为 32TB,并且对共享访问的支持有限,需要配合类 Oracle RAC、WSFC Windows 故障转移集群等集群管理软件才能进行共享访问。因此,块存储 EBS 主要还是针对单 ECS 的高性能,低时延的存储产品。
对象存储 OSS
OSS 存储架构为 S3(Simple Storage Service 简单存储服务)扁平化文件组织形式,不支持文件随机读写,主要适用于互联网架构的海量数据的上传下载和分发。
对象存储在存储段 bucket 中,对象就像是文件,存储段就像是文件夹或目录,对象和存储段通过统一资源标识符(Uniform Resource Identifier,URI)进行查找,虽然在控制台界面是好像是有树状结构,但实际显示的文件夹 /.resource 只是前缀。
存储产品
时延
吞吐
协议
访问模式(虚机访问存储数据的接口)
应用场景
文件存储 NAS
毫秒级
数百 Gbps
NFS、SMB
上千个 ECS 通过 POSIX 接口并发访问,随机读写
高并发访问、在线修改、直读直写的场景
对象存储 OSS
几十毫秒级
数百 Gbps
HTTP、HTTPS(Restful API)
数百万客户端通过 Web 并发,追加写
互联网架构的海量数据的上传下载和分发
块存储 EBS
微秒级
数十 Gbps
自研协议
单 ECS 通过 POSIX 接口访问,随机读写
适合 IO 密集型的数据库 / 单 ECS 高性能、低时延应用工作负载
协议、接口详细区别
什么是接口?什么是协议?
协议:协议定义了在两个或多个通信实体之间进行交换的报文格式和次序,以及报文发送和 / 或接收一条报文或其他事件所采取的行动。
接口:在程序设计的情况下,接口往往与模块挂钩。模块是从物理上对程序实体的定义进行分组,是可以分别编写和编译的程序单位。一个模块包括接口和实现两部分。模块的接口规定了在模块中定义的、可以被其他模块使用的一些程序实体;模块的实现是指在模块中定义的程序实体的具体实现。接口起到了模块设计者和使用者之间的一种约束作用:使用者按照模块的接口来使用模块所提供的功能;模块的实现者根据规定的模块接口进行实现。
二者的联系:
协议和接口常常放在一起或者混淆使用,本质上都是抽象的规则集合,在不同的场合有不同的含义。例如,在计算机网络语境下,我们使用协议往往指网络协议 / 通信协议,网络模型中的每层都有对应的不同协议。在编程场景中,我们往往具体指某种接口,可以狭义地理解为交互点(类似于去政务大厅的办事窗口)、函数 / 方法。但在具体场景的使用中,有时会默认背景,比如将 API 简称为接口(实际上是包含关系,而不是等价关系)。
广义上讲,接口和协议可以一起使用,它们都是高度抽象的概念。狭义上,协议有各种具体的协议,接口有各种具体的接口(如 java 中有可定义的 interface,常用来与抽象类比较),这时两者是不同。
一句话概括:
协议是多个通信实体之间互通的规则和范式。接口是按照协议规定规则的具体实现。
二者的联系:协议是接口的既定规则,接口是协议的具体实现。
二者的区别:不需要过分区分协议和接口,他们的联系更加紧密。
协议介绍
NFS 协议
1. 定义:NFS(Network File System,网络文件系统)是由 SUN 公司研制的 UNIX 表示层协议(presentation layer protocol)文件共享协议,能使使用者访问网络上别处的文件就像在使用自己的计算机一样。
2.NFS 差异化特点
a.NFS 只提供基本的文件处理功能,而不提供任何四层 TCP/IP 与 OSI 七层数据传输功能,需要借助 RPC 协议才能实现 TCP/IP 数据传输功能;
b.NFS 默认没有加密,对客户端来说是完全透明的,且仅依靠 IP 地址或主机名来决定是否允许客户端挂载指定的共享目录【明文传输】,需要可通过 Kerberos 进行认证及加密。
3.NFS 与其他文件共享协议共同点:使用 C /S 架构。
4.NFS 实现原理:共享资源的属主、属组和权限。
a.NFS 服务器和客户端通过 UID 和 GID 来识别共享资源的所有者信息。当客户端挂载 NFS 共享目录时,共享目录中资源的 UID 和 GID 将与服务器上面的保持一致;而客户端会将 UID 和 GID 映射到客户端上所对应的用户名和组名。NFS 服务器与客户端上共享资源的权限及 ACL 信息(若支持)将保持一致。
SMB 协议
1. 定义:SMB 网络文件共享系统协议,全名服务器消息块(Server Message Block),允许应用程序和终端用户从远端的文件服务器访问文件资源,CIFS(通用互联网文件系统 Common Internet File System)是 SMB 的衍生协议。
2.SMB 与 NFS 的区别:操作系统 OS 不同,NFS 适配 linux 操作系统,SMB 适配 windows/linux,但是兼容 linux 时相关存储性能会收到影响。
3.SMB 协议运用过程:SMB 协议协商(Negotiate)> 建立 SMB 会话(Session Setup)> 连接一个文件分享(Tree Connect)> 文件系统操作 > 断开文件分享连接(Tree Disconnect)> 终止 SMB 会话(Logoff)。
iSCSI 协议
1. 定义:iSCSI(Internet Small Computer System Interface),Internet 小型计算机系统接口,又称为 IP-SAN,是一种基于因特网及 SCSI- 3 协议下的存储技术,由 IETF 提出,并于 2003 年 2 月 11 日成为正式的标准。
2. 实现原理:iSCSI 利用了 TCP/IP 的 port 860 和 3260 作为沟通的渠道。透过两部计算机之间利用 iSCSI 的协议来交换 SCSI 命令,让计算机可以透过高速的局域网集线来把 SAN 模拟成为本地的储存装置。
3. 应用场景 / 功能:可以与任意类型的 SCSI 设备进行通信,总是使用它来连接服务器计算机(例如,数据库服务器)和磁盘卷上存储阵列。
a. 使用 iSCSI SAN 的目的通常有以下两个:
i. 存储集成公司希望将不同的存储资源从分散在网络上的服务器移动到统一的位置(常常是数据中心);这可以让存储的分配变得更为有效。SAN 环境中的服务器无需任何更改硬件或电缆连接就可以得到新分配的磁盘卷。
ii. 灾难恢复公司希望把存储资源从一个数据中心镜像到另一个远程的数据中心上,后者在出现长时间停电的情况下可以用作热备份。特别是,iSCSI SAN 使我们只需要用最小的配置更改就可以在 WAN 上面迁移整个磁盘阵列,实质上就是,把存储变成了“可路由的”,就像普通的网络通信一样。
POSIX 协议
1. 定义:可移植操作系统接口 POSIX(Portable Operating System Interface)是 IEEE 为要在各种 UNIX 操作系统上运行软件,而定义 API 的一系列互相关联的标准的总称。
2. 原理应用程序通过应用编程接口 (API) 而不是直接通过系统调用来编程(即并不需要和内核提供的系统调用来编程)。
a. 一个 API 定义了一组应用程序使用的编程接口。它们可以实现成调用一个系统,也可以通过调用多个系统来实现,而完全不使用任何系统调用也不存在问题。
b.API 可以在各种不同的操作系统上实现给应用程序提供完全相同的接口,但是 API 本身在这些系统上的实现却可能迥异。比如,当应用程序调用 printf()函数时,printf 函数会调用 C 库中的 printf,继而调用 C 库中的 write,C 库最后调用内核的系统的函数,但是可能 windows 调用的是函数 A,linux 调用的是函数 B。完成同一功能,不同内核提供的系统调用(一个函数)是不同的。
RESTful API
1. 定义:RESTful 是一种网络应用程序的设计风格和开发方式,基于 HTTP 做传输协议,可以使用 XML 格式定义或 JSON 格式定义,跟编程语言、平台都无关。RESTFUL 适用于移动互联网厂商作为业务接口的场景,实现第三方 OTT 调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。
2.RESTful API 就是 RESTful 风格的 API。
3. 应用场景:一套协议来规范多种形式的前端和同一个后台的交互方式。
4. 实现原理:RESTful API 统一数据操作的接口,其数据操作 CRUD(create,read,update,delete)分别一一对应 HTTP 方法:GET 用来获取资源,POST 用来新建 / 更新资源,PUT 用来更新资源,DELETE 用来删除资源。调用的时候用 URL 定位资源、用 HTTP 动词(GET,POST,PUT,DELETE)描述操作。
协议对比
存储原理不同:
1.iSCSI:利用了 TCP/IP 的 port 860 和 3260 作为沟通的渠道。透过两台服务器之间利用 iSCSI 的协议来交换 SCSI 命令,让服务器可以透过高速的局域网集线把 SAN 模拟成为本地的储存装置。
2.CIFS(SMB):是公共的或开放的 SMB 协议版本,并由 Microsoft 使用。SMB 协议在局域网上用于服务器文件访问和打印的协议。
3.NFS:通过使用 NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。
存储特点不同:
1.iSCSI:让两个主机通过 IP 网络相互协商然后交换 SCSI 命令。这样一来,iSCSI 就是用广域网仿真了一个常用的高性能本地存储总线,从而创建了一个存储局域网(SAN)。
2.CIFS:CIFS 在高层运行,而不像 TCP/IP 协议那样运行在底层。CIFS 可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。
3.NFS:配置一台中心 NFS 服务器用来放置所有用户的 home 目录可能会带来便利。这些目录能被输出到网络以便用户不管在哪台工作站上登录,总能得到相同的 home 目录。
参考文献:
什么是 RESTful API?:https://blog.csdn.net/qq_41378597/article/details/85248848
RESTful 百度百科:https://baike.baidu.com/item/RESTful
NAS- 阿里云官方文档:https://help.aliyun.com/product/27516.html
POSIX 是什么?解决了什么问题?:https://blog.csdn.net/sir_chai/article/details/105652646