对象存储那点事

在很长的一段时间里,DAS、SAN 和 NAS 这三种架构几乎统治了数据存储市场。所有行业用户的数据存储需求,都是在这三者中进行选择。

然而,随着时代的发展,一种新的数据存储形态诞生,开始挑战前面三者的垄断地位。没错,它就是云计算时代存储技术的新网红——对象存储。

 什么是对象存储

对象存储,也称为“面向对象的存储”,英文是 Object-based Storage。现在很多云厂商,也直接称之为“云存储”。不同的云厂商对它有不同的英文缩写命名。例如阿里云把自家的对象存储服务叫做 OSS,华为云叫 OBS,腾讯云叫 COS,七牛叫 Kodo,百度叫 BOS,网易叫 NOS……五花八门,反正都是一个技术。

DAS 和 SAN 是基于物理块的存储方式,而 NAS 是基于文件的存储方式。

在 DAS 和 SAN 中,存储资源就像一块一块的硬盘,直接挂载在主机上,我们称之为块存储。而在 NAS 中,呈现出来的是一个基于文件系统的目录架构,有目录、子目录、孙目录、文件,我们称之为文件存储。文件存储的最大特点,就是所有存储资源都是多级路径方式进行访问的。例如:

C:\Program Files (x86)\Tencent\WeChat\WeChat.exe

\\NJUST-Server\ 学习资料 \ 通信原理 \ 第一章作业 .doc

数据存储的两个重大变化

20 世纪末,随着互联网的爆发,数据存储需求发生了两个重大的变化。

第一,就是数据量爆炸式增长。原因我就不用说了吧?大家可以瞅瞅自己的硬盘,都藏了些什么。Web 应用的崛起、社交需求的刺激,极大地推动了多媒体内容的创作和分享。人们开始上传大量的照片、音乐、视频,加剧了数据量的爆发。此外,信息技术的发展、企业数字化的落地,也产生了大量的数据,不断吞食着存储资源。

第二,是非结构化数据的占比显著增加。

什么是非结构化数据?举个例子大家就明白了。我们经常做的 excel 表格,姓名、身高、体重、年龄、性别,这种用二维表结构可以进行逻辑表达的数据,就是结构化数据。

而图像、音频、视频、word 文章、演示胶片这样的数据,就是非结构化数据。根据此前的预测,到 2020 年(也就是今年),全球数据总量的 80%,将是非结构化数据。面对这两大趋势,因为本身技术和架构的限制,DAS、SAN 和 NAS 无法进行有效应对。于是,专家们就搞出了对象存储。

对象存储的发展历程

虽然我们说对象存储是新网红,但实际上它诞生的时间并不算短。早在 1996 年,美国卡内基梅隆大学就将对象存储作为一个研究项目提出来。随后,加州大学伯克利分校也有推出类似的项目。2002 年,Filepool 公司推出了基于内容可寻址技术的 Centera 系统,算是比较早期的对象存储系统。2006 年,美国 Amazon 公司发布AWS S3(Simple Storage Service)服务,正式将对象存储作为一项云存储服务,引入云计算领域,从此开启了对象存储的黄金时代。S3 几乎成为对象存储的事实标准,各厂家基本上都会兼容 S3。

对象存储和块存储、文件存储的区别

说了半天,对象存储到底是一个什么样的技术?它和块存储、文件存储有什么区别?想要了解对象存储,最简单直接的办法,就是从实际使用体验上进行对比。对象存储的底层硬件介质,依然是硬盘,和块存储、文件存储没有区别。而对象存储架构在底层硬件之上的系统,和两者完全不同。不同的软件,带来了完全不同的使用体验:

  • 块存储,操作对象是磁盘。存储协议是 SCSI、iSCSI、FC。以 SCSI 为例,主要接口命令有 Read/Write/Read Capacity/Inquiry 等等。
  • 文件存储,操作对象是文件和文件夹。存储协议是 NFS、SAMBA(SMB)、POSIX 等。以 NFS(大家应该都用过“网上邻居”共享文件吧?就是那个)为例,文件相关的接口命令包括:READ/WRITE/CREATE/REMOVE/RENAME/LOOKUP/ACCESS 等等,文件夹相关的接口命令包括:MKDIR/RMDIR/READDIR 等等。
  • 对象存储,主要操作对象是对象(Object)。存储协议是 S3、Swift 等。以 S3 为例,主要接口命令有 PUT/GET/DELETE 等。由此可见,接口命令非常简洁,没有那种目录树的概念。在对象存储系统里,你不能直接打开 / 修改文件,只能先下载、修改,再上传文件。

