如何在AWS云平台上构建千万级用户应用.pdf

上传人:来看看 文档编号:3333079 上传时间:2019-08-13 格式:PDF 页数:39 大小:7.25MB
返回 下载 相关 举报
如何在AWS云平台上构建千万级用户应用.pdf_第1页
第1页 / 共39页
如何在AWS云平台上构建千万级用户应用.pdf_第2页
第2页 / 共39页
如何在AWS云平台上构建千万级用户应用.pdf_第3页
第3页 / 共39页
如何在AWS云平台上构建千万级用户应用.pdf_第4页
第4页 / 共39页
如何在AWS云平台上构建千万级用户应用.pdf_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《如何在AWS云平台上构建千万级用户应用.pdf》由会员分享,可在线阅读,更多相关《如何在AWS云平台上构建千万级用户应用.pdf(39页珍藏版)》请在三一文库上搜索。

1、如何在AWS云平台上 构建千万级用户应用 方国伟 首席云技术顾问 微博:方国伟_云端 亚马逊AWS在线系列讲座 传统企业应用与互联网应用的 最大区别是什么? 架构? 数据库? 编程语言? 开源的工具? 操作系统? 云计算不是有弹性吗? 弹性的确是云计算的一个重要特性 AWS云平台也提供Auto Scaling功能来帮助 用户实现弹性伸缩 但是,应用服务的弹性伸缩需要良好的设 计 应用的架构 使用的服务类型 讨论的两个重点 应用的架构应用的架构 设计设计 使用的服务使用的服务 类型类型 AWS全球基础设施全球基础设施 10 区域(Region) 26 可用区(AZ) 51 边缘站点 存储 S3

2、EBS Glacier Storage Gateway API AWS Global Infrastructure AWS Global Infrastructure 基础服务基础服务 应用服务应用服务 部署和管理部署和管理 网络 VPC Direct Connect ELB Route53 数据库数据库 RDS ElastiCache Dynamo RedShift 内容分发内容分发 CloudFront SES SNS SQS Elastic Transcoder CloudSearch SWF IAM Federation 身份和访问身份和访问 Human Interaction Sup

3、port 区域(Region) 可用区(AZ) 边缘站点 数据分析 Data Pipeline EMR Kinesis EC2 计算 WorkSpaces AppStream 监控监控 CloudWatch 部署和管理部署和管理 BeanStalk Cloud Formation OpsWork CloudTrail Web Console Interaction Command Line Libraries, SDKs 我们以典型的Web应用为例 第一阶段:从一个用户开始 EC2 实例 EIP Amazon Route 53 用户 一个EC2实例 安装了所有相关软件堆栈 Web应用 数据库

4、管理等 一个EIP DNS服务:Route53 最简单的扩展:换个更大的机器 可以使用PIOPS 高I/O实例 高内存实例 高CPU实例 高存储实例 I2.8xlarge M3.2xlarge m1.small 最终都会遇到极限最终都会遇到极限! 第二阶段:多个用户 首先,把单服务器 变成多个 Web层 数据库层 其次,数据库层的 实现方式 DIY vs. 管理服务? SQL vs. NoSQL? Web 实例 数据库 实例 ElasFc IP Amazon Route 53 User 几种不同的选择组合 SQL NoSQL 低成本 高成本 DIY 托管的服务 这个这个AWS上没有上没有 JJ

5、 几种不同的选择组合 SQL NoSQL DIY 托管的服务 大部分应用建议从SQL开始开始 SQL相对成熟,优缺点都比较明确? 大量工具、已有代码,图书资料,技能等 一开始SQL能够满足需求,尤其是百万级用 户量内的 有一些常用的扩展SQL的方法 什么时候要考虑使用NoSQL? 短期内增长大量数据 比如一年5TB以上 应用要求非常低的延时 非关系型数据 非结构化数据 半结构化数据 快速的数据写入 每秒几千个记录 用户数100 数据库层采用RDS服务 Web 实例 ElasFc IP RDS DB 实例 Amazon Route 53 用户 用户数1000 接下来我们处理故 障转移和冗余 添加

6、一个Web实例 ELB 在另一个可用区 (AZ) 启用RDS的多可用 区部署 Web 实例 RDS DB 实例 AcFve (MulF-AZ) Web实例 RDS DB 实例 Standby (MulF-AZ) ELB Amazon Route 53 用户 可用区(AZ) 可用区(AZ) 特性特性 细节细节 可用性可用性 可以为跨可用区(AZ)的实例 提供负载均衡服务 健康检查健康检查 自动检查实例的健康情况,并根 据它来决定分发路由 会话的亲和会话的亲和 性性/粘性粘性 把请求发送给相同的实例 SSL 支持把SSL负载卸载到ELB上 监控监控 CloudWatch提供监控指标 ElasFc

7、Load Balancer 负载均衡服务负载均衡服务 ELB 一百万级用户规模 RDS DB 实例 AcFve (MulF-AZ) 可用区(AZ) 可用区(AZ) RDS DB 实例 Standby (MulF-AZ) ELB RDS DB 实例 Read Replica RDS DB 实例 Read Replica RDS DB 实例 Read Replica RDS DB 实例 Read Replica Web 实例 Web 实例 Web 实例 Web 实例 Web 实例 Web 实例 Web 实例 Web 实例 Amazon Route 53 用户 前面架构设计的小结 到目前为止,基本是

