在 AWS 上设计支持百万级到千万级用户的系统

 

一、需求沟通

1、用例
1. 用户进行读或写请求

  • 服务进行处理,存储用户数据,然后返回结果

2. 服务需要从支持小规模用户开始到百万用户

  • 在我们演化架构来处理大量的用户和请求时,讨论一般的扩展模式服务高可用

2、算数

 

二、答案

1、概要设计

Web Server用来读、写、存储

 

2、扩展设计,用户+

  • 运用纵向扩展: 选择一台更大容量(性能更好)的服务器
  • 密切关注指标,确定何时扩容:取决于用户的增长速度和扩容的难易程度,一般达到80%就影响性能了。
  • 使用基本监控来确定瓶颈:CPU、内存、IO、网络等:CloudWatch, top(如下图), nagios, statsd, graphite等

3、扩展设计,用户++

这一步是把计算和存储分开,用Web Server来算,用数据库来存。

4、扩展设计,用户+++

这一步是把Read API和Write API从Web Server里面分离出来,另外加上LB, DNS, CDN。

5、扩展设计,用户++++

这一步数据库存储读写分离,分成读数据库和写数据库,对于Read API加上缓存

6、扩展设计,用户+++++

自动扩容:全程监控,流量突然上去了,把手头有的机器全部堆上去,当流量下来的时候,再把机器自动地撤下来。

7、扩展设计,用户++++++

(1)Write API和Write API Async数据是完全相同的,差别是时效不一样,Write API可能时效只有20秒,时间一过,就写不进去了,但是Write API Async得到的是全部数据,放到消息队列里,然后通过Worker Service将数据异步写入数据库中。

(2)将NoSQL从对象存储中拆出来

(3)数据库做分片儿

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值