icql

架构基础_高性能架构模式

一、存储高性能

1. 关系型数据库

1) 读写分离

2) 分库分表

2. NoSQL数据库

3. 缓存

适用场景:

1) 需要复杂计算才能得出的数据
2) 读多写少,绝大部分都是读多写少,减少存储读压力

缓存问题:

1) 缓存穿透
2) 缓存雪崩
3) 缓存击穿
4) 缓存热点

具体解决方案详见【缓存】

二、计算高性能

1.单服务器高性能

1) 高性能IO模型

(1) PPC(Process per Connection): 有连接来fork子进程处理
(2) prefork: 预先fork子进程池子,来处理随时回来的请求,减少fork代价
(3) TPC(Thread per Connection): 每次有新的连接就新建一个线程去专门处理请求。 比进程轻量
(4) prethread: 预先创建线程
(5) Reactor模型  
  * 单Reactor单进程/线程
  * 单Reactor多进程/线程
  * 多Reactor多进程/线程* Reactor模型(具体详见【Reactor模型】)
(6) Proactor模型

2.集群高性能

1) 负载均衡

(1) DNS负载均衡

域名解析到不同的ip

(2) 硬件负载均衡

通过单独的设备做负载均衡,例如F5,支持百万级的并发

(3) 软件负载均衡

通过软件进行负载均衡,例如Nginx、LVS

Nginx: 7层(应用层)负载均衡,支持HTTP协议等,万级并发
LVS: 4层(传输层)负载均衡,TCP/UDP等,十万级并发

2) 常见架构

3) 负载均衡算法

轮询、加权轮询(性能好的机器加大权重)、负载最低优先、Hash等等