亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

業(yè)務(wù)請(qǐng)求處理方法及裝置、和業(yè)務(wù)請(qǐng)求方法及裝置與流程

文檔序號(hào):11623817閱讀:258來(lái)源:國(guó)知局
業(yè)務(wù)請(qǐng)求處理方法及裝置、和業(yè)務(wù)請(qǐng)求方法及裝置與流程

本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,特別是涉及一種業(yè)務(wù)請(qǐng)求處理方法及裝置、和業(yè)務(wù)請(qǐng)求方法及裝置。



背景技術(shù):

代理服務(wù)器是分布式存儲(chǔ)平臺(tái)提供給前端客戶端訪問(wèn)的接口機(jī),所有使用者的請(qǐng)求通過(guò)代理服務(wù)器接入,并根據(jù)請(qǐng)求的key將相應(yīng)的請(qǐng)求路由到對(duì)應(yīng)的底層服務(wù)(server)中去。圖1是現(xiàn)有技術(shù)中一種分布式存儲(chǔ)平臺(tái)的單集群架構(gòu)示意圖,圖2是現(xiàn)有技術(shù)中一種分布式存儲(chǔ)平臺(tái)的多集群架構(gòu)示意圖,從圖中可以看到,代理服務(wù)器在整個(gè)分布式存儲(chǔ)平臺(tái)中起著尤為重要的作用,主要包括:對(duì)于客戶端和代理服務(wù)器之間tcp長(zhǎng)連接的管理、前端請(qǐng)求路由、批量請(qǐng)求的分包處理、負(fù)載均衡、異常檢測(cè)、安全等方面。

當(dāng)代理服務(wù)器進(jìn)行升級(jí)或其他改動(dòng)需要重啟時(shí),會(huì)造成業(yè)務(wù)側(cè)正在請(qǐng)求的消息丟失或錯(cuò)誤,對(duì)于高并發(fā)量的業(yè)務(wù)尤為如此,每秒鐘都會(huì)造成成千上萬(wàn)的請(qǐng)求失敗。具體地,代理服務(wù)器升級(jí)重啟時(shí),重啟瞬間前端會(huì)將請(qǐng)求繼續(xù)發(fā)送到對(duì)應(yīng)的代理服務(wù)器,由于系統(tǒng)重啟導(dǎo)致當(dāng)前的所有請(qǐng)求失敗,影響業(yè)務(wù)使用和用戶的體驗(yàn)。如果能在代理服務(wù)器升級(jí)或重啟的時(shí)候做到平滑升級(jí),在重啟時(shí)不影響線上業(yè)務(wù)的請(qǐng)求,即將當(dāng)前業(yè)務(wù)的請(qǐng)求失敗量降為零,不僅能提高服務(wù)的可用性,同時(shí)對(duì)前端用戶的體驗(yàn)也是一次提升。

在現(xiàn)有技術(shù)中,在后端系統(tǒng)升級(jí)或重啟時(shí)基本都沒(méi)有采取有效的措施去避免當(dāng)前請(qǐng)求及后續(xù)請(qǐng)求的丟失和失敗,一些比較重要的系統(tǒng)也只是在前端調(diào)用方加了一些諸如負(fù)載均衡的策略,諸如:在調(diào)用方記錄每分鐘或每秒鐘請(qǐng)求的請(qǐng)求數(shù)、響應(yīng)數(shù)或者超時(shí)數(shù)、失敗數(shù),當(dāng)超時(shí)或者失敗數(shù)超過(guò)一定閾值時(shí),將 請(qǐng)求的系統(tǒng)列為黑名單,后續(xù)的請(qǐng)求不再繼續(xù)請(qǐng)求該系統(tǒng)。然而這需要一個(gè)時(shí)間去試錯(cuò),一段時(shí)間內(nèi)的請(qǐng)求都會(huì)失敗。對(duì)于一些要求比較嚴(yán)格、業(yè)務(wù)比較重要的場(chǎng)景還是不太適合。從上述描述可以看出,在現(xiàn)有技術(shù)中后端系統(tǒng)升級(jí)或重啟時(shí),不能實(shí)時(shí)探測(cè)到系統(tǒng)處于不可用的狀態(tài),而自動(dòng)切換為其他系統(tǒng)。并且,在一段時(shí)間內(nèi),所有的請(qǐng)求都會(huì)失敗。此外,為了去發(fā)現(xiàn)系統(tǒng)是否恢復(fù),需要犧牲一小部分請(qǐng)求包做探測(cè)。



