高可用、高并发架构
一、高可用
1、负载均衡
1)DNS负载均衡:通过一个域名绑定多个IP实现
2)硬件负载均衡:专门的硬件‘
3)代理服务器负载均衡:Nginx、Haproxy,(四层负载均衡:TCP/UDP,七层负载均衡:HTTP)
2、隔离术
1)线程隔离:Hystrix
2)进程隔离:微服务
3)资源隔离:k8s,cpu、内存的隔离
4)读写隔离:Redis读写分离,数据库读写分离
5)动静隔离:静态资源和动态内容隔离
6)热点隔离:抢购属于热点例子,应独立出来
3、限流
1)应用层限流
Tomcat设置:
AcceptCount:请求队列大小,超过最大连接数的请求进入排队的长度,超过队列长度的请求将被拒绝;
MaxConnectons:最大连接数,超出最大连接数的请求进入等待,不会被应用处理;BIO模式,MaxConnectons与MaxThreads一样,NIO与NIO2默认是10000
MaxThreads:最大线程数,一般会把MaxConnectons与MaxThreads设置为一样;默认是200
Tomcat最大并发数是由MaxConnectons和MaxThreads中最小的一个决定。
数据库连接、线程限制:通过连接池、线程池等池化技术限制总资源数
2)接入层限流:Nginx限流
4、降级
1)超时降级
2)故障降级
3)限流降级
5、超时
1)Web容器超时:
Tomcat设置:
connectionTimeout:与客户端建立连接后,在配置的超时时间内没收到请求数据,则认定为超时,上传图片请求数据包太大、网络慢可能会引起超时,默认为60s;
asyncTimeout:异步处理的超时时间,tomcat线程转给业务线程的等待时间,默认30s
1)中间件客户端超时:连接RabbitMQ时,一定要设置连接超时时间,如果客户端客户端没设置超时时间,由于默认超时时间很长,则程序会等待很久
2)数据库客户端超时:
3)Http客户端超时:Feign调用时设置ConnectionTimeout,ReadTimeout
4)NoSQL客户端超时:
6、重试
二、高并发
1、缓存
1)应用级缓存
2)Http缓存:Http客户端缓存、Nginx缓存
3)分布式缓存:Redis、Memcache
4)多级缓存
2、池化技术
1)线程池
2)数据库连接池
3)HttpClient连接池
3、多线程处理
4、异步处理:消息队列
5、应用拆分水平扩容
6、数据库拆分
 
                    
                
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号