导图社区 超大流量分布式系统架构解决方案
这是一篇关于超大流量分布式系统架构解决方案的思维导图,主要内容有服务化架构、全链路压测、流控方案、读/写优化方案、分库分表方案。
这是一篇关于基于产品的项目管理的思维导图,主要内容有离线产品管理、在线产品管理、产品体系模型。
社区模板帮助中心,点此进入>>
英语词性
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
法理
刑法总则
【华政插班生】文学常识-先秦
【华政插班生】文学常识-秦汉
文学常识:魏晋南北朝
【华政插班生】文学常识-隋唐五代
【华政插班生】文学常识-两宋
超大流量分布式系统架构解决方案
服务化架构
架构演变过程
单机架构
将WebServer、文件服务器和数据服务器全部部署在同一台物理服务器上,并将所有的业务逻辑耦合在同一个单体应用中
集群架构
独立部署WebServer,文件服务器,数据库服务器
通过增加新的服务器来分散并发访问流量,以增加WebServer应用服务器节点数的横向扩容
考虑负载均衡,例如Nginx
缓存技术
数据库读写分离
垂直拆分业务子系统
目标是降低业务耦合度,高内聚低耦合
业务垂直化,根据业务功能的不同拆分出多个业务模块
由不同的业务团队负责承建,分而治之,独立部署
服务化架构演进
避免共享业务重复建设,产生较多的冗余代码
公共资源(例如数据库连接数)的开销随着系统的横向扩展被争抢
太多人共同维护一套系统,不利于业务团队人员细分职责,造成代码版本冲突
服务化=微服务
细化了服务拆分过程中的粒度,粒度越细,业务耦合度越小,容错性就越高,利于后期扩展
粒度建议以子系统为单元
集群与分布式的区别
集群是指将多台服务器集中在一起,目的是实现同一业务,串联业务
分布式是指将不同的业务分布在不同的地方,目的是实现不同的业务,并联业务
前后端分离架构演进
API网关服务
分布式多活数据中心架构演进
服务治理需求
服务化和RPC协议
基于服务治理框架Dubbo实现服务化
因超时和重试引起的雪崩
服务治理的意义
服务化分布式事务问题
注册中心性能瓶颈
分布式多活架构的服务就近调用方案
服务治理调用链
Dapper
调用链方案
非侵入式运行期AOP方案实现数据采集上报
调配采样率
全链路压测
全链路压测的意义
区分压测流量
流量打标
在链路上下文中传递压测标记
Mock
压测数据的隔离方案
发起大规模压测流量
数据构造平台
自研经验
流控方案
限流的意义
限流方案
常见算法
Guava平均速率限流
接入层限流
应用层限流(限时抢购限流方案)
基于时间分片的削峰方案
活动分时段
答题验证
基于消息队列的解耦、削峰、最终一致性方案
消息队列解耦
消息中间件
消息队列的案例
读/写优化方案
本地缓存
本地缓存的痛点
off-head技术
Redis
Jedis客户端
RedisCluster模式实现Sharding
高并发读
多级缓存
缓存穿透思考
RedisCluster模式读写分离
高并发写
InnoDB行锁
Redis乐观锁
嵌入Lua脚本
AliSQL数据库
分库分表方案
关系型数据库
瓶颈
大量的并发读/写操作
单表存储数据量过大
读写分离
主从数据库策略,[主数据库]负责写操作,写数据自动同步到[从数据库],用户查询[从数据库]
缓解并发读/写问题
垂直分库
根据业务的垂直划分,将原本冗余在单库中的数据表拆分到不同的业务库中,实现分而治之的数据管理和读/写操作
水平分库和水平分表
水平分表就是将原本冗余在单库中的单个业务表拆分为N个逻辑相关的业务子表,不同的业务子表各自负责存储不同区间的数据,对外形成一个整体
水平分库就是将水平分表后的业务子表按照某种特定的算法和规则分散到N个逻辑相关的业务子库中
缓解单表存储数量过大的问题
MySQL Sharding(分布式)与MySQL Cluster(集群)
Sharding中间件
中间件对比
Shark
Shark分库分表的数据路由
分库分表的影响
SequenceID
Solr多维度复杂条件查询
企业级搜索应用服务器
数据库HA方案
配置中心完成主备切换
Keepalived完成主备切换
保障主备切换的数据一致性
冗余表需求
冗余表方案
数据最终一致性方案