数据库1 分钟抗住 10 亿请求!某些 App 怎么做到的?| 原力计划( 二 )
本文插图
把数据库划分为读库和写库 , 读库可以有多个 , 通过同步机制把写库的数据同步到读库 , 使用数据库中间件(Mycat) , 通过它来组织数据库的分离读写 。
瓶颈:业务逐渐变多 , 不同业务之间的访问量差距较大 , 不同业务直接竞争数据库 , 相互影响性能 。
本文插图
第五次演进:数据库按业务分库
本文插图
把不同的业务数据保存到不同的数据库中 , 业务之间的资源竞争降低 , 访问量大的业务可以部署更多的服务器 。
瓶颈:用户数量增长 , 单机的写库会逐渐达到性能瓶颈 。
本文插图
第六次演进:把数据库的大表拆成小表
其他环节同上 。
本文插图
比如针对订单生成 , 可以按照月份 , 甚至小时创建表 。
这种做法可以称作分布式数据库 , 但逻辑上仍然是一个完整的数据库整体 , 现在有一种架构叫MPP(大规模并行处理) , 针对于各种这类问题的使用场景 。
瓶颈:数据库和tomcat都可以大规模水平扩展 , 最终单机的nginx会成为瓶颈 。
本文插图
第七次演进:使用LVS让多个Nginx负载均衡
LVS是软件 , 运行在操作系统内核态 , 可以对TCP请求或高层网络协议进行转发 , 分发的性能远高于Nginx , 大概十几万 。
F5是硬件 , 跟LVS做的事情类似 , 但性能更高 , 而且价格昂贵 。
本文插图
这种方式 , 用户可达千万或上亿级别 。
瓶颈:LVS达到瓶颈 , 或用户分布在不同的地区 , 与服务器机房的距离不同 , 导致访问延迟的不同 。
本文插图
第八次演进:DNS轮询实现机房间的负载均衡
本文插图
在DNS中配置一个域名对应多个IP 。
每个IP地址对应到不同的机房里的虚拟IP 。
做到机房级别的水平扩展 , 已经是从请求并发量来讲 , 过亿的处理方案 , 十几亿或几十亿的并发 , 暂时没人考虑 。
瓶颈:检索 , 分析的需求越来越多 , 单靠数据库无法解决各种各样的需求 。
本文插图
第九次演进:引入NoSQL数据库和搜索引擎
本文插图
数据量多到一定规模的时候 , 关系型数据库不再适用 , 而且数据量较大的查询 , MySQL不一定能运行出结果 , 对于海量数据的处理 , 通过分布式文件系统HDFS来存储 , 对于key-value类型的数据 , 通过HBase、Redis等处理 , 对于抓取查询 , 可以通过ES等解决 , 对于多维分析 , 通过kylin、Druid等解决 。
引入更多的组件同时必然极大的提高系统复杂度 , 不同的组件的数据还需要同步 , 需要考虑一致性问题 。
推荐阅读
- 央视财经|美国大胃王10分钟吃掉75个热狗!第13次卫冕成功
- 手机|手机经常出现这 4 种故障?别花“冤枉钱”找人修,分分钟学会就能解决
- 封面新闻|美大胃王10分钟吃75个热狗 第13次卫冕冠军
- 值守|东湖边24小时轮岗值守易渍水点,“龙吸水”20分钟排水畅通主干道
- 互联网科技秀15分钟缓解颈椎压力 图拉斯按摩器就是让你舒服又自在
- 野区|十分钟破半经济的打法是全局观打法,只需要做到三点
- 缩短|北大医院:核酸检测由6个小时出报告缩短到45分钟
- 再见游戏|Caps再次拿出绝活,“中单大嘴直接25层书,每分钟伤害高达1476”
- 玩加电竞APP|英雄联盟:Mole佐伊15分钟超神,开始读书,V5第一局碾压拿下ES
- 只要快充技术能够达到一定的高度,电池容量高的也不过才4300多毫安,只需要13分钟就能充满
