国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

LBS檢索容災架構(gòu)研究

2017-02-06 00:07符穎
無線互聯(lián)科技 2016年14期
關鍵詞:負載均衡

符穎

摘要:文章結(jié)合LBS檢索場景提出了一個穩(wěn)定性容災架構(gòu),通過過載保護、容災環(huán)境、負載調(diào)度、分級發(fā)布等幾部分相互配合,為在線檢索服務提供了一個離線、在線相互配合的沙盒環(huán)境。該容災架構(gòu)能在任一個檢索服務容量不足時快速地做出響應并將流量引導到安全環(huán)境下,保證對用戶的影響降到最低,為服務的快速發(fā)布提供更多的保障。

關鍵詞:容災系統(tǒng);過載保護;容災cache;負載均衡;分級發(fā)布

隨著移動互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,互聯(lián)網(wǎng)開發(fā)模式采用持續(xù)迭代的方式來持續(xù)驅(qū)動服務的不斷升級,并采用分級/灰度發(fā)布的方式實現(xiàn)在線迭代產(chǎn)品特性?;ヂ?lián)網(wǎng)開發(fā)模式在快速改變著互聯(lián)網(wǎng)研發(fā)生態(tài)的同時也引入了更多的穩(wěn)定性風險,而服務的持續(xù)穩(wěn)定是至關重要的,引入更快的迭代開發(fā)可能帶來服務質(zhì)量的下降,降低穩(wěn)定性風險是研究互聯(lián)網(wǎng)開發(fā)模式的重點。本文結(jié)合LBS檢索業(yè)務場景,引入容災體系架構(gòu),為快速迭代開發(fā)的業(yè)務構(gòu)建穩(wěn)定性的容災環(huán)境,解決服務穩(wěn)定性等問題。并設計一種主動容災系統(tǒng),其結(jié)合影響在線服務穩(wěn)定性的若干因素,使其一旦發(fā)生異常時盡可能減少對用戶的影響。

1在線服務穩(wěn)定性綜述

1.1影響在線服務穩(wěn)定性的若干因素

影響在線服務穩(wěn)定性的服務級因素因服務變更帶來更大的穩(wěn)定性風險。服務級的故障包括3個方面,其中用戶請求包括突發(fā)流量和異常流量,突發(fā)流量可能導致服務上限被打破,異常流量可能導致整個服務的崩潰。變更包括服務變更、程序升級、基礎數(shù)據(jù)的實時更新等。系統(tǒng)因素可以定義為服務所在的宿主節(jié)點的網(wǎng)絡等突發(fā)故障或被爭搶帶來服務異常表現(xiàn)的一些因素。這類問題的觸發(fā)本身是不可抗力的,但可以通過服務級的調(diào)度快速發(fā)現(xiàn)并隔離這些異常節(jié)點。

1.2主動容災系統(tǒng)設計

主動容災系統(tǒng)設計的主要目標是通過實時診斷監(jiān)測可能的異常行為并立即進行補救處理,將對用戶的影響降到最低甚至無影響。整體架構(gòu)如圖1所示。

整體架構(gòu)包括4個部分:過載保護主要通過活躍線程狀態(tài)指標快速判定服務當前是否處于過載狀態(tài),一旦過載就會立即拒絕無法及時處理的請求并向上匯報過載狀態(tài),主要通過檢測活躍線程的狀態(tài)趨勢對服務狀態(tài)作出可能的判斷。容災環(huán)境提供了保證服務穩(wěn)定輸出的在線環(huán)境,它由容災cache和延遲環(huán)境2個部分組成。負載調(diào)度是面向服務的頂層節(jié)點進行調(diào)度,通過對頂層節(jié)點作過載判斷或異常隔離來對頂層節(jié)點進行實時流量調(diào)度與負載均衡,當項層節(jié)點容量不足或不可用的時候,會實時將流量引到容災系統(tǒng)。分級發(fā)布主要包括服務和數(shù)據(jù)的發(fā)布,通過分級發(fā)布實現(xiàn)數(shù)據(jù)或服務的灰度上線。

