一种基于 Nginx 的热点数据调度处理方法
本文分享自天翼云开发者社区《一种基于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 节点上。
评论