9 月 13 日,2025 Inclusion・外滩大会「开源嘉年华」正在限量报名中! 了解详情
写点什么

InfoQ 在线课堂:基于 AWS 云平台的高可用应用设计

  • 2014-06-03
  • 本文字数:4950 字

    阅读完需:约 16 分钟

5 月 21 日,AWS 中国首席云技术顾问方国伟在 InfoQ 在线课堂介绍了 AWS 高可用和非高可用的服务分类,从高可用角度对典型服务进行介绍,以及高可用设计的 5 大常见设计原则,并结合 AWS 的相关服务依次进行了架构设计分析。期间,方国伟回答了许多网友的问题,InfoQ 对其进行了整理和补充,一并提供给大家。

你也可以重复收看本次在线课堂

关于存储

Q:instance down 掉之后,这个 instance 上的数据会保留吗?能找回来吗?以前看到文档说要用 EBS 才能保障 instance down 掉之后的数据保留,是这样吗?是否有其他方案?

方国伟:有好几个问题就讲 instance storage 与 EBS 数据存储的问题,我统一讲一下。因为 EC2 里边的数据存储一般分两大类,一个是 instance storage,另一个是 EBS。instance storage 是放在 EC2 里的硬盘里边的,是通过虚拟化实现的。如果这个 EC2 所在的物理机或 instance 出问题,那这个 EC2 的数据就不能访问了。为了解决这个问题,我们提供了 EBS,EBS 是通过网络访问的,如果你的 instance 出问题了,数据还在 EBS 里边。那可能有人会问,EBS 的数据会不会丢呢?EBS 的数据一般可靠性比较高,我们有个数据叫 annual failure rate(AFR)会比一般的硬盘低好多,一般是普通硬盘的 1/5 到 1/10。那 EBS 还是有可能要出问题,那怎么办?一种方式是定期对 EBS 做 snapshot,snapshot 的数据放在 S3 里,S3 的数据持久性是 11 个 9,非常高了。这是可以解决 EBS 丢数据的一个解决方案。

Q:instance down 掉后 EBS 会自动卸载吗?

方国伟:一般会自动卸载。

Q:每个 instance 都有对应的 EBS,(instance)销毁后 EBS 上存储的数据怎么处理?

方国伟:EBS 上数据如何处理完全由用户自己决定。用户可以保留 EBS 卷,从而保留数据,也可以把 EBS 删除从而删除其上的数据。另外,用户也可以通过先制作 EBS 卷快照然后再删除 EBS 卷的方式来保留数据,因为以后还可以根据这个快照来重新生成一个包含这些旧数据的新 EBS 卷。

Q:instance storage 怎么使用?哪些数据可以放在 instance storage 里面?

方国伟:这就有不同的场景,主要看你的数据有哪些对持久性要求,如果不是特别高,就放到 instance storage 里。或者在 instance 的数据在别的 instance 里有备份的,这样相当于一份丢了,从软件架构上自己可以从别的 instance 中恢复。

Q:AWS 自己的 DR 是怎么设计的?如果一个 region 出现问题,怎么恢复呢?用户数据有 sunshine 吗?

方国伟:我们在设计这个平台的时候,region 和 region 之间基本上是相互独立的,在默认情况下,你在 region 里面部署了应用程序,如果这个 region 宕掉了,当然你的应用就宕掉了。这里首先要指出一点,region 本身不是一个数据中心,只要是商用 region,我们至少要保证有两个 AZ 以上。这里强调一点,AZ 本身也不是一个数据中心,有可能是多个数据中心组成一个 AZ,所以整个 region 宕掉的可能性非常小。如果你有一个对可靠性要求特别高的应用,你可以自己在部署的时候跨 region 部署,但这个需要用户来做架构上面跨 region 的应用架构设计、数据拷贝等等。AWS 是不会主动帮你来做的,最重要的原因是很多国家和地区对数据本身有一定的独立性要求,比如欧盟要求数据放在欧盟的 region 里边,AWS 是不能把数据从 region 里主动让它离开的,这个数据拷贝的动作一定要用户自己操作才能进行。

关于数据库

Q:RDS 的 Multi-AZ 部署支持 SQL Server 吗?

方国伟:我们最新宣布支持 SQL Server,这样四个数据库类型(My SQL、Oracle、 PostgreSQL 和 SQL Server)都支持 Multi-AZ Deployment 了。

Q:原来部署到 Windows+MySQL 上的 BS 应用,如果要部署到 AWS,应该做哪些大的改动?