技術(shù)實(shí)現(xiàn)要素:

鑒于現(xiàn)有技術(shù)中代理服務(wù)器升級(jí)或重啟使線上業(yè)務(wù)的請(qǐng)求失敗的問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的業(yè)務(wù)請(qǐng)求處理方法及裝置、和業(yè)務(wù)請(qǐng)求方法及裝置。

本發(fā)明提供一種業(yè)務(wù)請(qǐng)求處理方法,包括:

實(shí)時(shí)監(jiān)控各個(gè)代理服務(wù)器的健康狀況,生成代理服務(wù)器健康狀況列表;

接收前端客戶端定期發(fā)出的代理服務(wù)器健康狀況請(qǐng)求消息,將代理服務(wù)器健康狀況列表反饋給前端客戶端,使前端客戶端根據(jù)代理服務(wù)器健康狀況列表向健康的代理服務(wù)器發(fā)送請(qǐng)求。

本發(fā)明還提供一種業(yè)務(wù)請(qǐng)求方法,應(yīng)用于前端客戶端中,包括:

定期發(fā)出代理服務(wù)器健康狀況請(qǐng)求消息;

接收返回的代理服務(wù)器健康情況列表;

從代理服務(wù)器健康情況列表中,選擇通過(guò)健康的代理服務(wù)器向分布式存儲(chǔ)平臺(tái)發(fā)送業(yè)務(wù)請(qǐng)求。

本發(fā)明還提供了一種業(yè)務(wù)請(qǐng)求處理裝置,包括:

監(jiān)控模塊,用于實(shí)時(shí)監(jiān)控各個(gè)代理服務(wù)器的健康狀況,生成代理服務(wù)器健康狀況列表;

反饋模塊,用于接收前端客戶端定期發(fā)出的代理服務(wù)器健康狀況請(qǐng)求消息,將代理服務(wù)器健康狀況列表反饋給前端客戶端,使前端客戶端根據(jù)代理服 務(wù)器健康狀況列表向健康的代理服務(wù)器發(fā)送請(qǐng)求。

本發(fā)明還提供了一種業(yè)務(wù)請(qǐng)求裝置,應(yīng)用于前端客戶端中,包括:

發(fā)送模塊,用于定期發(fā)出代理服務(wù)器健康狀況請(qǐng)求消息;

接收模塊,用于接收返回的代理服務(wù)器健康情況列表;

請(qǐng)求模塊,用于從代理服務(wù)器健康情況列表中,選擇通過(guò)健康的代理服務(wù)器向分布式存儲(chǔ)平臺(tái)發(fā)送業(yè)務(wù)請(qǐng)求。

本發(fā)明有益效果如下:

通過(guò)實(shí)時(shí)監(jiān)控各個(gè)代理服務(wù)器的健康狀況,將代理服務(wù)器健康狀況列表反饋給前端客戶端,使前端客戶端根據(jù)代理服務(wù)器健康狀況列表向健康的代理服務(wù)器發(fā)送請(qǐng)求,解決了現(xiàn)有技術(shù)中代理服務(wù)器升級(jí)或重啟使線上業(yè)務(wù)的請(qǐng)求失敗的問(wèn)題,能夠在代理服務(wù)器升級(jí)重啟時(shí)做到對(duì)前端客戶端完全透明,前端客戶端請(qǐng)求失敗數(shù)為零,使代理服務(wù)器重啟不影響業(yè)務(wù)和用戶體驗(yàn),從而提升系統(tǒng)的可用性和用戶體驗(yàn)。

上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。

附圖說(shuō)明

通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:

圖1是現(xiàn)有技術(shù)中一種分布式存儲(chǔ)平臺(tái)的單集群架構(gòu)示意圖;

圖2是現(xiàn)有技術(shù)中一種分布式存儲(chǔ)平臺(tái)的多集群架構(gòu)示意圖;

圖3是本發(fā)明實(shí)施例的業(yè)務(wù)請(qǐng)求處理方法的流程圖;

圖4是本發(fā)明實(shí)施例的業(yè)務(wù)請(qǐng)求方法的流程圖;

圖5是本發(fā)明實(shí)施例的業(yè)務(wù)請(qǐng)求處理方法的詳細(xì)處理的流程圖;

