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