方国伟:不需要大的改动,Windows 用 EC2,MySQL 可用 EC2 也可以用 RDS 服务。AWS 的兼容性很好的。

Q:DynamoDB 怎么进行备份?

方国伟:一般情况下是不需要用户做备份,因为我们已经帮你备了三个拷贝,甚至更多。不过多个拷贝是在一个 region 里面的,如果你对数据可靠性要求非常高,可以跨 region 做拷贝,这个备份也非常简单。

Q:当数据库 master 出现问题后,切换到 slave,是否支持可写?如果支持可写,是否会出现 master 和 slave 互为双写的情况?

方国伟:是支持可写的,因为 Multi-AZ 部署是完全切换,这个跟 Read Replica 不太一样. 在 RDS 服务里,对数据库的两个相关的服务,一个就是 Multi-AZ 部署,Multi-AZ 部署完全是一个主拷贝和一个副拷贝,也就说这两个是同步复制的,一般所有的访问都是针对那个 master 拷贝的,当 master 拷贝出问题的时候,它会自动切换,这个访问不是通过 IP 的,而是通过 Domain Name,所以对应用程序来讲,它是透明的。如果应用 Read Replica,那当然可以把一些读操作放到 Read Replica 上面,那这个跟 Multi-AZ 又不太一样。

master 和 slave 互为双写?不会的,因为它始终同时只有一个是写的,要保持数据的一致性。

Q:SQS 最高是多少并发,需不需要做 HA?

方国伟:一般来讲这个不是问题,你不需要做 HA,SQS 本身就是高可用的,而且它是 Auto Scaling,我们有非常大批量的用户在用都没有问题。

关于 Auto Scaling

Q:自动修复的功能,如果启动新的虚机,怎么部署代码啊?

方国伟:一般来讲有两大类方法。第一类,你把应用的代码做在 AMI 里面。Auto Scaling 也好,还是你自己启动一个 Instance 也好,我们肯定会用到一个 AMI,这样你新建了那个 Instance 里面就已经包含了你要部署的代码,你要部署的运行时环境,中间件等等。但是有的同学问,我的应用可能会有不同版本,或者改变比较多,那这个部署太不灵活了,所以我们另外还有办法,你在部署以后可以通过 EC2 有一个特性 user data 来实现,当应用部署启动 Instance 后,user data 会帮你执行一段脚本,或者可以传进去一些参数给脚本,你他指定他从某个地方,比如 S3 上面下载一个新的程序的代码,然后在 Instance 启动之后去执行。将这两种方式结合起来,一般可以满足绝大部分用户关于动态软件和代码的需求。

Q:Auto Scaling 策略需要编程实现吗?

方国伟:一般不需要。Auto Scaling 实现需要用户做三个事情:

  1. 配置 launch configuration,launch configuration 存储了一个 Instance 以后,它应该是包含什么样的信息,用哪个 AMI,放在哪个 region 里面,用哪几个 AZ。
  2. 建个 Auto Scaling Group,设置最少有多少个 Instance,最大多少个 Instance。
  3. 最后一个 Scaling policy,它定义了如果 CloudWatch 监控到超过预值后,要做个什么操作,这个操作大部分情况下是不需要编码来做的。当然除非特别复杂,你可以定制来做一些事情。

Q:这个健康监测是 AWS 提供的吗?

方国伟:是通过 CloudWatch 提供的,用户也可以自己配置一些监控指标。

Q:启动新的 EC2 实例,需要加载 Image,AMI。Image 可以定制吗?加载自己的 (custom) 吗?

方国伟:当然可以的。AMI 的来源有几种方式,你可以用 AWS 官方提供的,或者社区提供的。当然社区提供的 AMI 要要做安全方面检查。当然你可以自己定制 AMI,我们有专门的工具和 API 来帮你定制。对于绝大部分用户,比较常用的方式是使用官方提供的 AMI,然后在此基础上自己做镜像,而不是所有操作系统,所有环境从头开始自己来做。

Q:EC2 实例的镜像(AMI)是不是可以事先准备好,使用的时候直接使用?

方国伟:当然,实例的镜像都是事先准备好的。如果你根据 AMI 新建一个实例,你可以通过 EC2 create AMI 功能根据当前运行的实例生成一个 AMI,你可以把 AMI 存在你自己的地方。生成以后,可以用这个自动生成的 AMI,每个 AMI 都有 id,所以你在创建 Auto Scaling 的 launch configuration 时可以根据 id 调用需要的 AMI。

