零到千万可扩展架构 AWS Architecture Overview

Preview:

Citation preview

© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved.

云计算环境下的可扩展架构

-满足1,000万用户的扩展性Leon李磊

AWS 解决方案架构师

一些基础概念…

区域US-WEST (Oregon)

EU (Ireland)

ASIA PACIFIC(Tokyo)

US-WEST (N. California)

SOUTH AMERICA(Sao Paulo)

US-EAST (N. Virginia)

AWS GOVCLOUD (US)

(Sydney)

ASIA PACIFIC(Singapore)

CHINA (Beijing)

ASIA PACIFIC

EU (Frankfurt)

US-WEST (Oregon)

EU (Ireland)

ASIA PACIFIC(Tokyo)

US-WEST (N. California)

SOUTH AMERICA(Sao Paulo)

US-EAST (N. Virginia)

AWS GOVCLOUD (US)

(Sydney)

ASIA PACIFIC(Singapore)

CHINA (Beijing)

ASIA PACIFIC

可用区EU (Frankfurt)

节点网络

平台服务

基础服务

全球基础设施

FoundationServices

Compute(VMs, Auto-scalingand Load Balancing)

Storage(Object, Blockand Archive)

Security &Access Control Networking

Infrastructure Regions CDN and Points of PresenceAvailability Zones

Applications

PlatformServices

Databases

Relational

No SQL

Caching

Virtual Desktops

Analytics

Hadoop

Real-time

DataWarehouse

DataWorkflows

Mobile Services

Identity

Sync

Mobile Analytics

Notifications

Collaboration and Sharing

Deployment & Management

Containers

Managed User Directories

Dev/ops ToolsResource Templates

Usage Tracking

Monitoring and Logs

应用

App Services

Queuing

Orchestration

App Streaming

Transcoding

Email

Search

平台服务

网络基础服务

基础设施

计算(VMs, Auto Scalingand Load Balancing)

区域

安全与存取控制

CDN与 PoP

存储(Object, Blockand Archive)

可用区

应用 虚拟桌面 协同与分享

数据库

Relational

No SQL

Caching

分析

Hadoop

Real-time

DataWarehouse

DataWorkflows

应用服务

Queuing

Orchestration

App Streaming

Transcoding

Email

Search

移动服务

Identity

Sync

Mobile Analytics

Notifications

部署与管理

Containers

Managed User Directories

Dev/ops ToolsResource Templates

Usage Tracking

Monitoring and Logs

现在让我们就从一个用户的第一天

开始起步

第1天, 1个用户

• 1个Amazon EC2实例– 全栈服务器

• Web app•••

DatabaseManagement…

• 1个Elastic IP• Amazon Route 53用于DNS

AmazonEC2

instance

Elastic IP

AmazonRoute 53

User

••••

“我们需要更强大的服务器”简单的方法

使用预配置 IOPS高 I/O实例内存优化实例

••••

CPU优化实例存储优化实例

轻松地改变实例的类型与规格

满足 终的需要

c3.8xlargem3.2xlarge

t2.micro

EC2 实例: 家族与世代

通用类型: M1, M3, M4计算优化型: C1, CC2, C3, C4, C5内存优化型: M2, CR1, R3, X1,R4存储密集型: HS1, D2

I/O优化型: HI1, I2

GPU: CG1, G2

Micro: T1, T2

c4.large实例家族

实例世代

实例大小

EC2 实例: 类型与大小

实例大小

c4.8xlarge 2 - c4.4xlarge

4 - c4.2xlarge

8 - c4.xlarge

第1天, 1个用户

• 我们可能支持几百个到几千个用户,基于应用的复杂性与网络流量

• 没有故障转移• 没有冗余• 太多的鸡蛋在一个篮子里

AmazonRoute 53

Elastic IP

EC2Instance

User

第2天, 用户数>1

首先,让我们将单个服务器分成多个

• Web• 数据库

– 确定需要使用数据库服务?Web

InstanceDatabaseInstance

Elastic IP

AmazonRoute 53

User

托管的服务

数据库运行于Amazon EC2

需要自行管理