圖6是本發(fā)明實(shí)施例的業(yè)務(wù)請(qǐng)求處理裝置的結(jié)構(gòu)示意圖;

圖7是本發(fā)明實(shí)施例的業(yè)務(wù)請(qǐng)求裝置的結(jié)構(gòu)示意圖;

圖8是本發(fā)明實(shí)施例的系統(tǒng)的結(jié)構(gòu)示意圖。

具體實(shí)施方式

下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。

為了解決現(xiàn)有技術(shù)中代理服務(wù)器升級(jí)或重啟使線上業(yè)務(wù)的請(qǐng)求失敗的問(wèn)題,本發(fā)明提供了一種業(yè)務(wù)請(qǐng)求處理方法及裝置、和業(yè)務(wù)請(qǐng)求方法及裝置,具體地,通過(guò)實(shí)時(shí)監(jiān)控各個(gè)代理服務(wù)器的健康狀況,將代理服務(wù)器健康狀況列表反饋給前端客戶端,使前端客戶端根據(jù)代理服務(wù)器健康狀況列表向健康的代理服務(wù)器發(fā)送請(qǐng)求,能夠在代理服務(wù)器升級(jí)重啟時(shí)做到對(duì)前端客戶端完全透明,前端客戶端請(qǐng)求失敗數(shù)為零,使代理服務(wù)器重啟不影響業(yè)務(wù)和用戶體驗(yàn),從而提升系統(tǒng)的可用性和用戶體驗(yàn)。以下結(jié)合附圖以及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不限定本發(fā)明。

方法實(shí)施例一

根據(jù)本發(fā)明的實(shí)施例,提供了一種業(yè)務(wù)請(qǐng)求處理方法,圖3是本發(fā)明實(shí)施例的業(yè)務(wù)請(qǐng)求處理方法的流程圖,如圖3所示,根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)請(qǐng)求處理方法包括如下處理:

步驟301,實(shí)時(shí)監(jiān)控各個(gè)代理服務(wù)器的健康狀況,生成代理服務(wù)器健康狀況列表;

具體地,在步驟301中,在代理服務(wù)器的系統(tǒng)需要停止服務(wù)時(shí),將該代理 服務(wù)器的健康狀況設(shè)置為下線,并上報(bào)該代理服務(wù)器的健康狀況;在代理服務(wù)器的系統(tǒng)恢復(fù)服務(wù)后,將該代理服務(wù)器的健康狀況設(shè)置為在線,并向上報(bào)該代理服務(wù)器的健康狀況。

優(yōu)選地,在本發(fā)明實(shí)施例中,生成代理服務(wù)器健康狀況列表之后,還包括:?jiǎn)?dòng)鍵值存儲(chǔ)系統(tǒng),向類名字服務(wù)系統(tǒng)提供監(jiān)視服務(wù),實(shí)時(shí)獲取并存儲(chǔ)代理服務(wù)器健康狀況列表。

步驟302,接收前端客戶端定期發(fā)出的代理服務(wù)器健康狀況請(qǐng)求消息,將代理服務(wù)器健康狀況列表反饋給前端客戶端,使前端客戶端根據(jù)代理服務(wù)器健康狀況列表向健康的代理服務(wù)器發(fā)送請(qǐng)求。

優(yōu)選地,在本發(fā)明實(shí)施例中,將代理服務(wù)器健康狀況列表反饋給前端客戶端之前,還包括啟動(dòng)類名字服務(wù)系統(tǒng),監(jiān)視鍵值存儲(chǔ)系統(tǒng)中存儲(chǔ)的代理服務(wù)器健康狀況列表,并響應(yīng)前端客戶端定期發(fā)出的代理服務(wù)器健康狀況請(qǐng)求消息。

在本發(fā)明實(shí)施例中,在鍵值存儲(chǔ)系統(tǒng)中的代理服務(wù)器健康狀況列表發(fā)生變化時(shí),向類名字服務(wù)系統(tǒng)發(fā)送更新請(qǐng)求;類名字服務(wù)系統(tǒng)從鍵值存儲(chǔ)系統(tǒng)中獲取更新的代理服務(wù)器健康狀況列表。

在步驟302中,前端客戶端可以根據(jù)代理服務(wù)器健康狀況列表,確定某個(gè)代理服務(wù)器的健康狀況為下線時(shí),停止向該代理服務(wù)器發(fā)起請(qǐng)求;前端客戶端根據(jù)代理服務(wù)器健康狀況列表,確定某個(gè)代理服務(wù)器的健康狀況為在線時(shí),繼續(xù)向該代理服務(wù)器發(fā)起請(qǐng)求。

