摘要:本文通过对Amazon S3的六大存储类——Amazon S3标准、Amazon S3智能分层、Amazon S3标准-不频繁访问、Amazon S3单区-不频繁访问、Amazon S3 Glacier-即时检索及Amazon S3 Glacier Deep Archive各自的特点、功能、适用场景和收费策略的分析,比较它们的差异,从而让自身更了解Amazon S3存储类,更好的学习云计算这门课程。
关键词:S3存储类、功能、收费策略、适用场景。
近几年,云计算的发展突飞猛进,以美国亚马逊集团为首的科技公司领导着这个行业的发展。2006年,亚马逊推出了第一个云计算服务,最初开发AWS是为了更好地支持自己的电子商务服务。 他们将其云计算平台称为弹性计算云 (Elastic Compute Cloud,EC2),它是最早提供远程云计算平台服务的公司。而存储作为云计算不可缺失的一部分,要想了解云计算,则势必要研究存储功能。其中,Amazon S3存储作为最常用、使用最广泛的存储,研究它具有极高的意义。通过前面一篇论文我已经了解到Amazon S3是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。下面,我将逐一分析Amazon S3的各大存储类。
相比美国,中国云计算起步较晚,目前处于快速增长阶段。美国早在2005年前就已提出云计算相关概念,后三年由于技术驱动,应用领域逐步普及。中国相对美国发展晚5年,于2007年以后以美为师开始发展云计算,2009年后政策不断出台高度支持,使云计算得到广泛应用。
云计算技术相对于大数据和人工智能来说,在普及程度上已经做得比较好了,在工业互联网快速发展的大背景下,云计算也获得了新的发展空间,相信未来云计算除了会在消费互联网领域得到大面积使用之外,在产业互联网领域,云计算也会创造出巨大的价值。云计算在产业互联网领域有更加广泛的应用场景,借助于物联网、大数据和边缘计算等技术,云计算能够在很大程度上为企业的智能化发展赋能。
Amazon S3标准提供较高的吞吐量和较低的延迟,拥有非常强劲的综合能力和存储性能。可以适用很多场景,适合任何数据类型的通用型存储,通常用于经常访问的数据。除此之外,S3标准可用于自动将对象迁移到其他 S3 存储类的 S3 生命周期管理,因此大部分情况下都可以用S3标准(块状存储除外),S3标准被广泛运用于云应用程序、动态网站、内容分配、移动和游戏应用程序以及大数据分析,且效果不错。
收费策略:按GB收费,每GB的价格居中。不收取检索费用
S3 智能分层是一种存储类,旨在通过自动将数据移动到最经济高效的访问层来优化存储成本,而不会影响性能或运营开销。S3智能分层诞生的目的就是为了解决在访问模式不规则时使用正确的存储类和优化成本的问题。
而S3智能分层的最大特点我个人认为是它有两个访问层:即频繁访问层和不频繁访问层,一个层针对频繁访问进行了优化,另一个低成本层针对不频繁访问进行了优化。这些层为客户提供了低延迟和高吞吐量性能。频繁访问层中 30 天未被访问的对象将移动到不频繁访问层。频繁访问层的定价与 S3 标准相同,不频繁访问层的定价与 S3 标准 – 不频繁访问相同。
S3智能分层适用于希望在数据访问模式发生变化时自动优化存储成本而不会影响性能或运营开销的场景,适合长期存储。
既然S3智能分层那么好,那为什么不把它放在第一位呢?——这是老师留给我们的问题,我思来想去,查阅了许多资料,发现智能分层的致命缺陷可能就在于它存储的对象生命周期——智能分层适用于生命周期超过 30 天的对象,使用此存储类的所有对象都将按照最少 30 天进行计费。也就是说,智能分层不适合存放临时数据!这是什么一个概念呢?假如某公司要开发一个应用程序,那肯定要产生很多临时数据吧,有些数据只需要存储一天、一小时……如果这些临时数据都使用智能分层,按30天进行计费,那这个公司估计得破产!而用S3标准就不存在这个问题,我想这就是智能分层始终无法替代S3标准的原因。
收费策略:按每月GB数、请求和数据传输付费,频繁访问层中的对象的计费费率与 S3 标准相同,存储在不频繁访问层中的对象的计费费率与 S3 标准不频繁访问相同,存储在存档访问层中的对象的计费费率与 S3 Glacier 相同,存储在深度存档访问层中的对象的计费费率与 S3 Deep Glacier 相同。不收取检索费用。
S3标准-IA提供较高的持久性、较高的吞吐量以及较低的 S3 标准延迟,并且每 GB 的存储价格和检索费用都较低。适用于不常访问、但在需要时要求快速访问的数据以及长期存储和备份,也非常适用于灾难恢复文件的数据存储(即数据在整个可用区遭到破坏时具有弹性)。
收费策略:按每月GB数收费,但每GB的价格几乎是S3标准的一半。收取检索费用。
S3单区-IA其实跟S3标准-IA很像,都适用于不常访问、但在需要时要求快速访问的数据。区别在于其他 S3 存储类将数据存储在至少三个可用区中,而 S3 单区 - IA 将数据存储在单个可用区中并且成本比 S3 标准 - IA 低 20%。S3 单区 - IA 非常适合希望针对不频繁访问的数据使用较低费用选项且不需要 S3 标准或 S3 标准 - IA 的可用性和弹性的场景。
缺点:由于 S3 单区-IA 将数据存储在单个可用区中,存储在这个存储类中的数据将在可用区销毁时丢失。
收费策略:也是按GB收费,但每GB的价格比S3标准-不频繁访问还要低20%。收取检索费用。
Amazon Glacier是一种数据存档服务,旨在实现安全性、持久性和极低成本。“Glacier”——冰川,顾名思义就是存储东西特别容易,成本极低,但想要取出来就特别难,适用于存储不经常访问但却是必不可少的数据。比如存储某成年人的小学数据。
收费策略:定价基于区域,采用极低成本的设计,非常适合长期存储。收取检索费用。
S3 Glacier Deep Archive 是 Amazon S3 成本最低的存储类,支持每年可能访问一两次的数据的长期保留和数字预留。它非常的安全,因为存储在 S3 Glacier Deep Archive 中的所有对象都将接受复制并存储在至少三个地理分散的可用区中。受到持久性保护,并且在12个小时内都能恢复,相较于S3 Glacier更适合存档。适用于金融服务、医疗保健和公共部门等监管严格的行业。
收费策略:按每月GB数计费,但每GB的费用最低,收取检索费用。
总结:
S3 存储类可在对象级别进行配置,单一存储桶可包含跨 S3 标准、S3 智能分层、S3 标准 - IA 和 S3 单区 - IA 存储的对象。可使用 S3 生命周期策略在存储类之间自动转移对象,而无需更改任何应用程序。大多数情况下都可以用S3标准;而在数据访问模式发生变化时自动优化存储成本而不会影响性能或运营开销的场景则选用智能分层;存储和备份小型数据则可以用S3标准-IA(在确保安全的情况下使用S3单区-IA更划算)。而S3 Glacier/ Glacier Deep Archive则是在长期备份的领域上使用。总之S3存储类各有特色,在制定最优策略时须视情况而定。
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。
从给定URL下载文件并立即将其上传到AmazonS3的更直接的方法是什么(+将有关文件的一些信息保存到数据库中,例如名称、大小等)?现在,我既不使用Paperclip,也不使用Carrierwave。谢谢 最佳答案 简单明了:require'open-uri'require's3'amazon=S3::Service.new(access_key_id:'KEY',secret_access_key:'KEY')bucket=amazon.buckets.find('image_storage')url='http://www.ex
我正在编写一个小脚本来定位aws存储桶中的特定文件,并创建一个临时验证的url以发送给同事。(理想情况下,这将创建类似于在控制台上右键单击存储桶中的文件并复制链接地址的结果)。我研究过回形针,它似乎不符合这个标准,但我可能只是不知道它的全部功能。我尝试了以下方法:defauthenticated_url(file_name,bucket)AWS::S3::S3Object.url_for(file_name,bucket,:secure=>true,:expires=>20*60)end产生这种类型的结果:...-1.amazonaws.com/file_path/file.zip.A
我发现ActiveRecord::Base.transaction在复杂方法中非常有效。我想知道是否可以在如下事务中从AWSS3上传/删除文件:S3Object.transactiondo#writeintofiles#raiseanexceptionend引发异常后,每个操作都应在S3上回滚。S3Object这可能吗?? 最佳答案 虽然S3API具有批量删除功能,但它不支持事务,因为每个删除操作都可以独立于其他操作成功/失败。该API不提供任何批量上传功能(通过PUT或POST),因此每个上传操作都是通过一个独立的API调用完成的
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file
我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
大家好!我想知道Ruby中未使用语法ClassName.method_name调用的方法是如何工作的。我头脑中的一些是puts、print、gets、chomp。可以在不使用点运算符的情况下调用这些方法。为什么是这样?他们来自哪里?我怎样才能看到这些方法的完整列表? 最佳答案 Kernel中的所有方法都可用于Object类的所有对象或从Object派生的任何类。您可以使用Kernel.instance_methods列出它们。 关于没有类的Ruby方法?,我们在StackOverflow