58
© 2017, Amazon Web Services, Inc. or its Affiliates. All rights reserved. 云计算环境下的可扩展架构 -满足1,000万用户的扩展性 Leon 李磊 AWS 解决方案架构师

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

  • Upload
    leon-li

  • View
    144

  • Download
    16

Embed Size (px)

Citation preview

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

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

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

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

AWS 解决方案架构师

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

一些基础概念…

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

区域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)

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

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)

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

节点网络

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

平台服务

基础服务

全球基础设施

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

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

平台服务

网络基础服务

基础设施

计算(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

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

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

开始起步

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

第1天, 1个用户

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

• Web app•••

DatabaseManagement…

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

AmazonEC2

instance

Elastic IP

AmazonRoute 53

User

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

••••

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

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

••••

CPU优化实例存储优化实例

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

满足 终的需要

c3.8xlargem3.2xlarge

t2.micro

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

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

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

c4.large实例家族

实例世代

实例大小

EC2 实例: 类型与大小

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

实例大小

c4.8xlarge 2 - c4.4xlarge

4 - c4.2xlarge

8 - c4.xlarge

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

第1天, 1个用户

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

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

AmazonRoute 53

Elastic IP

EC2Instance

User

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

第2天, 用户数>1

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

• Web• 数据库

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

InstanceDatabaseInstance

Elastic IP

AmazonRoute 53

User

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

托管的服务

数据库运行于Amazon EC2

需要自行管理

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

AmazonDynamoDB

托管的NoSQL服务使用SSD存储

无缝扩展零管理

Amazon RDSMicrosoft SQLServer, Oracle,

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

管理模式

AmazonRedshift

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

快速,强大以及易于扩展

数据库服务的选择

自管理

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

高可用性架构的基础构件*: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读副本,无缝的在可用区域间复制数据

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

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

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

特性 描述

预分配吞吐量

可预测的性能

强大的一致性

容错性

监控

安全

Amazon EMR

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

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

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

跨可用区复制数据

与Amazon CloudWatch集成

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

与Amazon EMR结合

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

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

Amazon RDS for Aurora

兼容MySQL

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

高可扩展性和安全性

q 5X better performance than

standard MySQL

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

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

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

为什么通常从SQL开始?

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

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

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

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

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

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

为什么需要 NoSQL?

••••••

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

高度的非关系数据

需要无模式的数据结构

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

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

用户规模 > 100

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

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

AmazonRoute 53

RDS DBinstance

User

Elastic IP

Webinstance

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

用户规模 > 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

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

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

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

高可用性架构设计原则

Design for failure, and nothing will really fail.

q 假定任何事物都会失效

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

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

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

基于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 …

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

••

特性

可用性

健康检查

会话的粘性

SSL

监控

说明

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

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

请求路由到同一个实例

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

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

ELB Balancer

Elastic Load Balancing

创建高度可扩展的应用

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

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

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

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

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

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

AmazonRoute 53

User

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

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

负载转移/动静分离

ELBBalancer

Web Instances

RDS DB InstanceActive (Multi-AZ)

Availability Zone

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

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用于超长时间的存储,

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

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

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

负载转移

让我们来减轻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

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

Amazon ElastiCache•

••••••

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

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

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

负载转移

让我们来减轻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

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

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

始的话题…

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

自动扩展!

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

特性

控制

与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

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

Sunday Monday Tuesday Wednesday Thursday Friday Saturday

典型的 Amazon.com一周的流量

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

Sunday Monday Tuesday Wednesday Thursday Friday Saturday

典型的 Amazon.com一周的流量

Provisioned capacity

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

November

Amazon.com 11月份的流量

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

November

Amazon.com 11月份的流量Provisioned capacity

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

Amazon.com 11月份的流量76%

24%

Provisioned capacity

November

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

Amazon.com 11月份的流量

November

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

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

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

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)

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

使用自动化部署

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

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

AWS DevOps服务

运维

Elastic Beanstalk

CloudWatchCloudFormationCodeDeploy

CodePipeline

Opsworks

Elastic Container Service

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

Lambda

CloudTrail

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

持续部署

自动化运维

配置管理

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

日志管理

CodeCommit

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

蓝绿部署

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

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

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

• 负载迁移结束

• 蓝环境已经没有负载

• 蓝环境被销毁

• 新环境支撑100%的负载

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

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

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

微服务模式

单体应用 微服务架构

UI

Business Logic

Data Access Layer

DB

UI

CatalogService

Account Service Recommendation Service

Customer Service

DB DBDB

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

Docker

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

Amazon ECS

ALB ALB

AZ 1 AZ 2

user / scheduler

Scheduler

Cluster State Service

Placement Engine

Event Stream

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

什么是Cloud Native?

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

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

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

Thank you!The future is today.