一、應用場景
基于(yu)Nginx的熱(re)(re)點(dian)數(shu)據調度(du)處理(li)(li)(li),熱(re)(re)點(dian)節(jie)(jie)(jie)點(dian)數(shu)據負載(zai)均(jun)衡處理(li)(li)(li),減少熱(re)(re)點(dian)節(jie)(jie)(jie)點(dian)壓(ya)力,提(ti)高處理(li)(li)(li)和訪問效率(lv);每一(yi)個(ge)節(jie)(jie)(jie)點(dian)的nginx服務接(jie)收大量(liang)的訪問,但是每個(ge)節(jie)(jie)(jie)點(dian)處理(li)(li)(li)請(qing)(qing)求(qiu)(qiu)都有(you)一(yi)個(ge)峰值,當請(qing)(qing)求(qiu)(qiu)數(shu)達到(dao)峰值時(shi),后續請(qing)(qing)求(qiu)(qiu)的處理(li)(li)(li)效率(lv)就會有(you)一(yi)定的下降,為了保(bao)證請(qing)(qing)求(qiu)(qiu)能及(ji)時(shi)處理(li)(li)(li),熱(re)(re)點(dian)節(jie)(jie)(jie)點(dian)會觸(chu)發請(qing)(qing)求(qiu)(qiu)調度(du)策略(lve),轉發請(qing)(qing)求(qiu)(qiu)到(dao)非熱(re)(re)點(dian)節(jie)(jie)(jie)點(dian)進行(xing)處理(li)(li)(li),若無非熱(re)(re)點(dian)節(jie)(jie)(jie)點(dian),則觸(chu)發分(fen)布(bu)式(shi)節(jie)(jie)(jie)點(dian)策略(lve),備機節(jie)(jie)(jie)點(dian)會啟動Nginx服務處理(li)(li)(li),并接(jie)收熱(re)(re)點(dian)節(jie)(jie)(jie)點(dian)轉發過來的請(qing)(qing)求(qiu)(qiu),從而(er)提(ti)升訪問及(ji)處理(li)(li)(li)效率(lv)。
二、解決的問題
解(jie)(jie)決(jue)大量http請(qing)求(qiu)同(tong)一個Nginx節點繁忙的問(wen)(wen)題,做到快(kuai)速(su)響應。 解(jie)(jie)決(jue)Nginx集群每個節點超負荷接(jie)收請(qing)求(qiu)的問(wen)(wen)題,自動觸發(fa)分布式策略處理。 解(jie)(jie)決(jue)現有實現方案可能存在(zai)的單點失效、配置(zhi)不靈活的問(wen)(wen)題。
三、部署流程圖

1、客(ke)(ke)戶端(duan):用戶通過(guo)客(ke)(ke)戶端(duan)發起HTTP請求。
2、Nginx主機:負(fu)責接收客戶端 的HTTP請求。
3、Nginx備機:等待(dai)被(bei)Agent喚 醒的(de)空閑Nginx節點。
4、Agent代理主機:負責和Nginx節點服(fu)務(wu)進(jin)行交互,包括啟動空(kong)閑Nginx備機、注銷Nginx節點服(fu)務(wu)等(deng)。
5、Agent代理備(bei)機:作為(wei)Agent主機的備(bei)用(yong)機器,Agent主機宕(dang)機的時候(hou),會自動(dong)啟動(dong)備(bei)機作為(wei)主機,然后發出告警(jing)。
6、Redis緩存:存放(fang)策略配置以及主(zhu)機(ji)IP訪(fang)問量等信息。
三、主要流程圖

主要流程如下:
Nginx服務(wu)接(jie)收到(dao)客戶端HTTP請(qing)求(qiu)之后,先讀(du)取redis中該(gai)請(qing)求(qiu)IP的(de)總訪(fang)問量,判斷如果(guo)達(da)到(dao)配置(zhi)策(ce)略(lve)的(de)峰(feng)(feng)值,則需要獲取峰(feng)(feng)值策(ce)略(lve)判斷,如果(guo)配置(zhi)的(de)是控制訪(fang)問策(ce)略(lve),則拒絕該(gai)IP的(de)請(qing)求(qiu);如果(guo)配置(zhi)的(de)是非熱點(dian)訪(fang)問策(ce)略(lve),則通知Agent轉(zhuan)發到(dao)非熱點(dian)Nginx節點(dian);如果(guo)全部Nginx節點(dian)都達(da)到(dao)峰(feng)(feng)值,則請(qing)求(qiu)Agent發送到(dao)備用的(de)Nginx節點(dian)上。