腾讯云COS对象存储占据数据容灾C位
说到公有云容灾,大家首先想到的是云上数据备份。
然而,随着企业核心业务逐渐从线下迁移到云上,客户提出了更高的要求。如何确保云上业务的高可用、数据的高可靠,这对云厂商提出了新的挑战。
腾讯云作为全球领先的云厂商,服务了上百万家客户。在公有云服务之初,就凭借自身业务的多年积累,从机房基础设施建设,到计算、存储、网络、安全等各种服务,为客户在云上构建高可用、数据高可靠的业务,提供了完善的产品和解决方案。
业务的容灾涉及到诸多方面,以典型的三层架构为例,架构上要确保每一层都具备高可用能力,才能保障整体业务的高可用。这其中,数据层作为业务的核心,是我们首要考虑的。
在这篇文章中,我们聚焦在数据层容灾,介绍一下腾讯云COS对象存储的容灾解决方案。
一、Region 和 AZ 的概念
首先介绍一下 Region 和 AZ 的概念。
Region-区域/地域:简单来说,可以将 Region 理解为不同城市的机房。公有云的 Region 遍布全球,国内的话,通常会有北京 Region、上海 Region、广州 Region 等等。不同 Region 之间,一般只能通过公网连通。
AZ-可用区:可以理解为同一个城市的不同机房,是包含在 Region 内的。比如北京 Region,会包括多个 AZ,而单个 AZ 会有一个或多个 IDC 机房园区组成。AZ 之间通过高带宽、低时延、高冗余的专线网络连接,保证跨 AZ 之间数据传输的安全可靠。
一个 Region 多个 AZ 组成,从机房电力、网络等层面来保障一个 AZ 出现故障的时候不会影响到另外一个可用区。
二、跨可用区容灾
如果您的应用程序已经构建在腾讯云上,可以借助 COS 对象存储多 AZ(Available Zone)来提高数据层的可用性。
多 AZ(Available Zone)是指由腾讯云对象存储推出的多 AZ 存储架构,这一存储架构能够为用户数据提供数据中心级别的容灾能力。
实现原理上,数据会被打散成若干个分块,同时按照纠删码算法计算出对应的校验码分块。原始数据分块和校验码分块会被打散并均分存储到该地域的不同 AZ 数据中心中,实现同城容灾。
多 AZ 特性为客户提供99.9999999999%(12个9)的数据设计可靠性和99.995%的服务设计可用性。在上传数据到对象存储时,只需要通过指定对象的存储类型,即可将对象存放到多 AZ 的地域。
当您启用多 AZ 功能后,客户数据分散存储在城市中多个不同的 AZ 数据中心,当某个 AZ 数据中心因为自然灾害、断电等极端情况导致整体故障时,其他 AZ 数据中心的数据依旧可以正常读取和写入,保障客户数据持久存储不丢失,维持客户业务数据连续性和高可用。
三、跨区域容灾
如果您的业务有更高的可用性需求,除了借助 COS 对象存储多 AZ 之外,还可以在不同地域保存数据副本,来进一步提高数据层的可用性。
COS 对象存储桶跨区域复制,指由腾讯云对象存储推出的一项数据异步跨区域复制功能。存储桶复制是针对存储桶的一项配置,通过配置存储桶复制规则,可以在不同存储桶中自动、异步地复制增量对象。
启用存储桶复制后,COS 将精确复制源存储桶中的对象内容(如对象元数据和版本 ID 等)到目标存储桶中,复制的对象副本拥有完全一致的属性信息。此外,源存储桶中对于对象的操作,如添加对象、删除对象等操作,也将被复制到目标存储桶中。
通过存储桶跨区域复制实现数据的异地容灾,当某个数据中心因为不可抗因素损毁时,另一个存储桶的数据中心仍然可以提供副本数据以供您使用。
除了提供高可用之外,存储桶跨区域复制可以满足行业对数据安全的合规性要求。同时,当您的客户在不同地理位置访问对象时,在与客户地理位置最近的存储桶中维护对象副本,最大限度上缩短客户的访问延迟,有利于提高您的产品体验。
四、版本控制
无论是跨可用区容灾,还是跨区域容灾,如果数据被误删除,将导致数据永久丢失。
为了避免用户误删或应用程序故障而丢失的数据,COS 对象存储推出了版本控制功能。
版本控制用于实现在相同存储桶中存放同一对象的多个版本。例如,在一个存储桶中,您可以存放多个对象键同为 picture.jpg 的对象,但其版本 ID 不同,例如100000、100101和120002等。
用户在为某一存储桶开启版本控制功能后,可以根据版本 ID 查询、删除或还原存放在存储桶中的对象。这有助于恢复被用户误删或应用程序故障而丢失的数据。例如,用户在对版本控制的对象进行删除操作时:
- 如果需要删除对象 (非完全删除),COS 会为被删除的对象插入删除标记,该标记将作为当前对象版本,您可以根据删除标记恢复以前的版本。
- 如果需要替换对象,对象存储会为新上传的对象插入新的版本 ID,您仍然可以根据版本 ID 恢复被替换前的对象。
存储桶可处于三种版本控制状态:未启用版本控制状态、启用版本控制状态和暂停版本控制状态。
- 未启用版本控制状态:指存储桶的默认初始状态,此时版本控制功能关闭。
- 启用版本控制状态:指开启存储桶版本控制功能,此时为版本控制开启状态,版本控制状态将应用到该存储桶中的所有对象。您对存储桶首次启用版本控制后,新增上传到该存储桶中的对象将拥有唯一的版本 ID。
- 暂停版本控制状态:指存储桶的版本控制由开启状态变更为暂停状态(无法返回未启用版本控制状态),此后往存储桶中上传的对象将不再存放版本控制的对象。
存储桶处于不同的版本控制状态下,您均可对不同状态的存储桶中的对象进行上传、查询和删除操作。
五、上传防覆盖
除开一些不可抗力因素,很多时候,看起来没有风险的操作也是导致数据异常的一大原因,比如,COS 是保持最终一致性的,所以,当有同名文件上传时,旧文件会被覆盖,为了避免非预期的覆盖动作,用户就需要在自己的业务逻辑中维护一套完整的重名校验系统,当然,用户也可以选择开启版本控制,但开启版本控制后,多版本对象的管理逻辑也比较复杂,也会带来额外的存储量,而且,用户往往只需要对部分特定文件禁止覆盖写的动作,不需要版本控制相较厚重的功能逻辑。
针对这种情况,腾讯云对象存储 COS 能够提供存储桶级别和对象级别的防覆盖机制。
用户可以直接开启存储桶的防覆盖功能,开启后,存储桶会禁止一切同名文件的上传动作,当上传同名文件时,COS 会拒绝上传请求,以保证存储桶中的文件不会被覆盖。
如果只是想防止存储桶中部分特定文件被覆盖,用户可以在上传这些文件时,带上特殊头部,带上该头部后,上传请求会先对桶中文件进行校验,如果桶中无同名文件则上传成功,如果桶中有同名文件,则上传失败。
开启了上传防覆盖功能后,用户仍然可以对文件进行改名,删除等操作,在一些合规场景下,仅仅是防止覆盖,还远远不够。
六、对象锁定
在很多金融场景下,根据合规政策,文件需要强制性的保留,不允许覆盖,删除,修改等等,需要留底足够的时间,这个时候,就需要通过对象锁定功能来满足需求。
用户开启存储桶配置对象锁定后,在保留周期内:
- 对象不可删除、修改;
- 对象存储类型不能修改;
- 对象 HTTP 头部+用户元数据都不能修改,包括 Content-Type、Content-Encoding、Content-Language、Content-Disposition、Cache-Control、Expires、x-cos-meta-;
对象锁定功能可以很好的协助客户满足合规性的政策要求。
七、写到最后
无论您的业务已经构建在腾讯云上或者正在准备迁移上云,都可以借助 COS 对象存储提供的容灾能力来保护您的业务数据。通过多 AZ、跨区域复制、版本控制等功能,实现数据的冗余存储。
与本地辅助数据中心相比,基于云的灾难恢复可以提供更高的可靠性、可用性和安全性,而不需要重复的硬件、计算、网络和软件,在保障 RPO 和 RTO 的情况下,可以显著降低容灾 TCO。
腾讯云COS对象存储占据数据容灾C位的更多相关文章
- 腾讯云COS对象存储 Web 端直传实践(JAVA实现)
使用 腾讯云COS对象存储做第三方存储云服务,把一些文件都放在上面,这里主要有三中实现方式:第一种就是在控制台去设置好,直接上传文件.第二种就是走服务端,上传文件,就是说,上传文件是从服务端去上传上去 ...
- Go操作腾讯云COS对象存储的简单使用案例
准备环境 安装Go环境 Golang:用于下载和安装 Go 编译运行环境,请前往 Golang 官网进行下载 安装SDK go get -u github.com/tencentyun/cos-go- ...
- 腾讯云 COS 对象存储使用
目前使用腾讯云的对象存储cos服务,将本地的文件同步到cos中,看了腾讯云的用户文档,发现使用COS Migration 工具还是挺适合的. 原因 因为服务器已经安装有java环境,而cos的几个用户 ...
- 腾讯云COS对象存储
一.腾讯云COS 腾讯云对象存储 COS 是一种存储海量数据的分布式存储服务.COS 提供了多种对象的存储类型:标准存储.低频存储.归档存储. 二.为什么要使用TA 便宜: 个人用户有6个月的免费使用 ...
- 腾讯云COS对象存储的简单使用
叮当哥之前买了一年的腾讯云服务器,昨日偶然发现腾讯云送了叮当哥半年的cos对象存储服务器,于是就撸起袖子传了几张珍藏的高清大图上去,现将其上传的简单使用步骤总结一波(其它操作参加官方SDK文档API) ...
- 腾讯云的对象存储COS
什么是对象存储COS Clound Object Storage,COS,专门为企业和开发者们提供能够存储海量的分布式存储服务,用户可以随时通过互联网对大量数据进行批量存储和处理,在任意位置存储和检索 ...
- 腾讯云cos对象在线显示
问题 前端使用了一张cos的图片,但是无法显示图片,使用的是cdn的加速域名地址. 对比:使用服务器的直接域名是可以显示的. 两者地址直接访问时,一者在线显示,一者直接下载到本地. 原因: 使用默认提 ...
- ceph 对象存储跨机房容灾
场景分析 每个机房的Ceph都是独立的cluster,彼此之间没有任何关系. 多个机房都独立的提供对象存储功能,每个Ceph Radosgw都有自己独立的命名空间和存储空间. 这样带来两个问题: 针对 ...
- PHP 腾讯云cos使用之我见
因为某些人的原因,本文从新改名发布一遍. 原名称:tp5 -- 腾讯云cos简单使用 原文链接:https://www.cnblogs.com/YFYQ/p/10840050.html 因项目需要,本 ...
随机推荐
- ACL 的功能、匹配原则、端口号类别
功能 1)限制网络流量.提高网络性能.例如,ACL可以根据数据包的协议,指定这种类型的数据包具有更高的优先级,同等情况下可预先被网络设备处理. 2)提供对通信流量的控制手段. 3)提供网络访问的基本安 ...
- [日常摸鱼]poj2778 DNA Sequence
这题太神啦 题意:求长度为$n$的不包含给定DNA序列的DNA序列个数,给定的不超过10个 构建出Trie图,用$danger[i]$来表示不能走到$i$,对于DNA序列结尾的结点$danger$设为 ...
- 浅谈 FHQ-Treap
关于FHQ-Treap --作者:BiuBiu_Miku 可能需要的前置知识: 一.树形结构的了解: 树形,顾名思义,就是像树一样有很多分叉口,而这里以二叉 ...
- Eureka系列(九)Eureka自我保护机制
因为本篇简文并不是自己总结的,而是当了下搬运工,所以直接直接附上原作者博客链接. 参考链接: 1.SpringCloud Eureka自我保护机制 2.Spring Cloud Eurek ...
- Python高级语法-多继承MRO相关-多继承顺序(4.5.1)
@ 目录 1.说明 2.代码 关于作者 1.说明 使用类的魔法方法__mro__ 可以查看他的父类调用顺序 还有调用父类的构造方法的时候,使用super调用,里面有C3算法支持,不会重复调用相同的祖先 ...
- svn add . 报错,不能add全部,因为有一些文件已经在版本库中了
svn add 目录名 --force SVN commit -m '' 目录名
- Python写一个对象,让它自己能够迭代
仿写range()对象,对象是可迭代的: 1 #!usr/bin/env python3 2 # -*- coding=utf-8 -*- 3 4 class myRange(): 5 #初始化,也叫 ...
- Redis 设计与实现 5:压缩列表
压缩列表是 ZSET.HASH和 LIST 类型的其中一种编码的底层实现,是由一系列特殊编码的连续内存块组成的顺序型数据结构,其目的是节省内存. ziplist 的结构 外层结构 下图展示了压缩列表的 ...
- navicat12.0.26如何激活
首先准备好所需工具链接:https://pan.baidu.com/s/1EHATRC0M34n-aNteIyBXbw 密码:r7tf 下载后如图分别为64位和32位. 操作时需要断掉网络 Nav ...
- python实例:解决经典扑克牌游戏 -- 四张牌凑24点 (一)
Hey! Hope you had a great day so far! 今天想和大家讨论的是一道我从这学期cs的期末考试得到灵感的题:Get 24 Poker Game.说到 Get 24 Pok ...