在代理服務(wù)器的系統(tǒng)需要停止服務(wù)時(shí),將該代理服務(wù)器的健康狀況設(shè)置為下線,并上報(bào)該代理服務(wù)器的健康狀況之后,隔預(yù)定時(shí)間之后,再對(duì)代理服務(wù)器的系統(tǒng)進(jìn)行升級(jí)或重啟。

方法實(shí)施例二

根據(jù)本發(fā)明的實(shí)施例,提供了一種業(yè)務(wù)請(qǐng)求方法,應(yīng)用于前端客戶端中,與上述方法實(shí)施例一的業(yè)務(wù)請(qǐng)求處理方法相對(duì)應(yīng),圖4是本發(fā)明實(shí)施例的業(yè)務(wù)請(qǐng)求方法的流程圖,如圖4所示,根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)請(qǐng)求處理方法包括 如下處理:

步驟401,定期發(fā)出代理服務(wù)器健康狀況請(qǐng)求消息;優(yōu)選地,可以定期向類名字服務(wù)系統(tǒng)發(fā)出代理服務(wù)器健康狀況請(qǐng)求消息。

步驟402,接收返回的代理服務(wù)器健康情況列表;優(yōu)選地,可以接收類名字服務(wù)系統(tǒng)返回的代理服務(wù)器健康情況列表。其中,類名字服務(wù)系統(tǒng)監(jiān)視鍵值存儲(chǔ)系統(tǒng)中存儲(chǔ)的代理服務(wù)器健康狀況列表;鍵值存儲(chǔ)系統(tǒng)實(shí)時(shí)獲取代理服務(wù)器上報(bào)的健康狀況,生成并存儲(chǔ)代理服務(wù)器健康狀況列表。

步驟403,從代理服務(wù)器健康情況列表中,選擇通過(guò)健康的代理服務(wù)器向分布式存儲(chǔ)平臺(tái)發(fā)送業(yè)務(wù)請(qǐng)求。

步驟403具體包括:

根據(jù)代理服務(wù)器健康狀況列表,確定某個(gè)代理服務(wù)器的健康狀況為下線時(shí),停止向該代理服務(wù)器發(fā)起請(qǐng)求;

根據(jù)代理服務(wù)器健康狀況列表,確定某個(gè)代理服務(wù)器的健康狀況為在線時(shí),繼續(xù)向該代理服務(wù)器發(fā)起請(qǐng)求。

下面以etcd為例,對(duì)本發(fā)明實(shí)施例的上述技術(shù)方案進(jìn)行舉例說(shuō)明。

在本發(fā)明實(shí)施例中,etcd是一個(gè)高可用的鍵值存儲(chǔ)系統(tǒng),主要用于共享配置和服務(wù)發(fā)現(xiàn)。etcd使用go語(yǔ)言編寫(xiě),并通過(guò)raft一致性算法處理日志復(fù)制以保證強(qiáng)一致性。etcd專門(mén)為集群環(huán)境的服務(wù)發(fā)現(xiàn)和注冊(cè)而設(shè)計(jì),它提供了數(shù)據(jù)ttl失效、數(shù)據(jù)改變監(jiān)視、多值、目錄監(jiān)聽(tīng)、以及分布式原子鎖等操作,可以方便的跟蹤和管理集群節(jié)點(diǎn)的狀態(tài)。圖5是本發(fā)明實(shí)施例的業(yè)務(wù)請(qǐng)求處理方法的詳細(xì)處理的流程圖,如圖5所示,具體包括如下處理:

步驟501,各個(gè)代理服務(wù)器(proxy)向etcd(對(duì)應(yīng)于方法實(shí)施例一中的鍵值存儲(chǔ)系統(tǒng))發(fā)送自身的健康狀況,其中,當(dāng)代理服務(wù)器的系統(tǒng)需要升級(jí)或重啟時(shí),該代理服務(wù)器的健康狀況為下線;