解决软件的许可证问题 (BYOL)

AmazonDynamoDB

托管的NoSQL服务使用SSD存储

无缝扩展零管理

Amazon RDSMicrosoft SQLServer, Oracle,

MySQL,PostgreSQL,Amazon Aurora灵活的许可证

管理模式

AmazonRedshift

大规模并行的PB级别的数据仓库服务

快速,强大以及易于扩展

数据库服务的选择

自管理

高可用性架构的基础构件*:Amazon RDS

Relational Database ServiceDatabase-as-a-Service; 无需安装和管理数据库实例可扩展和高容错的配置

按需付费的许可方式以及自带许可

Multi-AZ SLA: 99.95%特点 细节

平台支持 MySQL, SQL Server, Oracle, PostgreSQL

预配置 从默认配置即可开始使用

自动补丁升级 自动保持你的数据平台 新

存储和备份 大3TB的数据库存储,自动备份以及按照时间点恢复

预配置IOPS 根据需求确定IO吞吐量25,000 IOPS for Oracle; 30,000 IOPS for MySQL; 10,000 for SQL Server

故障转移 使用Multi-AZ,可以自动切换至备用数据库实例

读复制 简便的创建MySQL读副本,无缝的在可用区域间复制数据

Amazon DynamoDB• 托管的、吞吐量可调整的 NoSQL数据库

• 快速、可预测的性能• 全分布式、容错体系结构• JSON支持 (新特性)• 项目支持高达400 KB (新特性)

特性 描述

预分配吞吐量

可预测的性能

强大的一致性

容错性

监控

安全

Amazon EMR

向上或向下调整读/写能力

基于SSD的基础设施提供了平均个位数(毫秒)的延迟

确保你读取的是 近更新过的数据

跨可用区复制数据

与Amazon CloudWatch集成

与AWS Identity and AccessManagement (IAM)集成针对大规模数据的复杂分析可

与Amazon EMR结合

高可用性架构的基础构件:Amazon Aurora

Amazon RDS for Aurora

兼容MySQL

高可用性、数据持久性和容错性

高可扩展性和安全性

q 5X better performance than

standard MySQL

如何选择所需要的数据库技术?SQL? NoSQL?

为什么通常从SQL开始?

• 基于成熟的技术• 大量的资源,代码、社区、图书、经验、工具等• 清晰的可扩展性模式

• 打算在你拥有1,000万用户的时候还在依赖SQL?

*除非你所做的事情过于特殊,你总会在你的架构中找到SQL适合的地方

假设数据规模在几个TB(>5),或者是数据密集型的工作负载,那么你应该考虑NoSQL!

为什么需要 NoSQL?

••••••

实现“非常”低延迟的应用元数据驱动的数据集合

高度的非关系数据

需要无模式的数据结构

大规模的数据 (在TB这个级别)快速的数据采集 (数千条纪录/秒)

用户规模 > 100

首先,让我们将单个服务器分拆成多个:• Web• 数据库

– 使用Amazon RDS让你更轻松一点

AmazonRoute 53

RDS DBinstance

User

Elastic IP

Webinstance

用户规模 > 1,000

接下来,让我们解决缺少故障转移和冗余的问题:

• Elastic LoadBalancing (ELB)

• 另外的Web实例–部署在另外的可用区

• RDS多可用区(AZ)

WebInstance

RDS DB InstanceActive (Multi-AZ)Availability Zone

WebInstance

RDS DB InstanceStandby (Multi-AZ)Availability Zone

ELBBalancer

AmazonRoute 53

User

“Everything fails, all the time.”沃纳·威格尔Werner Vogels - 亚马逊 CTO

高可用性架构设计原则

Design for failure, and nothing will really fail.

q 假定任何事物都会失效

q 尽 大可能避免架构中的单故障节点

q 尽可能采用容错的服务作为架构部件

基于AWS服务构建高可用性架构

初始设计就是高可用和容错的服务 通过正确的架构设计既可实现高可用的服务

a Amazon Route53

a Amazon CloudFront

a Elastic Load Balancing

a Amazon S3

a Amazon DynamoDB

