业务上云的企业越来越多,怎样提高云存储的高可用性,就显的很重要了!

上一篇内容我们说到了 COS 企业业务上云的文章。本文将着重介绍如何尽可能的提高腾讯云对象存储 COS 的可用性。

COS 提供了基于 HTTP/HTTPS 的上传接口,对于 UGC 的场景,客户端直传 COS 的用法十分普遍。由于 COS 的存储桶是分布在具体的某个地域,比如某个客户的存储桶位于上海园区,但是其客户遍布全国各地乃至全球海外,偏远地区以及跨国的访问及其不稳定,如何在错综复杂的网络环境下提高客户端上传文件的成功率成为让客户头疼的问题,下面我们将带着这个问题一步步去寻求答案。

一. 客户端断点续传

客户端的上传内容一般分为图片类的小文件以及视频类的大文件,腾讯云对象存储 COS 提供了简单上传以及分块上传这两种接口来上传不同大小的文件。

对于小于1MB的图片类小文件,直接使用简单上传接口即可。

对于大于1MB的视频类大文件,使用分块上传接口把大文件切分为多个小的分块来上传(每个分块大小为1MB - 5GB,最后一个分块可以小于1MB)。

我们知道,在网络传输中分块越小,那么传输成功率越高,也方便对小的分块进行快速重试。

分块上传文件,分为以下3个步骤:

1. 初始化一个分块上传,服务端返回一个用于分块上传的UploadId;

2. 并发上传多个分块文件;

3. 完成指定 UploadId 的分块上传,合成一个完整的文件;

扫描 COS 的访问日志,我们发现有不少用户没能以最优雅的方式使用分块上传接口。分块上传方式上传一个大文件时(分块数最多10000个),在其中某一个分块上传失败之后,就立马放弃掉这个文件,重新发起一个新的上传任务,这样浪费了大量的时间来进行重试,使得上传的效率低下。

COS 后端会永久保存一个未完成上传的 UploadId(可以主动使用碎片清理接口来清理未完成的分块上传),如果我们可以记录下步骤1中的 UploadId,列出已经上传的分块,重新从断点处进行续传则可以大大提高上传接口的可用性。

COS 提供了多种语言的 SDK 封装好了对应的断点续传接口,在对应的 COS SDK 中找到高级上传接口即可使用断点续传功能。

二. 跨地域复制

COS最新推出的跨地域复制功能,可以在不同存储区域的存储桶中自动、异步地复制增量对象。利用此特性可以做到跨区域级别的容灾、就近访问提高可用性。随着公司越来越多的业务出海,如何提高跨国访问的可用性成为业务的痛点,使用跨地域复制功能可以极大提升业务的可用性。

1、跨地域复制架构

开启跨地域复制的两个存储桶必须提前打开版本控制功能,并且位于 COS 的不同区域,COS 现在已经支持双向以及一对多的同步配置。客户对文件产生的所有增量操作,包括删除文件操作(开启多版本的情况下删除文件操作实际上是创建一个 0 字节的特殊 delete marker 文件)都会经由源桶通知 costrsf 模块,任务入 CMQ 队列成功之后则返回成功,后续由 costrsf 模块异步的同步文件到目的存储桶,所有的元信息以及访问控制信息 ACL 都会原封不动的同步到目的端,需要注意的是,目的端文件的版本号会和源文件的版本号也保持一致。源文件会维持一个 x-cos-replication-status 字段来保存跨地域复制任务的状态,客户可以通过 HEAD Object 接口来查询文件的复制状态。

这里大家可能会有一个疑问,为什么跨地域复制必须提前打开版本控制功能。

我们设想一个非常常见的场景,如果源桶同时上传了多个路径相同的文件或者目的桶也在上传同名文件,由于跨地域复制的任务是异步进行的,无法保证文件写入的最终一致性。由于源文件和目的文件的版本号是保持一致的,而且版本号是根据时间戳生成的,那么在索引侧就是有序的,最终可以保证多个版本的文件都能按照正确的时序投递到目的存储桶。

2、在COS控制台上设置跨地域复制

控制台支持一对一以及一对多的跨地域复制设置。

进入控制台在左侧导航栏单击【存储桶列表】,然后选择单击需要配置跨地域复制的源存储桶,进入存储桶详情界面。