具體地,在步驟501中,在代理服務(wù)器的系統(tǒng)需要升級(jí)或重啟時(shí),將該代理服務(wù)器的健康狀況設(shè)置為下線,并向etcd上報(bào)該代理服務(wù)器的健康狀況; 在代理服務(wù)器的系統(tǒng)啟動(dòng)成功后,將該代理服務(wù)器的健康狀況設(shè)置為在線,并向etcd上報(bào)該代理服務(wù)器的健康狀況。

步驟502,etcd實(shí)時(shí)接收各個(gè)代理服務(wù)器發(fā)送的健康狀況,生成代理服務(wù)器健康狀況列表;

步驟503,類名字服務(wù)器(對(duì)應(yīng)于方法實(shí)施例一中的類名字服務(wù)系統(tǒng))從etcd中獲取代理服務(wù)器健康狀況列表并存儲(chǔ);

優(yōu)選地,在本發(fā)明實(shí)施例中,在etcd中的代理服務(wù)器健康狀況列表發(fā)生變化時(shí),向類名字服務(wù)器發(fā)送更新請(qǐng)求;通過(guò)類名字服務(wù)器從etcd中獲取更新的代理服務(wù)器健康狀況列表并存儲(chǔ)。

步驟504,類名字服務(wù)器接收前端客戶端定期發(fā)出的健康狀況請(qǐng)求消息,將代理服務(wù)器健康狀況列表反饋給前端客戶端,使前端客戶端根據(jù)代理服務(wù)器健康狀況列表向健康的代理服務(wù)器發(fā)送請(qǐng)求。

在步驟504中,前端客戶端根據(jù)代理服務(wù)器健康狀況列表向健康的代理服務(wù)器發(fā)送請(qǐng)求具體包括:

前端客戶端根據(jù)代理服務(wù)器健康狀況列表,確定某個(gè)代理服務(wù)器的健康狀況為下線時(shí),停止向該代理服務(wù)器發(fā)起請(qǐng)求;

前端客戶端根據(jù)代理服務(wù)器健康狀況列表,確定某個(gè)代理服務(wù)器的健康狀況為在線時(shí),繼續(xù)向該代理服務(wù)器發(fā)起請(qǐng)求。

優(yōu)選地,在本發(fā)明實(shí)施例中,在代理服務(wù)器的系統(tǒng)需要升級(jí)或重啟時(shí),將該代理服務(wù)器的健康狀況設(shè)置為下線,并向etcd上報(bào)該代理服務(wù)器的健康狀況之后,在預(yù)定時(shí)間之后,可以對(duì)代理服務(wù)器的系統(tǒng)進(jìn)行升級(jí)或重啟。

從上述描述可以看出,本發(fā)明實(shí)施例的技術(shù)方案通過(guò)增加etcd高可用鍵值存儲(chǔ)系統(tǒng)和類名字服務(wù)系統(tǒng),通過(guò)類名字服務(wù)系統(tǒng)實(shí)時(shí)感知后端系統(tǒng)的健康狀況的變更,同時(shí)使用者定期向類名字服務(wù)系統(tǒng)拉取后端服務(wù)系統(tǒng)的健康狀況,以此來(lái)獲取哪些服務(wù)可用,哪些服務(wù)目前不可用來(lái)避免請(qǐng)求丟失和失敗。將升級(jí)重啟時(shí),請(qǐng)求的失敗數(shù)降為最低。

從上述描述可以看出,本發(fā)明實(shí)施例的proxy系統(tǒng)的平滑升級(jí)需要幾個(gè)組成部分:etcd高可用的鍵值存儲(chǔ)系統(tǒng),主要用于服務(wù)發(fā)現(xiàn);類名字服務(wù)系統(tǒng)(即上述類名字服務(wù)器),主要用于存儲(chǔ)和監(jiān)視etcd中存儲(chǔ)的proxy健康狀況列表;前端客戶端定期向類名字服務(wù)系統(tǒng)拉取proxy健康狀況列表,決定向哪些proxy系統(tǒng)發(fā)請(qǐng)求。

首先,需要啟動(dòng)etcd,用于存儲(chǔ)proxy健康狀況,記錄proxy的ip及相應(yīng)的服務(wù)的狀態(tài)(online、offline),同時(shí)向類名字服務(wù)系統(tǒng)提供監(jiān)視服務(wù),實(shí)時(shí)獲取proxy健康狀況列表。

其次,啟動(dòng)類名字服務(wù)系統(tǒng),并監(jiān)視到etcd中proxy健康狀況的列表,并向前端客戶端提供查詢proxy健康狀況的服務(wù)。

