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

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……

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

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

私有云下的身份与管理解决方案

信息化时代,企业分布式管理模式的广泛应用使当今的IT系统管理变得复杂,企业必须提供一个全方位的资源审视以确保企业资源的有效访问和管理。而云计算的不断发展使得众企...

3508
来自专栏数据和云

微博MySQL优化之路 - 肖鹏

肖鹏老师对于开源数据库尤其是MySQL的研究特别深入,今天我们来一起听他分享自己对MySQL数据库的优化经验! 作者简介 ? 肖鹏 微博研发中心数据库技术负责人...

3807
来自专栏带你撸出一手好代码

极简主意编程

模拟几个工作场景 1 开发:新部署的程序在线上环境跑不起来,但是在测试环境运行正常,运维帮忙看看是不是环境安装有问题 运维:所有软件都是原模原样从测试机拷贝过来...

3046
来自专栏PHP在线

可以使用框架但千万不要依赖框架

我们是由于效率和易用性的考虑才产生框架。框架能节省开发时间。框架强制使用公共的约定,因此它能有效地解决一些共有的问题,比如页面渲染,assert判断,安全或者应...

3155
来自专栏数据和云

遇见未来 | PostgreSQL:一匹即将发力的黑马

在2017年的DB-Engine的年度数据库榜单上,PostgreSQL以其超过其他341个受监控数据库管理系统的受欢迎程度居于榜首,被评为年度DBMS。其总体...

5506
来自专栏SDNLAB

软件定义存储必备的5个软件工具

1502
来自专栏小程序服务商

附近的小程序怎么开通 开发使用小程序需要域名空间服务器吗

1、附近小程序优先展示在最上面,在微信搜索的时候也会优先展示附近的小程序,这能提供不小的流量。

2850
来自专栏Linux Python 加油站

揭秘Linux工程师一路走来都需要哪些技能

大公司也是从小公司一步步走过来的,而大公司之所以与小公司不同,不在于基础的技术体系不同,而是当数据量达到一定程度后,引发的质变而已。而在思考质变带来的性能问题中...

1204
来自专栏北京马哥教育

20款开发运维必备的顶级工具

开发运维工具与软件开发领域的最佳实践密切相关,也与必要的规范密切相关。在整个开发生命周期涉及到一大批新旧工具,从规划、编码、测试、发布到监控。本文介绍你应该考...

4486
来自专栏领域驱动设计DDD实战进阶

微服务实战(一):落地微服务架构到直销系统(什么是微服务)

网上有很多关于微服务的文章,从不同的维度对微服务进行了相关的讲述;有些高屋建瓴,有些涉及细节,有些侧重理论,有些侧重代码,都是非常不错的了解微服务的文章。

1942

扫码关注云+社区