前言:
此时同学们对“nginxdr模式”大概比较讲究,你们都需要剖析一些“nginxdr模式”的相关内容。那么小编在网上汇集了一些有关“nginxdr模式””的相关知识,希望看官们能喜欢,看官们快快来了解一下吧!一、负载均衡与反向代理
Nginx一般用于七层负载均衡,其吞吐量是有一定限制的。为了提升整体吞吐量,会在DNS和Nginx之间引入接入层,如使用LVS(软件负载均衡器)、F5(硬负载均衡器)可以做四层负载均衡,即首先DNS解析到LVS/F5,然后LVS/F5转发给Nginx,再由Nginx转发给后端Real Server。
二层负载均衡是通过改写报文的目标MAC地址为上游服务器MAC地址,源IP地址和目标IP地址是没有变的,负载均衡服务器和真实服务器共享同一个VIP,如LVS DR工作模式。四层负载均衡是根据端口将报文转发到上游服务器(不同的IP地址+端口),如LVS NAT模式、HaProxy,七层负载均衡是根据端口号和应用层协议如HTTP协议的主机名、URL,转发报文到上游服务器(不同的IP地址+端口),如HaProxy、Nginx。
这里再介绍一下LVS DR工作模式,其工作在数据链路层,LVS和上游服务器共享同一个VIP,通过改写报文的目标MAC地址为上游服务器MAC地址实现负载均衡,上游服务器直接响应报文到客户端,不经过LVS,从而提升性能。但因为LVS和上游服务器必须在同一个子网,为了解决跨子网问题而又不影响负载性能,可以选择在LVS后边挂HaProxy,通过四到七层负载均衡器HaProxy集群来解决跨网和性能问题。
现在Nginx的stream也支持TCP,所以Nginx也算是一个四到七层的负载均衡器,一般场景下可以用Nginx取代HaProxy。Nginx负载均衡器本身也是一台反向代理服务器,将用户请求通过Nginx代理到内网中的某台上游服务器处理,反向代理服务器可以对响应结果进行缓存、压缩等处理以提升性能。
二、隔离术
隔离是指将系统或资源分割开,系统隔离是为了在系统发生故障时,能限定传播范围和影响范围,即发生故障后不会出现滚雪球效应,从而保证只有出问题的服务不可用,其他服务还是可用的。资源隔离通过隔离来减少资源竞争,保障服务间的相互不影响和可用性。
1、线程隔离
线程隔离主要是指线程池隔离,在实际使用时,我们会把请求分类,然后交给不同的线程池处理。
2、进程隔离
通过进程隔离使得某一个子系统出现问题时不会影响到其他子系统。
3、集群隔离
服务分组,这样当某一个分组出现问题时,不会影响到其他分组,从而实现了故障隔离。
4、机房隔离
多机房部署,每个机房的服务都有自己的服务分组,本机房的服务应该只调用本机房服务,不进行跨机房调用。
5、读写隔离
通过主从模式将读和写集群分离。
6、动静隔离
7、爬虫隔离
一种解决办法是通过限流解决,另一种解决办法是在负载均衡层面将爬虫路由到单独集群,从而保证正常流量可用,爬虫流量尽量可用。
8、热点隔离
9、资源隔离
三、限流详解
一般开发高并发系统常见的限流有:限制总并发数、限制瞬时并发数、限制时间窗口内的平均速率,以及限制远程接口调用速率、限制MQ的消费速率等。
常见的限流算法有:令牌桶、漏桶。
四、降级特技
当访问量剧增、服务出现问题(如响应时间长或不响应)或非核心服务影响到核心流程的性能时,仍然需要保证服务还是可用的,即使是有损服务。系统可以根据一些关键数据进行自动降级,也可以配置开关实现人工降级。
降级的最终目的是保证核心服务可用,即使是有损的。(丢卒保帅)
1、降级预案
降级按照是否自动化可分为:自动开关降级和人工开关降级。
降级按照功能可分为:读服务降级和写服务降级。
降级按照处于的系统层次可分为:多级降级。
2、自动开关降级
超时降级统计失败次数降级故障降级限流降级
3、人工开关降级
4、读服务降级
5、写服务降级
6、多级降级
五、超时与重试机制
如果应用不设置超时,则可能会导致请求响应慢,慢请求累积导致连锁反应,甚至造成应用雪崩。
其中最重要的超时设置是网络连接/读/写的超时时间设置。
六、回滚机制
最常见的如事务回滚、代码库回滚、部署版本回滚、数据版本回滚、静态资源版本回滚等。
七、压测与预案
一般通过系统压测来发现系统瓶颈和问题,然后进行系统优化和容灾。在大促之前需要进行预案演习,确保预案的有效性。
压测一般指性能压力测试,用来评估系统的稳定性和性能,线上压测的方式非常多,按读写分为读压测、写压测和混合压测,按数据仿真度分为仿真压测和引流压测,按是否给用户提供服务分为隔离集群压测和线上集群压测。
应急预案可按照如下几步进行:首先进行系统分级,然后进行全链路分析、配置监控报警,最后制定应急预案。
标签: #nginxdr模式