Q:Auto Scaling 对 windows 和 Linux 的 AMI 有区别吗?

方国伟:Auto Scaling 使用过程在 Windows、Linux 上没有区别,在我们平台上面都有支持的,没有问题。

Q:SQS 是顺序保证的吗?

方国伟:不保存,我们不保证 first in first out,SQS 能保证不丢。但是顺序保证,通常需要通过应用程序层来实现。

Q:我们需要考虑 CDN 吗?

方国伟:我们全球有 CDN 服务 Cloud Front,我们全球现在应该有 51 个点。国内我们会用合作伙伴的 CDN 设施,我们现在官方推荐的是网宿。

关于 AWS 中国的服务

Q: AWS 什么时候在中国商用?

方国伟:现阶段还处于有限预览阶段,只针对邀请客户开放。如果需求,建议联系 AWS 的销售人员。

Q:AWS 有没有中文版?

方国伟:我们国内的版本就有中文版,如果你是有限预览用户,你可能已经看到了。如果你需要使用,你可以在 www.amazonaws.cn 上面申请。当然目前并不是申请了就能用,原因很多了。申请之后,我们销售可能会跟你联系,我们内部会有个排队的过程。基本上,我们会根据用户的情况来筛选,哪些用户来进入有限预览名单。

Q:(AWS)有中文版试用吗?AWS 有没有针对个人开发者的一些优惠政策?例如流量或 CPU 消耗一定程度下是免费的?

方国伟:关于中国和国外的帐号或私有帐号的问题,我来解释下。首先,AWS 没有所谓的试用帐号,任何人申请的帐号都是一样的。用户可以自己区分,这个帐号是用来做测试的,另外一个帐号做生产。对 AWS 来讲,对所有的帐号是一视同仁,都是生产帐号。对开发人员来讲,我们有一个免费试用套餐,英文叫 free usage tier,目前这个套餐针对海外全球服务系统,那 free usage tier 的意思是在一定的额度下面,所有注册 AWS 帐号的用户,在一年之内免费使用这些资源。如果你想熟悉一下 AWS 的功能,你就可以用这个 free usage tier。当然,free usage tier 是给所有用户的,只要你注册了,新用户都享受这个服务,哪怕你一上来就是做生产,我们也会把 free user tier 那部分的费用,帮你从实际的帐单里面扣除。

Q:有没有渠道来申请试用呢?

方国伟:请访问 www.amazonaws.cn 网站,有个提交申请的链接。

Q:AWS 现在还是必须使用外币信用卡才能注册使用吗?

方国伟:AWS 全球账户是需要支持外币信用卡,但国内服务开放后会公布国内的支付方式。

Q:AWS 在国内有没有国内建 AZ?

方国伟:那当然了,我们商用的时候肯定会有多个 AZ。 第一个 region 在北京,所以整个数据中心都会在北京地区,我们是跟合作伙伴合作的。根据我们去年 12 月份发布的计划,第二个 region 会在宁夏。

Q:有没有联系方式?

方国伟:我的微博是 @方国伟 _ 云端,邮箱是 guowfang@amazon.com 。

AWS 能部署应用

Q:AWS 对应用有要求吗,什么样的应用架构适合部署到 AWS 上?除了使用 AWS 的组件之外,对应用本身有没有什么要求,才能实现云应用的高可用性。

方国伟:如果你的应用只是要部署在 AWS 上,这个要求是非常低的,你的应用只要可以部署在虚拟环境,理论上差不多就可以运行在 AWS 上面。但是,如果你的应用要充分利用云计算平台的一些特性,尤其是高弹性、高可靠性、高可用性这些云的特点,那你对应用本身就需要做一些在架构上的调整。今天的讲座更多侧重在高可用性方面,6 月 17 日还有个讲座“如何通过架构设计来体现应用本身的弹性”,这是两个不同的维度来看应用。所以说,如果你要充分利用云平台一些特性,那在应用架构上需要做些调整。( InfoQ 注:6 月 7 日在上海 IC 咖啡 QClub 技术沙龙上,方国伟与 Autodesk 高级软件工程师丁建将分享 AWS 云平台上建立规模应用的实践,你可以与两位专家当面交流,参会者将获得 AWS 纪念 T 恤及 25 美金 AWS 抵扣券,欢迎免费报名。)

Q:哪些 AWS 服务是可以跨 region 的呢?