2在線穩(wěn)定性系統(tǒng)設計

2.1過載保護

容量和性能對于在線服務是非常重要的,一般情況下通過擴容或性能優(yōu)化不斷地提升服務容量,滿足更多的用戶訪問需求,通過不斷的優(yōu)化性保證用戶的訪問體驗。對于在線服務而言,服務不可用是災難性的。常規(guī)的容災手段多數(shù)屬于事后容災,因此如何通過服務行為的變化快速診斷出可能的系統(tǒng)異常十分重要。

從容量的角度來講,可以分為2個方面:一是極端情況下的服務宕機,會導致拒絕及服務容量的突然下降,服務宕機通過心跳或連接狀態(tài)等都能比較快地發(fā)現(xiàn);一種則是服務異?;蛄髁客辉鰧е孪到y(tǒng)臨時容量不足,服務宕機進一步規(guī)約宕機也可認為是容量不足。

容量不足不等于系統(tǒng)完全不可用,需要極力規(guī)避服務容量不足時的雪崩效應以保證容量不足時的最大化輸出,但處理不當就會導致整個系統(tǒng)的癱瘓,在這種情況下,一個穩(wěn)定、可靠的擁塞預判檢測機制就顯得尤為重要。常見的擁塞判定方式包括:通過隊列狀態(tài)判斷和根據(jù)QPS判斷。

以上2個指標在系統(tǒng)的負載狀態(tài)上都有一定缺陷。對于檢索服務而言,磁盤讀寫、網(wǎng)絡I/O消耗相對比較低,基于此觀測每個線程的任務調(diào)度狀態(tài),如圖2所示,其中綠色塊表示被調(diào)度的任務。

結(jié)合圖2,正常情況下在一個時間切片下活躍任務數(shù)比較小,在CPU利用率較低的時候工作線程大部分時段空閑,在線程數(shù)換I/0的模型下任務活躍代表占用了CPU時間,因為使用I/0消耗在總時間中的比例等比例放大工作線程個數(shù),因此本文使用工作線程活躍狀態(tài)表征系統(tǒng)負載。

在線程數(shù)換I/0模型下,工作線程數(shù)的設置一般會結(jié)合計算、I0的消耗去設定,如果在計算密集型服務下一般和CPU核數(shù)保持一致就可以,在I/0消耗的服務下可以根據(jù)I/0消耗占比調(diào)大工作線程數(shù),使用I/0換計算。在檢索線程模型下,設置合理的工作線程數(shù)代表了服務滿載時的計算能力,因此當前服務CPU利用率的計算方法如下:

其中C代表線程計數(shù),分子為活躍線程計數(shù),分母為總的工作線程數(shù),P則為CPU利用率。

對于在線服務來說,為保證服務的穩(wěn)定高性能輸出、多機房互備的資源儲備,CPU利用率一般不希望超過40%,在這種情況下應當結(jié)合服務的計算、I/0消耗的比例,所能承載的最大活躍線程數(shù)也相應地確定。

活躍線程數(shù)指標是基于cPU利用率提出的,但磁盤、I/O出現(xiàn)性能問題的時候也同樣會在活躍線程數(shù)上有一定表現(xiàn)。一般情況下總的工作線程數(shù)需提前計算,磁盤、I/0故障時CPU利用率不會明顯變化,但性能會下降,活躍線程數(shù)也會快速膨脹,當活躍線程超過一定限度的時候同樣可以被認定為過載。

一般情況下系統(tǒng)容量不足的時候會快速影響工作線程數(shù),但活躍線程數(shù)的變化會有一個膨脹的過程,通過捕獲到這個過程并快速處理,在系統(tǒng)實際過載前將無法處理的流量及時丟棄,直到活躍線程數(shù)穩(wěn)定恢復到合理的范圍,同時在流量丟棄的過程中不斷地向上通報服務過載。