a Amazon Kinesis

a Amazon SQS

a Amazon SNS

a Amazon SES

a Amazon SWF

a …

4 Amazon EC2

4 Amazon EBS

4 Amazon RDS

4 Amazon ElastiCache

4 Amazon VPC

4 …

••

特性

可用性

健康检查

会话的粘性

SSL

监控

说明

跨多个可用区的实例上的负载均衡

自动检查实例的健康状况,启动或者关闭服务

请求路由到同一个实例

灵活的加密支持,支持SSL从Web和应用服务器卸载

为Amazon CloudWatch提供检测数据,得到请求处理日志

ELB Balancer

Elastic Load Balancing

创建高度可扩展的应用

负载可分布在多个可用区的EC2实例之上

RDS DB InstanceActive (Multi-AZ)

Availability Zone Availability Zone

RDS DB InstanceStandby (Multi-AZ)

RDS DB InstanceRead Replica

RDS DB InstanceRead Replica

RDS DB Instance RDS DB InstanceRead Replica Read Replica

WebInstance

WebInstance

WebInstance

WebInstance

WebInstance

WebInstance

WebInstance

WebInstance

AmazonRoute 53

用户规模 > 10,000s–100,000s

User

ELBBalancer

也许目前的水平已经不错,但我们可以继续关注“性能”和“效率”,我们还可以优化的更好

AmazonRoute 53

User

让我们来减轻Web和数据库的负载:• 将静态内容从Web实例转移到Amazon S3和Amazon CloudFront

• 将会话/状态和DB缓存转移到Amazon ElastiCache或者Amazon DynamoDB

负载转移/动静分离

ELBBalancer

Web Instances

RDS DB InstanceActive (Multi-AZ)

Availability Zone

Amazon S3Amazon S3是面向互联网的云存储:

•••

••

基于对象的存储

11个9的耐久性适合以下场景:– 静态资产 (CSS, JS,图片,视频)– 备份

– 日志

– 待处理的文件

无限的扩展能力

对象的尺寸高达 5 TB

•••••

•••成本是 S3的 1/3

Amazon S3

用于托管静态网站

支持细粒度的权限控制

与Amazon CloudFront的结合Amazon EMR的集成充当 S3, CloudFront, Billing, ELB, AWSCloudTrail等的日志端节点支持静态以及传输中加密

仅仅是冗余存储成本的1/3Amazon Glacier f用于超长时间的存储,

Respon

seTime

Server

Load

Respon

seTime

Respon

seTime

Server

Load

VolumeofData

Delivered(Gbps)

Serve

rLoa

d

Amazon CloudFrontAmazon CloudFront是可扩展的内容分发网络服务:

••••••••

在边缘节点缓存静态内容以实现更快的交付

有助于降低基础设施的负荷

动态和静态的内容

流媒体视频

根域名(Zone apex)支持自定义SSL证书低的 TTLs (短至0秒)降低获得源数据的成本(AmazonS3 / Amazon EC2和Amazon CloudFront)

• 与Amazon EC2, Amazon S3, Elastic LoadBalancing和Amazon Route 53的协同优化

No CDN CDN for StaticContent

CDN for Static&DynamicContent

100

80706050403020

8:00AM

9:00AM

10:00 11:00 12:00AM AM PM

1:00PM

2:00PM

3:00PM

4:00PM

5:00PM

6:00PM

7:00PM

8:00PM

9:00PM

负载转移

让我们来减轻Web和数据库的负载:• 将静态内容从Web实例转移到Amazon S3和Amazon CloudFront

• 将会话/状态和DB缓存转移到 AmazonElastiCache或者Amazon DynamoDB

AmazonCloudFront

AmazonRoute 53

User

Amazon S3

DynamoDB

ELBBalancer

Web Instances

ElastiCache

RDS DB InstanceActive (Multi-AZ)

Availability Zone

Amazon ElastiCache•

••••••

托管的Memcached与 Redis– 与传统的开源的项目Memcached有 Redis相同的API从一个到多个节点的扩展

