一、数据库集群:读写分离
二、数据库集群:分库分表
三、NoSQL = not only sql
四、缓存
1、用户请求发现缓存不存在则自行查库并生成缓存。并发下可能会同时很多请求同时生成,造成雪崩。
2、用户请求发现缓存不存在,通过队列后台生产缓存,并发下,消费者应判断缓存是否已存在,不存在时在生成。
3、热点数据后台脚本生成,在内存紧张时新生成一个就会淘汰一个,脚本应不断检测若缓存不存在则重新生成。
4、全网热点数据,如明星官宣,这时应生成多份缓存,以集群来分散单机压力。
五、单机高性能:PPC和TPC
1、PPC:每来一个链接就创建一个进程。优化版是启动时预创建多进程。
2、TPC:同PPC,进程换线程。
六、单机高性能:Reactor和Proactor
1、Reactor:就是IO多路复用,也叫Dispatcher,同步非阻塞模型。如epoll、kqueue等。单reactor单进程有redis,多reactor单进程没任何优势,多reactor多进程有nginx和memcache。通俗讲:来了事件操作系统通知应用程序,应用程序来处理。
2、Proactor:异步非阻塞。Reactor需要用户进程同步做read write等IO操作,如果改为异步可以提高性能,这就是Proactor。通俗讲:来了事件操作系统来处理,处理完通知应用程序。虽然性能更好,但是Linux下的AIO并不完善,真正实现了异步非阻塞的操作系统是windows的IOCP。
3、IO操作分两个阶段
1、等待数据准备好(读到内核缓存)
2、将数据从内核读到用户空间(进程空间)
一般来说1花费的时间远远大于2。
1上阻塞2上也阻塞的是同步阻塞IO
1上非阻塞2阻塞的是同步非阻塞IO,这就是Reactor就是这种模型
1上非阻塞2上非阻塞是异步非阻塞IO,这讲说的Proactor模型就是这种模型
七、复杂均衡的分类和架构
1、最上层DNS:针对地域。就近访问。缺点更新缓存慢,不可定制化。
2、硬件层F5:性能最好,价格昂贵,便宜的也要一台马六。qps两百万到八百万。
3、软件层LVS:性能始终,qps八十万。在三层网络
4、软件层nginx:性能最差,qps五万左右。
八、负载均衡的算法
1、轮询:简单,但由于简单,也是缺点。宕机也无法知道。
2、加权轮训:根据机器性能等权重不同,其他缺点同轮询。
3、最小负载:LVS四层可以根据最小连接数,Nginx七层可以根据最少HTTP请求数(默认不支持)。 自研的话可以根据CPU IO等来判断,但是复杂度太高,是1、5、15分钟的负载?太短波动太频繁,太长峰值来临时感知太晚。
4、性能最优:同最小负载,都是要感知服务器状态,复杂都高。如果收集量太大影响性能,如果采样,又需要合理的采样率,否则不准确。
5、Hash:根据id hash、根据ip hash。如银行业务,请求都要落在同一台机器上。
未经允许不得转载:任鹏个人博客 » 架构系列-高性能架构
最新评论
Forex wiki. https://lt.forex-stock-bitcoin-brokers.com
Magnificent items from you, man. I have take note your stuff
Following on from the 3rd March Meetings held by economic de
It is remarkable, rather valuable message dfgdlfg2131.32
一般都会有一个沙盒期的,过了沙盒期就会慢慢放出来
百度不收录是应为是新站的原因吗?
The spike in consumer prices that left inflation at a four-d