数据库1 分钟抗住 10 亿请求!某些 App 怎么做到的?| 原力计划
本文插图
作者 | 阿凡博客
出品 | CSDN博客
封图 | 视觉中国
某些App怎么扛住1分钟10亿请求? 架构的演进路线 百万级并发:1秒100万次请求 。
千万级并发:一分钟6亿次请求 , 差不多就是需求的极限 。
架构的设计和架构优化要符合需求本身 , 不能无限制优化 。
基本概念
(1)分布式(系统中 , 多个模块在不同服务器上部署)
(2)集群(一个软件部署在多台服务器 , 并作为一个整体 , 提供一类服务)
(3)高可用(系统中部分节点失效 , 其他节点能够接替它继续工作或有相应的处理预案)
(4)负载均衡(把请求均匀的发到多个节点上)
架构演进:
本文插图
单机架构
本文插图
DNS服务器 , 做域名解析的服务器 , 作用是 , 经过DNS将www.taobao.com这类的域名转换为实际IP地址 , 浏览器转而访问这个IP对应的tomcat 。
瓶颈:用户增长 , tomcat和数据库之间竞争资源 , 单机性能不足以支撑业务 。
本文插图
第一次:Tomcat和数据库分开部署(最常见架构)
本文插图
Tomcat和数据库分别独占服务器资源 , 显著提高两者各自性能(tomcat服务器找一个内存大的 , DB服务器找一个硬盘大的 , 带宽更宽的) 。
瓶颈:用户量增长 , 数据库并发读写 , 尤其是读 , 成为瓶颈 。
注意 , 不会通过数据库集群解决 。
本文插图
第二次演进:引入本地缓存甚至分布式缓存
本文插图
在Tomcat服务器上(Java程序所在的地方)加入缓存 , 可以把绝大多数请求(尤其是查询)在访问数据库前拦截掉 。
本文插图
Redis放在Tomcat服务器上 , 如果不够用 。
那么Redis可以自己放在一个服务器 , 也可以多弄几台Redis服务器 , 配置成主从同步(提升可用性可以加上哨兵) 。
瓶颈:用户数量增长 , 并发压力主要在单机的tomcat上 , 响应逐渐变慢 。
本文插图
第三次演进:引入反向代理和负载均衡
本文插图
使用反向代理 , 将大量的用户请求 , 均匀分发到每个Tomcat中(一般来讲 , Tomcat对应100个并发 , nginx对应5万个并发 , 具体的要看服务器性能) 。
瓶颈:应用服务器可支持的并发量大大增加 , 缓存能力也可以轻易扩展 , 并发量增长意味着更多请求穿透到数据库 , 单机的数据库最终成为瓶颈 。
本文插图
第四次演进:数据库读写分离
推荐阅读
- 央视财经|美国大胃王10分钟吃掉75个热狗!第13次卫冕成功
- 手机|手机经常出现这 4 种故障?别花“冤枉钱”找人修,分分钟学会就能解决
- 封面新闻|美大胃王10分钟吃75个热狗 第13次卫冕冠军
- 值守|东湖边24小时轮岗值守易渍水点,“龙吸水”20分钟排水畅通主干道
- 互联网科技秀15分钟缓解颈椎压力 图拉斯按摩器就是让你舒服又自在
- 野区|十分钟破半经济的打法是全局观打法,只需要做到三点
- 缩短|北大医院:核酸检测由6个小时出报告缩短到45分钟
- 再见游戏|Caps再次拿出绝活,“中单大嘴直接25层书,每分钟伤害高达1476”
- 玩加电竞APP|英雄联盟:Mole佐伊15分钟超神,开始读书,V5第一局碾压拿下ES
- 只要快充技术能够达到一定的高度,电池容量高的也不过才4300多毫安,只需要13分钟就能充满