基于活躍線程數(shù)的過載保護機制如圖3所示,為防止活躍線程數(shù)抖動對過載判斷造成影響,本文過載判斷設計了3個階段:過載發(fā)現(xiàn)、過載模式和過載退場。

LBs檢索系統(tǒng)由多個模塊組成,采用的是相似的網(wǎng)絡/線程模型,每個服務節(jié)點只對自己負責,同時接收下游節(jié)點服務的狀態(tài)匯報,當前節(jié)點接收到下游服務的狀態(tài)匯報狀態(tài)時,會根據(jù)下游節(jié)點是否是關鍵節(jié)點向上主動匯報自己是否可用,形成一個逐級向上傳遞的匯報鏈。對于檢索服務接入的第一個服務節(jié)點,稱之為頂層節(jié)點。負載調(diào)度將檢索服務與其他外部服務隔離開來。通過服務自身的過載及可用性判斷形成了完整的過載判斷,下游業(yè)務節(jié)點的狀態(tài)通過處理并逐級上報后最終匯總到頂層節(jié)點下,頂層節(jié)點進一步將過載狀態(tài)匯報給負載調(diào)度服務,完成檢索服務狀態(tài)的最終匯報。

2.2負載調(diào)度

在容災系統(tǒng)的設計中,檢索服務頂層節(jié)點以下的所有業(yè)務模塊出現(xiàn)了影響整體容量的問題時,容災系統(tǒng)應該都能檢測出來并給出合理的處理。在這種情況下,容災系統(tǒng)的設計需有一個負載調(diào)度用來隔離業(yè)務系統(tǒng)和外部接入,并在檢測到頂層節(jié)點異常時及時觸發(fā)容災調(diào)度。為保證容災系統(tǒng)的穩(wěn)定工作,負載調(diào)度層需高度穩(wěn)定,對其進行升級改造的頻率是非常低的,所以將其設計為一個獨立的服務。

ATR是負載調(diào)度服務,其主要作用是對下游節(jié)點進行狀態(tài)管理,并根據(jù)節(jié)點狀態(tài)進行負載均衡和流量分發(fā)。通過下游項層節(jié)點的主動匯報及ATR向下對頂層節(jié)點的主動探測來獲取下游服務的狀態(tài)。它的核心功能包括4個部分:過載檢測、異常隔離、負載調(diào)度和ATR異常隔離隊列,其中ATR異常隔離隊列包括過載隊列、異常隊列、不可用隊列和離線隊列。ATR服務獨立一層完成對檢索服務的調(diào)度與穩(wěn)定性隔離,下游服務異常時能夠非常靈敏地將流量遷移到容災環(huán)境中。

2.3容災環(huán)境

前節(jié)中主要介紹了過載保護和負載調(diào)度,負載調(diào)度會將檢索服務無法處理的流量引導到容災環(huán)境中。容災環(huán)境包括容災cache和延遲環(huán)境。

在LBS檢索場景下,結(jié)果狀態(tài)由于和位置相關,結(jié)果級cache的命中率是極低的,由于容災本身就是一種降級手段,在實際簽名設計中考慮了位置的泛化,保留了核心請求參數(shù)對用戶query作簽名訓練容災cache,以泛需求檢索[美食]為例,用戶可能在相聚幾十米的2個地方搜美食,結(jié)果是不一樣的。在容災降級場景下,其檢索結(jié)果可以一樣,對用戶不會有明顯的感知,本文采用加權(quán)投票的方式確定在一個geo區(qū)塊內(nèi)的cache結(jié)果選擇,如圖4所示。

對于檢索服務而言,請求query分布有高中低頻之分,高中頻query連續(xù)2天都會有一定概率的重復出現(xiàn),但一些低頻query可能1年也出現(xiàn)不了幾次,而容災cache是基于歷史日志訓練的,對于命中率不能得到絕對的保證,在實際測試中,LBS檢索下的cache命中率大概78%。

