说到公有云容灾,大家首先想到的是云上数据备份。

然而,随着企业核心业务逐渐从线下迁移到云上,客户提出了更高的要求。如何确保云上业务的高可用、数据的高可靠,这对云厂商提出了新的挑战。

腾讯云作为全球领先的云厂商,服务了上百万家客户。在公有云服务之初,就凭借自身业务的多年积累,从机房基础设施建设,到计算、存储、网络、安全等各种服务,为客户在云上构建高可用、数据高可靠的业务,提供了完善的产品和解决方案。

业务的容灾涉及到诸多方面,以典型的三层架构为例,架构上要确保每一层都具备高可用能力,才能保障整体业务的高可用。这其中,数据层作为业务的核心,是我们首要考虑的。

在这篇文章中,我们聚焦在数据层容灾,介绍一下腾讯云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位的更多相关文章

  1. 腾讯云COS对象存储 Web 端直传实践(JAVA实现)

    使用 腾讯云COS对象存储做第三方存储云服务,把一些文件都放在上面,这里主要有三中实现方式:第一种就是在控制台去设置好,直接上传文件.第二种就是走服务端,上传文件,就是说,上传文件是从服务端去上传上去 ...

  2. Go操作腾讯云COS对象存储的简单使用案例

    准备环境 安装Go环境 Golang:用于下载和安装 Go 编译运行环境,请前往 Golang 官网进行下载 安装SDK go get -u github.com/tencentyun/cos-go- ...

  3. 腾讯云 COS 对象存储使用

    目前使用腾讯云的对象存储cos服务,将本地的文件同步到cos中,看了腾讯云的用户文档,发现使用COS Migration 工具还是挺适合的. 原因 因为服务器已经安装有java环境,而cos的几个用户 ...

  4. 腾讯云COS对象存储

    一.腾讯云COS 腾讯云对象存储 COS 是一种存储海量数据的分布式存储服务.COS 提供了多种对象的存储类型:标准存储.低频存储.归档存储. 二.为什么要使用TA 便宜: 个人用户有6个月的免费使用 ...

  5. 腾讯云COS对象存储的简单使用

    叮当哥之前买了一年的腾讯云服务器,昨日偶然发现腾讯云送了叮当哥半年的cos对象存储服务器,于是就撸起袖子传了几张珍藏的高清大图上去,现将其上传的简单使用步骤总结一波(其它操作参加官方SDK文档API) ...

  6. 腾讯云的对象存储COS

    什么是对象存储COS Clound Object Storage,COS,专门为企业和开发者们提供能够存储海量的分布式存储服务,用户可以随时通过互联网对大量数据进行批量存储和处理,在任意位置存储和检索 ...

  7. 腾讯云cos对象在线显示

    问题 前端使用了一张cos的图片,但是无法显示图片,使用的是cdn的加速域名地址. 对比:使用服务器的直接域名是可以显示的. 两者地址直接访问时,一者在线显示,一者直接下载到本地. 原因: 使用默认提 ...

  8. ceph 对象存储跨机房容灾

    场景分析 每个机房的Ceph都是独立的cluster,彼此之间没有任何关系. 多个机房都独立的提供对象存储功能,每个Ceph Radosgw都有自己独立的命名空间和存储空间. 这样带来两个问题: 针对 ...

  9. PHP 腾讯云cos使用之我见

    因为某些人的原因,本文从新改名发布一遍. 原名称:tp5 -- 腾讯云cos简单使用 原文链接:https://www.cnblogs.com/YFYQ/p/10840050.html 因项目需要,本 ...

随机推荐

  1. 【JVM】类加载时机与过程

    虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制.下面来总结梳理类加载的五个阶段. 类加载发生在 ...

  2. 在Linux中要修改一个文件夹或文件的权限

    在Linux中要修改一个文件夹或文件的权限我们需要用到linux chmod命令来做,下面我写了几个简单的实例大家可参考一下. 语法如下: chmod [who] [+ | - | =] [mode] ...

  3. iframe高度自动随着子页面的高度变化而变化(不止要在iframe标签里加上this.height=this.contentWindow.document.body.scrollHeight)

    最近使用iframe整合页面遇到一些难题,走了很多弯路才解决,借此记录一下: 1 <!-- 页面主体内容 --> 2 <div class="iframe-wrapper& ...

  4. 高德打车对接loader.js文件的实现

    const u = navigator.userAgent;const isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > ...

  5. Kafka Eagle 管理平台

    Kafka-Eagle简介 源代码地址:https://github.com/smartloli/kafka-eagle Kafka Eagle是什么 Kafka Eagle是一款用于监控和管理Apa ...

  6. 【linux】系统编程-1-进程、管道和信号

    目录 1. 进程 1.1 概念 1.2 查看进程 1.3 启动新进程 1.3.1 system() 函数 1.3.2 fork() 函数 1.3.2 exce 系列函数 1.3.2.1 exce 系列 ...

  7. xxfpmW 的诞生过程

    最近因为在win 服务器搭建php服务,发现php-cgi.exe 很容易崩溃,看cpu和硬盘都没有暴涨,也不知道啥原因,网上查发现有一款xxfpm 小应用可以解决这个问题,但这个应用是2011年开发 ...

  8. C语言全排列

    #include <stdio.h> int m=5; char s[]="12345"; void Swap(char *a, char *b)//元素交换 { ch ...

  9. FSMC全称“静态存储器控制器”。

    FSMC全称"静态存储器控制器". 使用FSMC控制器后,可以把FSMC提供的FSMC_A[25:0]作为地址线,而把FSMC提供的FSMC_D[15:0]作为数据总线. (1)当 ...

  10. 一台PC端安装多店仓信息的删除

    如图所示,安装了多店仓,想要删除其中莫一店仓信息! 步骤一:先找到对应目录,一般默认的目录为C:\Users\xxxx\AppData\Roaming\WebPos2.0\bosnatweiniman ...