再次,當(dāng)啟動(dòng)proxy系統(tǒng)時(shí),當(dāng)啟動(dòng)成功后proxy會(huì)將自己的健康狀況上報(bào)給etcd并存儲(chǔ)。etcd此時(shí)的proxy列表有所改變,類名字服務(wù)系統(tǒng)即收到proxy健康狀況變更的響應(yīng),類名字服務(wù)系統(tǒng)會(huì)實(shí)時(shí)存儲(chǔ)該信息供前端客戶端定期查詢,而前端客戶端每隔1-5分鐘便會(huì)都調(diào)用查詢接口獲取proxy健康狀況列表,決定向哪些健康的proxy發(fā)起請(qǐng)求,拒絕向哪些proxy再次發(fā)起請(qǐng)求。

當(dāng)某臺(tái)proxy系統(tǒng)需要升級(jí)時(shí),會(huì)更改該proxy的健康狀況,而該健康狀態(tài)通過(guò)etcd和類名字服務(wù)系統(tǒng),最終在一個(gè)較短的時(shí)間間隔內(nèi)便會(huì)被前端客戶端感知,后面便停止向該proxy發(fā)起請(qǐng)求。當(dāng)經(jīng)過(guò)這個(gè)較短的時(shí)間間隔后,proxy系統(tǒng)便可以毫無(wú)顧慮的進(jìn)行升級(jí)重啟操作而不會(huì)產(chǎn)生失敗的請(qǐng)求影響用戶體驗(yàn)。成功重啟后的proxy正常接收請(qǐng)求。

本發(fā)明實(shí)施例的技術(shù)方案通過(guò)在etcd中記錄所有proxy的ip及相應(yīng)的服務(wù)的狀態(tài)(online、offline)可以使得前端客戶端能清晰了解到當(dāng)前proxy的健康狀況,從而選擇當(dāng)前較為穩(wěn)定的proxy作為請(qǐng)求對(duì)象。當(dāng)某臺(tái)proxy需要做升級(jí)或重啟時(shí),只需要簡(jiǎn)單的修改該proxy的狀態(tài)為offline,并等待proxy中已經(jīng)在處理的消息處理完畢,前端調(diào)用方便不會(huì)繼續(xù)向proxy發(fā)送請(qǐng)求,將升級(jí)重啟導(dǎo)致的請(qǐng)求失敗降為0。在proxy升級(jí)完畢后,重新啟動(dòng)proxy,當(dāng)啟 動(dòng)成功后系統(tǒng)內(nèi)部會(huì)自動(dòng)修改服務(wù)狀態(tài)為online狀態(tài),當(dāng)前端使用者發(fā)現(xiàn)服務(wù)正常后,會(huì)將請(qǐng)求重新分配到該proxy上。一次正常的服務(wù)升級(jí)完成,對(duì)于前端使用者完全透明,對(duì)于業(yè)務(wù)沒(méi)有任何影響。

本發(fā)明實(shí)施例利用etcd提供的服務(wù)發(fā)現(xiàn)功能,使得前端客戶端通過(guò)查看(監(jiān)視)相關(guān)目錄來(lái)實(shí)時(shí)捕獲到proxy的健康狀況,前端客戶端通過(guò)獲取proxy的健康狀況來(lái)決定向哪些proxy發(fā)送請(qǐng)求。對(duì)于不健康的proxy立即停止發(fā)送請(qǐng)求,而proxy在系統(tǒng)重啟前需要修改自身的健康狀態(tài)為下線(offline)。使得在proxy升級(jí)重啟時(shí)做到對(duì)前端客戶端完全透明,前端客戶端請(qǐng)求失敗數(shù)為零,提升系統(tǒng)的可用性和用戶體驗(yàn)。

裝置實(shí)施例一

根據(jù)本發(fā)明的實(shí)施例,提供了一種業(yè)務(wù)請(qǐng)求處理裝置,圖6是本發(fā)明實(shí)施例的業(yè)務(wù)請(qǐng)求處理裝置的結(jié)構(gòu)示意圖,如圖6所示,根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)請(qǐng)求處理裝置包括:監(jiān)控模塊60、以及反饋模塊62,以下對(duì)本發(fā)明實(shí)施例的各個(gè)模塊進(jìn)行詳細(xì)的說(shuō)明。