对象存储中的数据组成

对象存储呈现出来的是一个“桶”(bucket),你可以往“桶”里面放“对象(Object)”。这个对象包括三个部分:Key、Data、Metadata。

Key可以理解文件名,是该对象的全局唯一标识符(UID)。Key 是用于检索对象,服务器和用户不需要知道数据的物理地址,也能通过它找到对象。这种方法极大地简化了数据存储。下面这行,就是一个对象的地址范例:

看上去就是一个 URL 网址。如果该对象被设置为“公开”,所有互联网用户都可以通过这个地址访问它。Data也就是用户数据本体。这个不用解释了。MetadataMetadata 叫做元数据,它是对象存储一个非常独特的概念。元数据有点类似数据的标签,标签的条目类型和数量是没有限制的,可以是对象的各种描述信息。举个例子,如果对象是一张人物照片,那么元数据可以是姓名、性别、国籍、年龄、拍摄地点、拍摄时间等。

元数据可以有很多。在传统的文件存储里,这类信息属于文件本身,和文件一起封装存储。而对象存储中,元数据是独立出来的,并不在数据内部封装。元数据的好处非常明显,可以大大加快对象的排序,还有分类和查找。

 对象存储的架构

对象存储的架构是怎样的呢?如下图所示,分为 3 个主要部分:

OSD 对象存储设备这是对象存储的核心,具有自己的 CPU、内存、网络和磁盘系统。它的主要功能当然是存储数据。同时,它还会利用自己的算力,优化数据分布,并且支持数据预读取,提升磁盘性能。

MDS 元数据服务器,它控制 Client 和 OSD 的交互,还会管理着限额控制、目录和文件的创建与删除,以及访问控制权限。

Client 客户端,提供文件系统接口,方便外部访问。根据上面的架构可以看出,对象存储系统可以是一个提供海量存储服务的分布式架构。

对象存储的优点

对象存储的优点很多,简单归纳如下:

  • 容量无限大对象存储的容量是 EB 级以上。EB 有多大?大家的硬盘普遍是 TB 级别。1EB 约等于 1TB 的一百万倍,请自行脑补 ...
  • 对象存储的所有业务、存储节点采用分布式集群方式工作,各功能节点、集群都可以独立扩容。从理论上来说,某个对象存储系统或单个桶(bucket),并没有总数据容量和对象数量的限制。换句话说,只要你有足够的 money,服务商就可以不停地往架构里增加资源,这个存储空间就是无限的。你可以根据自身需求购买相应大小的对象存储空间。如果需要调整大小,也是支持弹性伸缩的,你不要进行数据迁移和人工干预。
  • 数据安全可靠对象存储采用了分布式架构,对数据进行多设备冗余存储(至少三个以上节点),实现异地容灾和资源隔离。
  • 根据云服务商的承诺,数据可靠性至少可以达到 99.999999999%(不用数了,一共 11 个 9)。这意味着,1000 亿个文件里,每月最多只会有 1 个文件发生数据丢失。这比一个人被陨石击中的概率还要小 143000 倍。
  • 数据访问方面,所有的桶和对象都有 ACL 等访问控制策略,所有的连接都支持 SSL 加密,OBS 系统会对访问用户进行身份鉴权。因为数据是分片存储在不同硬盘上的,所以即使有坏人偷了硬盘,也无法还原出完整的对象数据。使用方便对于用户来说,对象存储是一个非常方便的存储方式。很多人把它比喻为“代客泊车”,你只需要把车扔给他,他给你一个凭证,你通过凭证取车就可以了。你不需要知道车库的布局,也不需要自己去费力停放。数据的存取方法也非常灵活多样。除了前面说的可以使用网页(基于 http)直接访问之外,大部分云服务提供商都有自己的图形化界面客户端工具,用户存取数据就像用网盘一样。

