高性能架构模式
2020-04-23 14:17:46 49 举报
AI智能生成
高性能架构模式设计
作者其他创作
大纲/内容
高可用
理论<br>
ACID
原子性(A)
一致性(C)
数据库一致性
隔离性(I)
持久性(D)
CAP
一致性(Consistency)
可用性(Availability)
分区容忍性(Partition Tolerance)
BASE
Basically Available
Soft state
Eventually consistent
存储<br>
主备复制
主从复制
双机切换<br>
互连式
中介式
连接管理更简单
状态决策更简单
模拟式
主主复制
数据集群<br>
数据集中集群
数据分散集群
分配算法<br>
单独服务器
集群选举
数据分区
数据量
分区规则<br>
复制规则<br>
集中式
互备式
独立式
计算
主备
冷备
温备
主从
集群
负载均衡集群<br>
非对称集群
任务分配策略更加复杂
角色分配策略实现比较复杂
异地多活
架构模式
同城异区
跨城异地
跨国异地
为不同地区用户提供服务
只读类业务做多活
设计技巧
保证核心业务的异地多活
保证核心数据最终一致性
尽量减少异地多活机房的距离,搭建高速网络
尽量减少数据同步,只同步核心业务相关的数据
保证最终一致性,不保证实时一致性
采用多种手段同步数据
消息队列方式
二次读取方式
存储系统同步方式
回源读取方式
重新生成数据方式
只保证绝大部分用户的异地多活
设计步骤
1. 业务分级
访问量大的业务
核心业务
产生大量收入的业务
2. 数据分类
数据量
唯一性
实时性
可丢失性
可恢复性
3. 数据同步
存储系统同步<br>
消息队列同步
重复生成
4. 异常处理
多通道同步
同步和访问结合
日志记录
用户补偿
接口故障
降级
系统后门降级
独立系统降级
<br>
熔断
限流
基于请求限流
基于资源限流
排队
架构模版
<br>
存储层
SQL
MySQL,PG
淘宝TDDL,百度的 DBProxy
SQL存储平台
NoSQL
MC,redis,MongoDB
NoSQL集群
NoSQL存储平台
小文件存储<br>
大文件存储
开发层<br>
开发框架
Web 服务器
容器Docker
服务层
配置中心
服务中心
服务名字系统
服务总线系统
消息队列
网络层
负载均衡
DNS
Nginx,LVS,F5
CDN
多机房
多中心
用户层<br>
用户管理
单点登录
授权登录
消息推送
存储云、图片云
应用层
拆分
虚拟业务域
平台层<br>
运维平台
标准化
平台化
自动化
可视化
测试平台
用例管理
资源管理
任务管理
数据管理
数据平台
数据管理
数据分析
数据应用
管理平台
身份认证<br>
权限控制
高性能
数据库集群<br>
读写分离
主从复制延迟
写操作后的读操作指定发给数据库主服务器
读从机失败后再读一次主机
关键业务读写操作全部指向主机,非关键业务采用读写分离
分配机制
程序代码封装
中间件封装
分库分表
业务分库
join操作问题
事务问题
成本问题
分表
垂直分表<br>
水平分表
路由
范围路由
hash路由
路由表<br>
join操作
count操作<br>
count相加
记录数表<br>
定期更新
order by操作<br>
NoSQL
关系型数据库缺点
存储的是行记录,无法存储数据结构
schema 扩展很不方便<br>
在大数据场景下 I/O 较高
全文搜索功能比较弱
NoSQL类别
K-V存储
redis
文档数据库
MongoDB
列式数据库
HBase
全文搜索引擎
elasticsearch
缓存<br>
缓存穿透
存储数据不存在
直接设置一个默认值(可以是空值,也可以是具体的值)存到缓存中
缓存数据生成耗费大量时间或者资源
识别爬虫然后禁止访问
做好监控,发现问题后及时处理
缓存雪崩
更新锁
后台更新
双key策略
缓存热点
复制多份缓存副本
单服务器<br>
PPC
fork 代价高
prefork
父子进程通信复杂
支持的并发连接数量有限
TPC
线程创建有代价<br>
prethread
线程间的互斥和共享
线程异常导致进程退出
Reactor
单 Reactor 单进程 / 线程
redis
单 Reactor 多线程
多 Reactor 多进程 / 线程
多进程 Nginx<br>
多线程 Memcache, Netty<br>
Proactor
负责均衡<br>
分类
DNS负载均衡
优点<br>
简单、成本低
就近访问,提升访问速度
缺点<br>
更新不及时
扩展性差
分配策略简单
硬件负载均衡
优点<br>
功能强大
性能强大
稳定性高<br>
支持安全防护
缺点
价格昂贵
扩展性差
软件负载均衡
优点<br>
简单
便宜<br>
灵活
缺点
性能一般:一个 Nginx 大约能支撑 5 万并发。<br>
功能没有硬件负载均衡那么强大。<br>
一般不具备防火墙和防 DDoS 攻击等安全功能。
算法
任务平分类
轮询
加权轮询
负载均衡类
LVS:“连接数”
Nginx:“Http请求数”<br>
CPU密集型:“CPU负载”
I/O密集型:“I/O负载”
性能最优类
Hash类
源地址 Hash
ID Hash<br>
可扩展
拆分思路
面向流程拆分
分层架构<br>
面向服务拆分
SOA、微服务
面向功能拆分
微内核架构
架构模式<br>
分层架构
设计
C/S、B/S
MVC、MVP架构<br>
逻辑分层架构
优点
隔离关注点,较好地支撑系统扩展
分层依赖,降低系统复杂度
缺点
增加工作量
性能浪费
SOA
解决了传统 IT 系统重复建设和扩展效率低的问题
引入了更多的复杂性
微服务
对比<br>
<br>
陷阱<br>
服务划分过细,服务间关系复杂
服务数量太多,团队效率急剧下降
调用链太长,性能下降
调用链太长,问题定位困难<br>
没有自动化支撑,无法快速交付
没有服务治理,微服务数量多了后管理混乱
服务路由
服务注册与发现
服务故障隔离
方法实践
服务粒度
三个火枪手原则
拆分方法<br>
基于业务逻辑拆分
基于可扩展拆分
基于可靠性拆分
基于性能拆分
基础设施
<br>
微内核
基本架构
<br>
关键技术<br>
插件管理
插件注册表机制
插件连接<br>
插件通信
OSGI架构
<br>
模块层
生命周期层
服务层
规则引擎
插件管理
插件连接
插件通信
0 条评论
下一页