方国伟:绝大部分 AWS 服务都是在一个 region 里面的,只有很少的服务可以跨 region 的。身份认证和访问控制(IAM),Route53,CloudFront(CDN),web console 是跨 region 的。

案例资料

Q:海外的 AWS 案例,有一些介绍么?

方国伟:请访问 aws.amazon.com 上的 case study 资料,上面有许多案例。

Q:讲座的 PPT 可以提供吗?

方国伟:你回头关注一下我们的博客,我们博客会提供 Link,大家可以去下载的。我们国内会有一个中文的博客,应该是 blog.csdn.net/awschina。(InfoQ 注:在所有注册本期在线课程的用户都会受到答谢 EDM,EDM 中同样有 PPT 下载地址)。


感谢方国伟对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-06-03 02:152040
用户头像

发布了 45 篇内容, 共 15.5 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

macOS Sequoia 15.4 (24E248) Boot ISO 原版可引导镜像下载

sysin

macos

从“新农人”到“买菜团长”,拼多多激发电商就业生态二次繁荣

Alter

人工智能中的RAG技术在测试领域的探索

测试人

人工智能

YashanDB dblink语法

YashanDB

数据库 yashandb

迈向云原生:理想汽车 OLAP 引擎变革之路

镜舟科技

大数据 云原生 OLAP 镜舟数据库 理想汽车

Cursor搭配专业编程显示器:点燃你的代码激情

默语

后 Web时代:AI 代理驱动的互联网

PowerVerse

智能合约 去中心化 web3 AI‘’

百观科技基于阿里云 EMR 的数据湖实践分享

阿里云大数据AI技术

数据库 大数据 OSS OLAP EMR

YashanDB condition语法

YashanDB

数据库 yashandb

YashanDB RegExp语法

YashanDB

数据库 yashandb

电商新趋势,从“真人一键克隆”数字人进军直播间开始

脑极体

AI

Apache SeaTunnel MCP Server:让AI成为你的ETL助手

Apache SeaTunnel

YashanDB constraint语法

YashanDB

数据库 yashandb

如何快速搭建自己的个人网站?Hexo、VuePress 和 WordPress 大比拼!

程序员晚枫

1688商品列表数据接口(1688.item_search)

tbapi

1688商品列表接口 1688API 1688商品数据采集 1688数据采集

1688API系列:1688图片搜索拍立淘接口指南

tbapi

1688图片搜索接口 1688拍立淘接口 1688图片识别接口 1688图片搜索API

YashanDB compile_clause语法

YashanDB

数据库 yashandb

百度推出端到端语音大模型,支持方言、可打断、电话语音成本砍半;雷神 AI 眼镜发布:语音助理+摄像头,1799 元起丨日报

声网

全流程覆盖,闭环管理:中烟创新案卷评审评查系统实现精细化管理

中烟创新

a16z合伙人:语音交互将成为AI应用公司最强大的突破口之一,巨头们在B2C市场已落后太多丨Voice Agent 学习笔记

声网

RAG 调优指南:Spring AI Alibaba 模块化 RAG 原理与使用

阿里巴巴云原生

阿里云 云原生 云原生微服务

深入理解 StarRocks Bitmap 索引和 Bitmap 去重

镜舟科技

StarRocks Bitmap 索引 Bitmap 去重 高基数列 精确去重

新疆中泰携手用友开启智慧司库建设新征程

用友智能财务

财务 会计

西电整体替换SAP!用友BIP支撑装备制造业务运营和成本精细化管控升级!

用友BIP

智能体 数智化 用友BIP 一体化

新疆中泰携手用友开启智慧司库建设新征程

用友BIP

智能体 数智化 用友BIP 智慧司库建设

原生APP开发的性能优势

北京木奇移动技术有限公司

软件外包公司 原生APP开发 APP外包公司

MobPush智能消息推送能力大集结,国内外消息触达通道来了!

MobTech袤博科技

消息推送

macOS Sonoma 14.7.5 (23H527) Boot ISO 原版可引导镜像下载

sysin

macos

SLS 重磅升级:超大规模数据实现完全精确分析

阿里巴巴云原生

阿里云 云原生 日志服务

YashanDB算术运算符

YashanDB

数据库 yashandb

新晋 IoTDB Committer 经验谈:开源代码为用户创造价值

Apache IoTDB

InfoQ在线课堂:基于AWS云平台的高可用应用设计_亚马逊云科技_包研_InfoQ精选文章