事实上,大部分的对象存储需求,并不是个人用户买来当网盘用,而且企业或政府用户用于系统数据存储。例如网站、App 的静态图片、音频、视频,还有企业系统的归档数据等。像这种数据,是通过程序内部的接口调用的。对象存储提供开放的 REST API 接口。程序员在开发应用时,直接把存储参数写进代码,就可以通过 API 接口调用对象存储里的数据。相比文件存储那一串串的路径,对象存储要方便很多。

对象存储的应用场景

目前国内有大量的云服务提供商,他们把对象存储当作云存储在卖。他们通常会把存储业务分为 3 个等级,即标准型、低频型、归档型。对应的应用场景如下:

  • 标准类型:移动应用 | 大型网站 | 图片分享 | 热点音视频
  • 低频访问类型:移动设备 | 应用与企业数据备份 | 监控数据 | 网盘应用
  • 归档类型:各种长期保存的档案数据 | 医疗影像 | 影视素材

根据估算,目前全球互联网 70%以上的热点数据是保存在对象存储系统中的。对象存储虽然看上去很好很强大,但也不是没有缺点。它最大的缺点,和它的工作模式有关。它是那种把整个数据取出来,修改,再放回去的模式,不支持直接在存储上修改,哪怕只是加一行数据,都不行。所以,它不适合存储需要频繁擦写的数据(例如关系型数据库的数据)。在数据的一致性保证上,对象存储也存在先天的不足。不过,据说目前技术上已经有了很大改进。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/125979.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于ISO13209(OTX)实现引导诊断

在之前的文章《基于ISO13209(OTX)实现EOL下线序列》中,讲到了OTX的由来以及OTX在EOL中的实现案例,而本文将讲述OTX的另一个广阔应用场景——定义引导诊断序列。 一 何为引导诊断? 引导诊断,通常也称为“引…

上海亚商投顾:三大指数小幅调整,医药股继续活跃

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 沪指昨日弱势震荡,尾盘探底回升一度翻红,深成指盘中跌超1%,午后跌幅有所收窄。…

两个字符串的最小ASCII删除和