監(jiān)控模塊60,用于實(shí)時(shí)監(jiān)控各個(gè)代理服務(wù)器的健康狀況,生成代理服務(wù)器健康狀況列表;監(jiān)控模塊60具體用于:在代理服務(wù)器的系統(tǒng)需要停止服務(wù)時(shí),將該代理服務(wù)器的健康狀況設(shè)置為下線,并上報(bào)該代理服務(wù)器的健康狀況;在代理服務(wù)器的系統(tǒng)恢復(fù)服務(wù)后,將該代理服務(wù)器的健康狀況設(shè)置為在線,并向上報(bào)該代理服務(wù)器的健康狀況。

反饋模塊62,用于接收前端客戶端定期發(fā)出的代理服務(wù)器健康狀況請(qǐng)求消息,將代理服務(wù)器健康狀況列表反饋給前端客戶端,使前端客戶端根據(jù)代理服務(wù)器健康狀況列表向健康的代理服務(wù)器發(fā)送請(qǐng)求。

上述裝置還包括:

鍵值存儲(chǔ)模塊,用于生成代理服務(wù)器健康狀況列表之后,啟動(dòng)鍵值存儲(chǔ)系統(tǒng),向類名字服務(wù)系統(tǒng)提供監(jiān)視服務(wù),實(shí)時(shí)獲取并存儲(chǔ)代理服務(wù)器健康狀況列表。鍵值存儲(chǔ)模塊進(jìn)一步用于:在鍵值存儲(chǔ)系統(tǒng)中的代理服務(wù)器健康狀況列表 發(fā)生變化時(shí),向類名字服務(wù)系統(tǒng)發(fā)送更新請(qǐng)求;

類名字服務(wù)模塊,用于將代理服務(wù)器健康狀況列表反饋給前端客戶端之前,啟動(dòng)類名字服務(wù)系統(tǒng),監(jiān)視鍵值存儲(chǔ)系統(tǒng)中存儲(chǔ)的代理服務(wù)器健康狀況列表,并響應(yīng)前端客戶端定期發(fā)出的代理服務(wù)器健康狀況請(qǐng)求消息。類名字服務(wù)模塊進(jìn)一步用于,通過(guò)類名字服務(wù)系統(tǒng)從鍵值存儲(chǔ)系統(tǒng)中獲取更新的代理服務(wù)器健康狀況列表。

重啟模塊,用于在監(jiān)控模塊將該代理服務(wù)器的健康狀況設(shè)置為下線,并上報(bào)該代理服務(wù)器的健康狀況之后,在預(yù)定時(shí)間之后,對(duì)代理服務(wù)器的系統(tǒng)進(jìn)行升級(jí)或重啟。

裝置實(shí)施例二

根據(jù)本發(fā)明的實(shí)施例,提供了一種業(yè)務(wù)請(qǐng)求裝置,設(shè)置于前端客戶端中,圖7是本發(fā)明實(shí)施例的業(yè)務(wù)請(qǐng)求裝置的結(jié)構(gòu)示意圖,如圖7所示,根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)請(qǐng)求裝置包括:發(fā)送模塊70、接收模塊72、以及請(qǐng)求模塊74,以下對(duì)本發(fā)明實(shí)施例的各個(gè)模塊進(jìn)行詳細(xì)的說(shuō)明。

發(fā)送模塊70,用于定期發(fā)出代理服務(wù)器健康狀況請(qǐng)求消息;所述發(fā)送模塊70進(jìn)一步用于:定期向類名字服務(wù)系統(tǒng)發(fā)出代理服務(wù)器健康狀況請(qǐng)求消息。

接收模塊72,用于接收返回的代理服務(wù)器健康情況列表;所述接收模塊72進(jìn)一步用于:接收類名字服務(wù)系統(tǒng)返回的代理服務(wù)器健康情況列表。

請(qǐng)求模塊74,用于從所述代理服務(wù)器健康情況列表中,選擇通過(guò)健康的代理服務(wù)器向分布式存儲(chǔ)平臺(tái)發(fā)送業(yè)務(wù)請(qǐng)求。所述請(qǐng)求模塊74具體用于:

根據(jù)所述代理服務(wù)器健康狀況列表,確定某個(gè)代理服務(wù)器的健康狀況為下線時(shí),停止向該代理服務(wù)器發(fā)起請(qǐng)求;根據(jù)所述代理服務(wù)器健康狀況列表,確定某個(gè)代理服務(wù)器的健康狀況為在線時(shí),繼續(xù)向該代理服務(wù)器發(fā)起請(qǐng)求。