為保證長尾query的召回,在容災環(huán)境中增加了延遲環(huán)境,所謂延遲環(huán)境是2天以前的線上環(huán)境的鏡像,其數(shù)據(jù)和服務都是靜止的,且經(jīng)歷過了至少2天線上流量的驗證,可以認為是穩(wěn)定的,長尾流量會被容災環(huán)境進一步導到延遲環(huán)境做進一步的召回。

這樣,通過容災cache和延遲環(huán)境的相互配合提供了100%的檢索容災服務。為防止容災服務對新版本客戶端的影響,每一次發(fā)版測試階段都會例行使用新版本客戶端對容災環(huán)境進行一次逆向驗證。這種100%容災是相對的,是建立在假定容災環(huán)境和線上環(huán)境不會同時故障的情況下的,所以容災環(huán)境的穩(wěn)定性是必須實時保障的。

2.4分級發(fā)布

分級發(fā)布包括服務變更和數(shù)據(jù)變更的分級發(fā)布2種形式。通過分級發(fā)布,可以有效地控制因發(fā)布帶來的穩(wěn)定性、效果風險,通過只影響少量用戶的快速驗證,規(guī)避更大的影響,一旦發(fā)布出現(xiàn)問題就可以快速回滾。

發(fā)布階段對穩(wěn)定性的影響主要包括響應時間變差、結(jié)果不穩(wěn)定、服務宕機或服務無法啟動等,對效果的影響主要是檢索結(jié)果質(zhì)量變差。服務無法正常啟動這類問題比較容易規(guī)避,而大部分問題往往都是在提供服務之后觸發(fā)的。在正常提供服務階段,處理流程命中了臟數(shù)據(jù)或局部分支導致內(nèi)存被寫亂都可能導致比較嚴重的穩(wěn)定性問題,基于此,分級發(fā)布必然需要伴生在線測試來保證分級的效果。在線測試語料的選擇要盡可能全面地覆蓋業(yè)務場景、邏輯分支。另外,在線測試觸發(fā)的時間點的選擇也要盡可能地保證程序&數(shù)據(jù)分支己大部分被預熱。

為防止在一些極端的場景下服務全部崩潰導致所有服務完全不可用,在線測試的時間點需要盡可能選擇大于一次崩潰自動拉起的時間周期,這樣即便有大面積崩潰也始終能保證大部分服務還可以使用,提供盡力而為的服務。

3結(jié)語

本文創(chuàng)造性地使用活躍線程數(shù)判定服務的過載狀態(tài),大大簡化了過載判斷的復雜度,減少了額外的風險。通過過載保護/負載調(diào)度/容災環(huán)境構(gòu)建了一個穩(wěn)健的在線容災系統(tǒng),創(chuàng)新性地對容災作了一個系統(tǒng)級的抽象,在其他的復雜計算的業(yè)務場景下也具有比較好的借鑒價值。

通過對復雜的業(yè)務線如檢索提供容災系統(tǒng)是很有意義的,在容災系統(tǒng)的保護下對線上變更能更加從容,能比較有效地規(guī)避流量的突然增加、服務崩潰、服務性能突然變差對用戶的影響。容災系統(tǒng)上線后,檢索服務還沒有出現(xiàn)過因服務穩(wěn)定性導致的服務拒絕。服務宕機導致服務大面積不可用這種情況的觸發(fā)概率本身就很低,1年最多也就兩三次,但一旦發(fā)生對用戶的影響就會是極端惡劣的,一旦觸發(fā)它的作用是巨大的,為此在日常的維護中需要絕對保證容災環(huán)境的實時可用,避免容災環(huán)境和線上服務同時不可用的慘況。

猜你喜歡
負載均衡
異構(gòu)環(huán)境下改進的LATE調(diào)度算法