单击左侧的【高级配置】,进入存储桶的高级配置页,向下找到【跨地域复制】管理项,单击【新增规则】进入跨地域复制规则配置状态。

3、在SCF控制台上设置跨地域复制回调

公司的游戏业务需要将游戏安装包分发到海外的存储桶,使用跨地域复制功能,可以就近上传到广州的存储桶,保证上传的成功率和速度,然后自动复制到海外的存储桶中。如何通知到业务方安装包已经成功同步到海外存储桶,首先想到的方案是通过查询接口,不停的轮询源文件x-cos-replication-status 状态,当 x-cos-replication-status=Complete 时,则可以认为文件同步成功。

更为优雅的方式则是当跨地域复制完成时,由 COS 发出回调消息到 SCF 触发特定的业务逻辑来通知到业务方。

三. 全球加速

1、全球加速原理

腾讯云对象存储 COS 全球加速功能利用全局链路的自动测速功能,智能路由解析用户请求,选择最优网络访问链路,实现请求的就近接入。

利用全球分布的云机房,帮助全球各地用户快速访问最近的接入层,提升业务访问成功率和稳定性。

使用全球加速功能就近接入之后,客户端到接入层的"加速"实际上是,由稳定快速的内网专线网络传输链路,来代替外网不稳定的跨国或跨地域的访问链路。

2、使用方式及加速效果

利用博瑞第三方测评工具,我们将 COS 的存储桶设置在了上海园区,使用COS的普通上传域名以及加速上传域名,在全球各个拨测点进行1MB大小文件的上传测试,从上图我们可以明显的看到亚洲、欧洲、美洲的上传效果得到了显著的提升。对于中国本土的上传提升效果,我们将使用加速效果已经得到某个客户认可的某款 APP 的实测数据来进行展示。

上图是某客户 UGC APP 采样了中国西北地区的普通域名和加速域名上传接口的成功率数据,我们可以清晰的看到新疆、西藏、内蒙古等地的上传成功率都维持在99%之上,西北地区的上传成功率平均提高了2%~3%。客户反馈,APP 端上的整体成功率由97%提升到了99.5%,显著的加速效果,让我们得到了客户的认可。

目前 COS 全球加速功能暂时处于产品公测期,如果您需要使用,可提交内测申请。相比于跨地域复制,用户不需要支付跨地域存储桶的存储费用,也不需要维护额外的逻辑去通知业务方复制任务的成功。只需要在 SDK 中按照以下方式改变 endpoint 即可:

# appid 已在配置中移除,请在参数 Bucket 中带上 appid。Bucket 由 BucketName-APPID 组成#1.设置用户配置,包括 secretId,secretKey 以及 Regionsecret_id='COS_SECRETID'# 替换为用户的 secretIdsecret_key='COS_SECRETKEY'# 替换为用户的 secretKeyregion='ap-beijing'# 替换为用户的 Regionendpoint='cos.accelerate.myqcloud.com'# 替换为加速域名的 endpointconfig=CosConfig(Region=region,Endpoint=endpoint,SecretId=secret_id,SecretKey=secret_key)#2.获取客户端对象client=CosS3Client(config)

四. 总结

COS 提供了多种扩展功能来提高用户的可用性,如果上传点比较固定或者希望同时具备异地容灾以及就近访问的功能,可以选择跨地域复制功能,如果不希望支付额外的存储费用来提高 UGC 场景下的上传成功率,那么可以选择 COS 全球加速。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容

  • 专业名词 块存储、文件存储、对象存储 块存储 就好比硬盘一样, 直接挂在到主机, 一般用于主机的直接存储空间和数据...
    rochy_he阅读 11,666评论 0 37
  • 不知是什么时候相识,却也走了一载的时光,不知是何时暗生了情愫,明知是暗恋,明知是不可能的事,却也偷偷告了白,你当成...
    妹妹躲雨吗阅读 260评论 0 0
  • 本来只是看了某个明星的八卦,但那个博主文采不错的,就把他的一些微博翻了翻,然后又重点的看了看自己比较有好感,而且也...
    璐Moo阅读 237评论 3 3
  • 前天下的一场雪,让冬天出尽了风头。行人穿着厚厚的棉衣,走路开始小心翼翼。积雪变得又硬又滑,汽车也向蜗牛学习...
    云上小草阅读 152评论 2 4