高可用、高并发架构

一、高可用

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、数据库拆分

 

posted @ 2019-10-29 23:04  myTang  阅读(610)  评论(0)    收藏  举报