高性能架构模式
点击蓝色“ 乔志勇笔记 ”关注我哟
加个“ 星标 ”,第一时间获取推送的文章哦
一、高性能数据库集群
(1)读写分离
主从复制延迟
1、写操作后的读操作指定发给数据库主服务器
2、读从机失败后再读一次主机
3、关键业务读写操作全部指向主机,非关键业务采用读写分离
分配机制
1、程序代码分装
2、中间件封装
(2)分库分表
二、高性能nosql
-
K-V 存储:解决关系数据库无法存储数据结构的问题,以 Redis 为代表。
-
文档数据库:解决关系数据库强 schema 约束的问题,以 MongoDB 为代表。
-
列式数据库:解决关系数据库大数据场景下的 I/O 问题,以 HBase 为代表。
-
全文搜索引擎:解决关系数据库的全文搜索性能问题,以 Elasticsearch 为代表。
三、高性能缓存架构
1、缓存穿透
2、缓存雪崩
设计方式:后台定时更新+业务消息队列通知更新
3、缓存热点
实现方式: 针对缓存热点复制多份缓存副本
四、单服务器高性能模式 -并发模型
1、ppc (process per connection)
同步阻塞
优化:ppc + prefork
2、tpc(thread per connection)
同步阻塞
优化:tpc + prethread
小结:
ppc与tpc 适用场景 :
ppc与tpc是阻塞io/bio
常量连接海量请求情形,比如数据库,activemq 的bio模式可以用
常量连接常量请求 情形 企业内部系统
3、Reactor/Dispatcher 模式
形象描述:来了事件我通知你,你来处理
nio 同步非阻塞 ,io 多路复用统一监听事件,收到事件后分配(dispatch)给某个进程
典型实现方案:
(1)单reactor单进程/线程
只适用于业务处理非常快速的场景,例如单 Reactor 单进程redis
(2)单reactor多线程
应用举例:java 的nio,消息队列设计
(3)多reactor多进程/线程
应用举例:多reactor多进程的nginx,多reacotr多线程的netty,memcache
(4)proactor模式
aio
形象描述:来了事件我来处理,处理完了我通知你
Windows 下通过 IOCP 实现了真正的异步 I/O,而在 Linux 系统下的 AIO 并不完善
海量连接海量请求
小提示:IO操作分两个阶段 1、等待数据准备好(读到内核缓存) 2、将数据从内核读到用户空间(进程空间) 一般来说1花费的时间远远大于2。 1上阻塞2上也阻塞的是同步阻塞IO 1上非阻塞2阻塞的是同步非阻塞IO,这讲说的Reactor就是这种模型 1上非阻塞2上非阻塞是异步非阻塞IO,这讲说的Proactor模型就是这种模型
五、集群高性能模式-负载均衡
(1) 架构
1、dns 负载均衡
优化:http-dns 适合cs模式,替换现有基于udp的dns协议
2、硬件负载均衡
3、软件负载均衡
lvs 或nginx
(2) 算法
轮询 、加权轮询、负载最低、性能最优、hash类
参考:李运华的从0开始学架构
近期文章:
如果你喜欢本文
请长按二维码,关注 乔志勇笔记