题目描述 给定两个字符串s1 和 s2,返回 使两个字符串相等所需删除字符的 ASCII 值的最小和 。 示例 思路 这个题的解法一和最长公共子序列的解法大致相同,我们可以在此代码基础上稍微更改即可。 代码如下 解法一 public int minimumDeleteSum1(Stri…

unittest与pytest的区别

Unittest vs Pytest 主要从用例编写规则、用例的前置和后置、参数化、断言、用例执行、失败重运行和报告这几个方面比较unittest和pytest的区别: 用例编写规则 用例前置与后置条件 断言 测试报告 失败重跑机制 参数化 用例分类执行 如果不好看,可以看下面表格&…

数据库开发软件Navicat Premium 15 mac中文软件介绍

Navicat Premium 15 mac是一款数据库开发工具,Navicat Premium 15 Mac版可以让你以单一程序同時连接到 MySQL、MariaDB、SQL Server、SQLite、Oracle 和 PostgreSQL 数据库。 Navicat Premium for Mac软件介绍 Navicat premium是一款数据库管理工具。将此工具连接数…

Android裁剪图片之后无法加载的问题

适配Android11之后更改了图片保存目录,导致裁剪之后图片一直无法加载(fileNotfound) 最主要的问题在于保存裁剪文件的目录不能为私有目录,因为裁剪工具是系统工具,无法直接访问项目本身的私有目录。 解决办法&#x…

京东数据分析:2023年9月京东洗地机行业品牌销售排行榜

鲸参谋监测的京东平台9月份洗地机市场销售数据已出炉! 9月份,洗地机市场的销售额增长。根据鲸参谋电商数据分析平台的相关数据显示,9月京东平台上洗地机的销量为9.2万,销售额将近2.2亿,同比增长约9%。从价格上看&#…

一次cs上线服务器的练习

环境:利用vm搭建的环境 仅主机为65段 测试是否能与win10ping通 配置转发 配置好iis Kali访问测试 现在就用burp抓取winser的包 开启代理 使用默认的8080抓取成功 上线

Elasticsearch(一)---介绍

简介 Elasticsearch是一个基于Lucene的实际的分布式搜索和分析引擎。设计用于云计算中,能够达到近实时搜索,稳定,可靠,快速,安装使用方便。基于RESTful接口。 官网地址:Elasticsearch 平台 — 大规模查找…

国密SM算法及实现加密和解密

一 引入pom <dependency><groupId>com.antherd</groupId><artifactId>sm-crypto</artifactId><version>0.3.2</version></dependency> 二 代码实现 package com.example.ytyproject.component;import com.antherd.smcrypto.…

C++学习初探---‘C++面向对象‘-继承函数重载与运算符重载

文章目录 前言继承继承是什么&#xff1f;三种访问权限的继承&#xff1a; 函数重载与运算符重载函数重载运算符重载可重载运算符&不可重载运算符 前言 第三次学习记录&#xff0c;依旧是C面向对象的内容。 继承 继承是什么&#xff1f; C中的继承是一种面向对象编程&am…

企业 Tomcat 运维 部署tomcat反向代理集群

一、Tomcat 简介 Tomcat服务器是一个免费的开放源代码的Web应用服务器&#xff0c;属于轻量级应用服务器&#xff0c; Tomcat和Nginx、Apache(httpd)、Web服务器一样&#xff0c;具有处理HTML页面的功能不过Tomcat处理静态HTML的能力不如Nginx/Apache服务器 一个tomcat默认并…

Web3 React项目Dapp获取智能合约对象

上文Web3 整理React项目 导入Web3 并获取区块链信息中&#xff0c;我们在react搭建的dapp中简单拿到了我们区块链中的账号授权信息 那 我们继续 先终端运行 ganache -d将ganache环境起起来 然后 我们运行 dapp 拿到授权列表 回到上文结束的一个状态 然后 我们发布一下自己的…

ArcGIS统计各种土地利用类型的总面积

如下图为研究区多个村的土地利用现状图,现在需统计每种类型的面积总和,以及每个行政村内各种土地利用类型的总面积。本文通过案例的形式,讲解ArcGIS中两种常用的分类统计面积的工具,建议收藏。 文章目录 1. 加载土地利用数据2. 常规属性汇总统计3. 汇总统计数据1. 加载土地…

软件安利——火绒安全

近年来&#xff0c;以优化、驱动、管理为目标所打造的软件屡见不鲜&#xff0c;大同小异的电脑管家相继走入了公众的视野。然而&#xff0c;在这日益急功近利的社会氛围驱动之下&#xff0c;真正坚持初心、优先考虑用户体验的电脑管家逐渐湮没在了浪潮之中。无论是鲁大师&#…

【C++】string类

STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且是一个包罗数据结构与算法的软件框架。 为什么学习string类&#xff1f; 1、C语言中的字符串 C语言中&#xff0c;字符串是以\0结尾…

Star History 九月开源精选 |开源 GitHub Copilot 替代

虽然大火了近一年&#xff0c;但是截至目前 AI 唯一破圈的场景是帮助写代码&#xff08;谷歌云旗下的 DORA 年度报告也给 AI 泼了盆冷水&#xff09;。不过对于软件开发来说&#xff0c;生成式人工智能绝对已经是新的标配。 本期 Star History 收集了一些开源 GitHub Copilot …

实现多平台兼容性:开发同城外卖小程序的技术策略

在移动互联网时代&#xff0c;外卖行业的快速崛起改变了人们点餐的方式。随着小程序的兴起&#xff0c;开发同城外卖小程序成为了许多企业的重要战略。然而&#xff0c;小程序的多平台兼容性成为了一项关键挑战。本文将探讨如何实现多平台兼容性&#xff0c;以开发高效且用户友…

保姆级安装Jdk,Tomact,Mysql在linux中并且部署项目

&#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Linux》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是有一定基础的程序员&#xff0c;这个专栏都能满足你的需求。我会用最简单易懂的语言&#xff0c;带你走进代码的世界&#xff0c;…

【好书推荐】ChatGPT 驱动软件开发:AI 在软件研发全流程中的革新与实践

前言 计算机技术的发展和互联网的普及&#xff0c;使信息处理和传输变得更加高效&#xff0c;极大地改变了金融、商业、教育、娱乐等领域的运作方式。数据分析、人工智能和云计算等新兴技术&#xff0c;也在不断地影响和改变着各个行业。 如今&#xff0c;我们正在见证人工智能…