本文分享自天翼云开发者社区《一种基于Nginx的热点数据调度处理方法》,作者:康****彬
一、应用场景
基于Nginx的热点数据调度处理,热点节点数据负载均衡处理,减少热点节点压力,提高处理和访问效率;每一个节点的nginx服务接收大量的访问,但是每个节点处理请求都有一个峰值,当请求数达到峰值时,后续请求的处理效率就会有一定的下降,为了保证请求能及时处理,热点节点会触发请求调度策略,转发请求到非热点节点进行处理,若无非热点节点,则触发分布式节点策略,备机节点会启动Nginx服务处理,并接收热点节点转发过来的请求,从而提升访问及处理效率。
二、解决的问题
解决大量http请求同一个Nginx节点繁忙的问题,做到快速响应。 解决Nginx集群每个节点超负荷接收请求的问题,自动触发分布式策略处理。 解决现有实现方案可能存在的单点失效、配置不灵活的问题。
三、部署流程图
1、客户端:用户通过客户端发起HTTP请求。
2、Nginx主机:负责接收客户端 的HTTP请求。
3、Nginx备机:等待被Agent唤 醒的空闲Nginx节点。
4、Agent代理主机:负责和Nginx节点服务进行交互,包括启动空闲Nginx备机、注销Nginx节点服务等。
5、Agent代理备机:作为Agent主机的备用机器,Agent主机宕机的时候,会自动启动备机作为主机,然后发出告警。
6、Redis缓存:存放策略配置以及主机IP访问量等信息。
四、主要流程图
主要流程如下:
Nginx服务接收到客户端HTTP请求之后,先读取redis中该请求IP的总访问量,判断如果达到配置策略的峰值,则需要获取峰值策略判断,如果配置的是控制访问策略,则拒绝该IP的请求;如果配置的是非热点访问策略,则通知Agent转发到非热点Nginx节点;如果全部Nginx节点都达到峰值,则请求Agent发送到备用的Nginx节点上。