以下結(jié)合裝置實(shí)施例一和裝置實(shí)施例二,以etcd為例,進(jìn)行舉例說(shuō)明。

圖8是本發(fā)明實(shí)施例的系統(tǒng)的結(jié)構(gòu)示意圖,如圖8所示,根據(jù)本發(fā)明實(shí)施例的平滑升級(jí)系統(tǒng)包括:代理服務(wù)器80、etcd82、類名字服務(wù)器84、以及前 端客戶端86,以下對(duì)本發(fā)明實(shí)施例的各個(gè)模塊進(jìn)行詳細(xì)的說(shuō)明。

代理服務(wù)器80,用于向etcd82發(fā)送自身的健康狀況;代理服務(wù)器80具體用于:在系統(tǒng)需要升級(jí)或重啟時(shí),將自身的健康狀況設(shè)置為下線,并向etcd82上報(bào)自身的健康狀況;在系統(tǒng)啟動(dòng)成功后,將自身的健康狀況設(shè)置為在線,并向etcd82上報(bào)該自身的健康狀況。

代理服務(wù)器80進(jìn)一步用于:在向etcd82上報(bào)自身的健康狀況為下線之后,在預(yù)定時(shí)間之后,對(duì)代理服務(wù)器80的系統(tǒng)進(jìn)行升級(jí)或重啟。

etcd82,用于實(shí)時(shí)接收各個(gè)代理服務(wù)器80發(fā)送的健康狀況,生成代理服務(wù)器80健康狀況列表,其中,當(dāng)代理服務(wù)器80的系統(tǒng)需要升級(jí)或重啟時(shí),該代理服務(wù)器80的健康狀況為下線;etcd82具體用于:在etcd82中的代理服務(wù)器80健康狀況列表發(fā)生變化時(shí),向類名字服務(wù)器84發(fā)送更新請(qǐng)求;

類名字服務(wù)器84,用于從etcd82中獲取代理服務(wù)器80健康狀況列表并存儲(chǔ);接收前端客戶端86定期發(fā)出的健康狀況請(qǐng)求消息,將代理服務(wù)器80健康狀況列表反饋給前端客戶端86;類名字服務(wù)器84具體用于:從etcd82中獲取更新的代理服務(wù)器80健康狀況列表并存儲(chǔ)。

前端客戶端86,用于根據(jù)代理服務(wù)器80健康狀況列表向健康的代理服務(wù)器80發(fā)送請(qǐng)求。前端客戶端86具體用于:根據(jù)代理服務(wù)器80健康狀況列表,確定某個(gè)代理服務(wù)器80的健康狀況為下線時(shí),停止向該代理服務(wù)器80發(fā)起請(qǐng)求;根據(jù)代理服務(wù)器80健康狀況列表,確定某個(gè)代理服務(wù)器80的健康狀況為在線時(shí),繼續(xù)向該代理服務(wù)器80發(fā)起請(qǐng)求。

綜上所述,利用etcd提供的服務(wù)發(fā)現(xiàn)功能,前端客戶端從類名字服務(wù)器實(shí)時(shí)獲取各個(gè)代理服務(wù)器的健康狀況,并根據(jù)代理服務(wù)器的健康狀況來(lái)決定向哪些代理服務(wù)器發(fā)送請(qǐng)求,解決了現(xiàn)有技術(shù)中proxy升級(jí)或重啟使線上業(yè)務(wù)的請(qǐng)求失敗的問(wèn)題,能夠在proxy升級(jí)重啟時(shí)做到對(duì)前端客戶端完全透明,前端客戶端請(qǐng)求失敗數(shù)為零,使proxy重啟不影響業(yè)務(wù)和用戶體驗(yàn),從而提升系統(tǒng)的可用性和用戶體驗(yàn)。

顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。

在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見(jiàn)的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。

在此處所提供的說(shuō)明書(shū)中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書(shū)的理解。

類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書(shū)所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書(shū)由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。

本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的客戶端中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)客戶端中??梢园褜?shí)施例中的模塊組合成一個(gè)模塊,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者客戶端的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(shū)(包括伴隨的權(quán)利要求、摘要和附圖)中公 開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。

此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書(shū)中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。

本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(dsp)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的加載有排序網(wǎng)址的客戶端中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。

應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1