前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >掀起“公有云对象存储服务”的面纱(系列2)

掀起“公有云对象存储服务”的面纱(系列2)

原创
作者头像
云圈深喉
修改2018-06-05 16:52:43
2.3K5
修改2018-06-05 16:52:43
举报
文章被收录于专栏:解密云服务解密云服务

Self-Introduction:“云原生”从业者,从工作第1天起就从事和云服务强相关的工作,在不止1家云厂商做过不同的职位,一直对云服务保持着独立观察的视角。在不到5年的时间里主动或被动踩过并以优雅或不优雅的姿势爬出过很多云服务的坑。

内容题记:公有云对象存储服务会写成一个系列,从使用者(企业IT经理)的视角出发,分享一下从选择服务商到深度使用上的一些心得。上次内容主要关于厂商选取数据上云两个问题,本文主要讨论对象存储API(Application Programming Interface)和SDK(Software Development Kit)等工具的使用方式以及服务测试,内容偏向使用入门。

几乎所有对象存储服务提供商都兼容S3 API,API是什么?对象存储常用API有哪些?使用上需要注意什么?

首先,先说一个题外的事实——对于非技术人员来说,使用公有云对象存储也不是很难。几乎所有成熟的厂商都提供了自己的客户端(主要用于数据上传或迁移)和功能比较健全的网页端portal(用于简单操作、权限管理、统计展示等),可以想象到的非技术人员使用场景几乎也都覆盖到了。

这些图形界面的工具虽然更用户友好(几乎无使用门槛),但是却不是对象存储使用的主要场景。对象存储的适用场景是大量的数据内容通过公网发布,可供终端用户通过网页、app,小程序等方式进行访问、编辑等操作。而终端用户访问和上传数据时就需要调用云厂商发布出来的API。

API的定义:由子程序定义、协议和创建应用软件的工具构成的组合。概括的说,它是一组定义明确的在各种软件组件间进行通信的方法(维基百科的定义,翻译得有点蹩脚,请查看原文)在公有云对象存储这个语境里,也可以通俗的理解为服务厂商将存储的服务能力以API的方式开放给了用户,通过调用API ,有相应权限的用户可以对相应的存储空间实现诸如上传、下载、复制、删除,更改权限,获取文件列表等操作。API相当于双方约定好的通信方式(类似语言中的语法规则,只有正确的表达才会被服务端理解并给出相应的反馈),而厂商还会为用户提供API文档说明。

对于技术人员来说,在云平台开通账号、查阅相应的API文档和程序示例后就可以根据自己的业务逻辑编辑自己的程序测试使用存储,很容易上手。对象存储常用的API大概有几十个,主要集中在对存储空间(bucket)的操作和对具体文件(object)的操作上,而特别常用的大概也就十几个。不是API提供得最多就是最好的,因为我们不确定之后是否会因为某些原因更换服务厂商。对自己的业务来说没有实际场景的API,用了反而可能有后续的烦恼。

国内绝大部分提供公有云对象存储服务的厂商都兼容了S3的API,对于使用者来说有一个明显的好处就是数据迁移后代码没有太多重构的成本。国内有家做存储还比较见长的厂商是不兼容S3 API的,猜想原因大概是做得比较早用户还没有被S3 API洗脑,另外就是对自己也比较有信心。这里边有一点是值得注意的,虽然大家都说兼容S3,兼容的程度却是不一样的,所以不要误认为宣称兼容S3 API的厂商提供的API都差不多。兼容S3 API对于存储厂商来说也的确是把双刃剑,兼容意味着减少了入向(从其他兼容S3 API厂商到自己)迁移成本,但是相同的原因出向(从自己到其他兼容S3 API厂商)成本也减小了。

SDK与API是啥关系?为什么大厂都要发布自己的SDK?

开放出来的API已经将存储平台的服务能力交付给了客户。结合自己的业务逻辑客户就可以在这些API的基础上进二次开发为终端用户交付更多易用的功能。当我们说SDK的时候我们往往也会提到一种具体的编程语言,比如这个平台有C++的SDK么?每种语言都有自己的规范,SDK将API做了相关语言的适配封装,还提供相对应的示例文档。除了开放API外,大一点的厂商也都发布了自己的SDK,目的是进一步提升存储服务的易用性减轻客户的使用成本。

上面讨论S3 API兼容性时提到了不同厂商的兼容程度是不同的。如果完全兼容,那我们直接使用AWS的SDK改下endpoint和身份标识就可以对兼容厂商的存储空间进行操作了。这实际上是不可能的,每个平台一些通用功能(不只针对存储服务)的设计也是不一致的,比如在身份和访问权限管理这块就有很多区别(丰富性和成熟度),而SDK也有封装这部分API。当然除了厂商间不相互兼容外,提供自己的SDK也侧面展示了服务的成熟度。

最后我们聊两句关于选购厂商之前的服务测试

客户端主要是为非技术人员服务的,不要太期待它功能强大(如果是兼容S3 API的厂商我们也可以找到很多第三方软件,而这些却都不是AWS自己开发的)Portal还是有点重要的,数据统计以及现有配置可见可查才方便。而且领导偶尔也会想看下的,不要小看这个偶尔。

API、SDK的文档已经认真读过了,也进行了功能测试没发现什么问题,对于服务量级不大的客户来说应该差不多了,可是对于服务量级很大的客户来说却远远不够。所有公有云服务在这点上都类似,横向扩容并没有宣传中那么easy。客户完全有理由要求提供高于服务量级的压测报告,甚至做突击测试,虽然这么做看上去不太友好,但的确能暴露出问题。

前两节内容简图
前两节内容简图

本次分享就到这里,下期预告:

我的数据需要永久存储么,数据生命周期管理怎么用?

可能还会闲聊一下GDPR……

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档