自我修复 (替代死掉的实例)非常快 (通常个位数的毫秒级别或者更少 )Memcache设置在单个的AZ,没有持久性以及复制功能对于Redis可以设置在多个AZ间复制以提供持久性使用AWSAuto Discovery客户端在不影响应用的前提下简化集群的增长和收缩

负载转移

让我们来减轻Web和数据库的负载:• 将静态内容从Web实例转移到Amazon S3和Amazon CloudFront

• 将会话/状态和DB缓存转移到 AmazonElastiCache或者Amazon DynamoDB

AmazonCloudFront

AmazonRoute 53

User

Amazon S3

DynamoDB

ELBBalancer

Web Instances

ElastiCache

RDS DB InstanceActive (Multi-AZ)

Availability Zone

现在我们的Web层已经变得更轻巧,我们可以从新审视我们开

始的话题…

自动扩展!

特性

控制

与AmazonCloudWatch

的集成

实例类型

说明

设定 小和 大实例池的尺寸

利用CloudWatch驱动扩展

对于按需实例和竞价实例运行Run AutoScaling。与VPV兼容

Auto Scaling

计算集群自动的按需调整

Auto Scaling Group

aws autoscaling create-auto-scaling-group--auto-scaling-group-nameMyGroup--launch-configuration-nameMyConfig--min-size 4--max-size 200--availability-zones us-west-2c, us-west-2b

EC2 EC2

Sunday Monday Tuesday Wednesday Thursday Friday Saturday

典型的 Amazon.com一周的流量

Sunday Monday Tuesday Wednesday Thursday Friday Saturday

典型的 Amazon.com一周的流量

Provisioned capacity

November

Amazon.com 11月份的流量

November

Amazon.com 11月份的流量Provisioned capacity

Amazon.com 11月份的流量76%

24%

Provisioned capacity

November

Amazon.com 11月份的流量

November

Auto Scaling让你可以做到这一切!

Availability Zone

AmazonRoute 53

用户规模 > 500,000+

User

Amazon S3

AmazonCloudFront

Availability Zone

ELBBalancer

DynamoDB

Read Replica

WebInstance

WebInstance

WebInstance

ElastiCacheRead Replica

WebInstance

WebInstance

WebInstance

ElastiCacheRDS DB Instance RDS DB InstanceStandby (Multi-AZ)

RDS DB Instance RDS DB InstanceActive (Multi-AZ)

使用自动化部署

基础架构的管理已经成为我们的一项重要的工作。可以用工具来自动执行重复性的任务:• 用工具管理AWS资源• 用工具管理实例之上的软件和配置• 针对日志和用户行为进行自动化的数据分析

AWS DevOps服务

运维

Elastic Beanstalk

CloudWatchCloudFormationCodeDeploy

CodePipeline

Opsworks

Elastic Container Service

监控搭建部署测试构建开发

Lambda

CloudTrail

版本管理 持续集成持续交付

持续部署

自动化运维

配置管理

自动化监控基础设施即代码

日志管理

CodeCommit

蓝绿部署

• 当前环境(蓝环境)支撑100%的负载

• 新环境(绿环境)建立并投入使用,接管10%的负载

• 负载逐步由蓝环境迁移到绿环境

• 负载迁移结束

• 蓝环境已经没有负载

• 蓝环境被销毁

• 新环境支撑100%的负载

进一步的提升,划分成不同的Web/App层

微服务模式

单体应用 微服务架构

UI

Business Logic

Data Access Layer

DB

UI

CatalogService

Account Service Recommendation Service

Customer Service

DB DBDB

Docker

Amazon ECS

ALB ALB

AZ 1 AZ 2

user / scheduler

Scheduler

Cluster State Service

Placement Engine

Event Stream

什么是Cloud Native?

Managed

InternetMobile appsAWS Lambda

functions

AWS

API Gateway cache

Endpoints on Amazon EC2

Any other publicly accessible endpoint

Amazon CloudWatch

Amazon CloudFront

API Gateway

API GatewayOther AWS

services

AWS Lambda functions

AWS上的微服务无服务器化架构: API Gateway +Lambda

Thank you!The future is today.

Recommended