8、用传统的思路 在做应用架构 一般可以应付几十万到一百万用户 级别的访问量 没有充分使用AWS云服务 改变部分工作负载设计方式(一) 减少一点Web和数 据库实例的压力 把静态内容从Web 实例中迁移到S3 把部分数据通过 CloudFront访问 Web 实例 RDS DB实例 AcFve (MulF-AZ) ELB Amazon S3 Amazon CloudFront Amazon Route 53 用户 可用区(AZ) 使用使用S3服务 针对Web的对象数据 存储服务 11个9的持久性 海量存储 适合用来 静态数据(CSS, JS, 图片,视频等) 日志 备份 存放处理的文件 支持多种访

9、问控制方 式 支持数据加密 与多种服务紧密集成 CloudFront EMR Glacier 使用使用CloudFront服务 提供Web Service接口 的CDN服务 支持动态和静态内容 支持流式视频 支持根域(Zone Apex) 支持客户化SSL证书 低TTL(最低为0) 响应时间 服务器负载 响应时间 服务器 负载 响应时间 服务 器负 载 没有CDN 静态内容 使用CDN 动态、静 态内容使 用CDN 改变部分工作负载设计方式(二) 减少一点Web和数 据库实例的压力 使用分布式内存缓 存:ElasFCache 使用DynamoDB Web 实例 RDS DB实例 AcFve (

10、MulF-AZ) ELB Amazon S3 Amazon CloudFront Amazon Route 53 用户 ElasFCache Amazon DynamoDB 可用区(AZ) 使用使用ElasACache服务 托管的Memcached和Redis服务 使用一样的API 从一个节点扩展到多个节点 自我修复(替换失效节点) 非常快(通常是几个毫秒) Memcache使用一个AZ,Redis可以跨AZ复 制 使用AWS的Auto Discovery客户端可以使群 集的伸缩与应用透明 使用使用DynamoDB服务 特性特性 细节细节 可配置的吞吐量可配置的吞吐量 配置读操作性能,写操作性

11、能 可预测的性能可预测的性能 后台存储基于SSD构建,平均延时为 几个毫秒 强一致性强一致性 确保你读取的数据是最新的 故障冗余故障冗余 跨可用区的数据复制 监控监控 与CloudWatch集成 安全安全 与IAM(IdenFty and Access Management)集成 ElasAc MapReduce 与EMR集成做大数据集的复杂数据 分析 给我们的应用加点弹性 A 11月份的流量月份的流量 76% 24% 传统部署容量 11月 百万级用户规模百万级用户规模 Amazon Route 53 用户 Amazon S3 Amazon Cloudfront ELB DynamoDB RD

12、S DB 实例 Read Replica Web 实例 Web 实例 Web 实例 ElasFCache RDS DB 实例 Read Replica Web 实例 Web 实例 Web 实例 ElasFCache RDS DB 实例 Standby (MulF- AZ) RDS DB 实例 AcFve (MulF-AZ) 可用区(AZ) 可用区(AZ) 工欲善其事,必先利其器工欲善其事,必先利其器 管理指标和告警设置 自动化构建 自动化部署 集中化日志管理 AWS OpsWorks AWS CloudFormaFon AWS ElasFc Beanstalk Web App Enterpri

13、se App Database 应用程序生命周期应用程序生命周期 管理和自动化部署管理和自动化部署 的框架的框架 基于模板的资源部署基于模板的资源部署 和管理和管理 自动化资源管理资源管理 简化Web应用部署 Deployment Tools for Faster Development DIY 自己客户化管理和部自己客户化管理和部 署署: EC2, S3, 定制AMI 等 控制 方便 部署和管理服务 前面架构设计的小结 用了多种AWS基础服务 充分利用了多个层次的缓存服务 利用AWS的管理服务 但是架构上没有做好千万级用户量 的准备 面向服务的架构设计(SOA) ) 把服务构建 成为不同的

14、层次或模块, 相互比较独 立并且可以 各自扩展。 松耦合带来灵活性松耦合带来灵活性 越松的耦合,越高的扩展性 使用相对独立的模块服务 把模块设计成为黑盒子 把交互设计成为松耦合方式 尽量使用自带冗余和扩展性的服务,而不是自 建 模块A 模块B 模块A 模块B Q Q 紧耦合 使用使用SQS作为一个缓冲作为一个缓冲 松耦合 不再重新发明轮子 Amazon CloudSearch Amazon SQS Amazon SNS Amazon ElasFc Transcoder Amazon SWF Amazon SES 超过百万级用户超过百万级用户 RDS DB 实例 AcFve (MulF-AZ)

15、ELB RDS DB 实例 Read Replica RDS DB 实例 Read Replica Web 实例 Web 实例 Web 实例 Web 实例 Amazon Route 53 用户 Amazon S3 Amazon Cloudfront Amazon DynamoD B Amazon SQS ElasFCache Worker 实例 Worker 实例 Amazon CloudWatch 其他 实例 其他 实例 Amazon SES 可用区(AZ) 从5百万到千万用户级别的挑战 数据库的性能挑战? 联邦(根据功能把数据库分成多个库)? 分表/分片(把数据库表分成多个,或多个服务 器

16、上)? 把部分数据迁移至NoSQL (如常用的/“热”表, 大量快速写数据等)? 应用的性能挑战? 确保有监控、报警等服务? 及时获取客户的反馈? 逐步调优各个模块服务? 总结 只有针对云设计的应用才能充分发挥云计 算的各种优势 充分使用AWS上能够自扩展、自冗余的服 务(ELB,S3,SNS,SQS,SES等) 采用多种不同的缓存技术和服务 综合使用SQL和NoSQL数据库 尽量自动化管理你的基础设施 尽量不要重新发明轮子 SOA,SOA,SOA 参考资料 参考资料 AWS官网 hdp:/ AWS参考架构 hdp:/ AWS白皮书 hdp:/ AWS英文博客 hdp:/ 在线动手实验 hdp:/ 谢谢! 中文站点 中文博客 微博 微信 AWS 中国

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1