專利名稱:一種灰度發(fā)布的處理方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及網(wǎng)絡(luò)技術(shù),特別是涉及一種灰度發(fā)布的處理方法,以及,一種灰度發(fā)布的處理系統(tǒng)。
背景技術(shù):
灰度發(fā)布是平滑過渡的一種發(fā)布方式。例如,AB test就是一種灰度發(fā)布方式,可以讓一部用戶繼續(xù)用A,一部分用戶開始用B,如果用戶對(duì)B沒有什么反對(duì)意見,那么逐步擴(kuò)大B的發(fā)布范圍,最終把所有用戶都遷移到B上來?;叶劝l(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時(shí)候就可以發(fā)現(xiàn)、調(diào)整問題,以保證其影響度。對(duì)于互聯(lián)網(wǎng)產(chǎn)品,有一個(gè)特點(diǎn)就是不停的升級(jí)、升級(jí)、再升級(jí)。系統(tǒng)升級(jí)總是伴隨著風(fēng)險(xiǎn),新舊版本兼容的風(fēng)險(xiǎn),用戶使用習(xí)慣突然改變而造成用戶流失的風(fēng)險(xiǎn),系統(tǒng)宕機(jī)的風(fēng)險(xiǎn)。為了避免這些風(fēng)險(xiǎn),很多產(chǎn)品都采用了灰度發(fā)布的策略,其主要思想就是把影響集中到一個(gè)點(diǎn),然后再發(fā)散到一個(gè)面,出現(xiàn)意外情況時(shí),很容易回退,避免造成大范圍的影響。具體來說,當(dāng)增加新功能或采用改進(jìn)技術(shù)的互聯(lián)網(wǎng)產(chǎn)品上線發(fā)布前,如果新的發(fā)布影響面較大時(shí),會(huì)考慮先切分部分用戶流量進(jìn)來,讓這部分用戶先體驗(yàn)新的互聯(lián)網(wǎng)產(chǎn)品,開發(fā)人員可以根據(jù)這部分用戶產(chǎn)生的數(shù)據(jù)對(duì)新的互聯(lián)網(wǎng)產(chǎn)品進(jìn)行不斷優(yōu)化,最終正式上線發(fā)布,然后再讓所有用戶使用。這種灰度發(fā)布方法降低了發(fā)布新功能的風(fēng)險(xiǎn),實(shí)現(xiàn)了平滑的發(fā)布。為了實(shí)現(xiàn)灰度發(fā)布,現(xiàn)有的處理方法是:對(duì)原有的功能代碼進(jìn)行修改,在原有代碼中增加實(shí)現(xiàn)新功能或新技術(shù)的灰度代碼,同時(shí)還保留原有代碼中對(duì)舊功能或舊技術(shù)的處理代碼,然后全量發(fā)布修改后的功能代碼來替代原有代碼。這套修改后的功能代碼可以讓部分用戶流量切入進(jìn)來使用灰度代碼體驗(yàn)新功能或新技術(shù),其余用戶仍使用原有代碼。在此過程中,隨著新功能或新技術(shù)的不斷完善,還會(huì)繼續(xù)修改這套功能代碼,直到正式上線。上述方法雖然實(shí)現(xiàn)了灰度發(fā)布,但是在整個(gè)灰度發(fā)布過程中,每當(dāng)灰度代碼有完善時(shí)就需要修改整個(gè)功能代碼,每次修改之后還要進(jìn)行全量發(fā)布,工作量大,耗費(fèi)時(shí)間,還需要技術(shù)人員非常了解原有的功能代碼。對(duì)于系統(tǒng)中的多個(gè)項(xiàng)目應(yīng)用,每個(gè)項(xiàng)目應(yīng)用的改變都需要修改該項(xiàng)目的原有代碼,更加花費(fèi)時(shí)間,可能導(dǎo)致項(xiàng)目上線延期。而且,多次修改原有的功能代碼無形中對(duì)原有代碼的穩(wěn)定性產(chǎn)生了沖擊,提高了發(fā)布的風(fēng)險(xiǎn)。
發(fā)明內(nèi)容
本申請(qǐng)的目的在于,提供了一種灰度發(fā)布的處理方法及系統(tǒng),以解決目前的處理方法工作量大、發(fā)布風(fēng)險(xiǎn)高的問題。為了解決上述問題,本申請(qǐng)公開了一種灰度發(fā)布的處理方法,包括:將應(yīng)用的穩(wěn)定代碼和灰度代碼分別發(fā)布到不同服務(wù)器上,并加載該應(yīng)用的灰度配
置信息;接收請(qǐng)求,并從請(qǐng)求的參數(shù)信息中提取用于灰度判斷的灰度數(shù)據(jù);
根據(jù)所述灰度配置信息對(duì)所述灰度數(shù)據(jù)進(jìn)行判斷,確定該請(qǐng)求是否參與灰度發(fā)布;若參與,則將該請(qǐng)求分配到灰度代碼所在的服務(wù)器處理;若不參與,則將該請(qǐng)求分配到穩(wěn)定代碼所在的服務(wù)器處理。優(yōu)選的,所述方法還包括:若修改該應(yīng)用的灰度代碼,則重新將修改后的灰度代碼發(fā)布到對(duì)應(yīng)的服務(wù)器上;和/或,若修改該應(yīng)用的灰度配置信息,則重新加載修改后的灰度
配置信息。優(yōu)選的,所述灰度數(shù)據(jù)包含請(qǐng)求的網(wǎng)頁鏈接地址信息,和/或請(qǐng)求的IP地址信息,和/或請(qǐng)求的Cookie信息。優(yōu)選的,根據(jù)所述灰度配置信息對(duì)所述灰度數(shù)據(jù)進(jìn)行判斷,確定該請(qǐng)求是否參與灰度發(fā)布,包括:判斷灰度數(shù)據(jù)中請(qǐng)求的網(wǎng)頁鏈接地址信息是否與灰度配置信息中設(shè)定的網(wǎng)頁鏈接地址信息相匹配,若匹配,則確定該請(qǐng)求參與灰度發(fā)布;否則,確定該請(qǐng)求不參與灰度發(fā)布。優(yōu)選的,根據(jù)所述灰度配置信息對(duì)所述灰度數(shù)據(jù)進(jìn)行判斷,確定該請(qǐng)求是否參與灰度發(fā)布,包括:判斷灰度數(shù)據(jù)中請(qǐng)求的IP地址信息是否在灰度配置信息設(shè)定的IP地址范圍內(nèi),若是,則確定該請(qǐng)求參與灰度發(fā)布;否則,確定該請(qǐng)求不參與灰度發(fā)布。優(yōu)選的,根據(jù)所述灰度配置信息對(duì)所述灰度數(shù)據(jù)進(jìn)行判斷,確定該請(qǐng)求是否參與灰度發(fā)布,包括:判斷灰度數(shù)據(jù)中請(qǐng)求的Cookie信息是否為當(dāng)前有效Cookie,若是,則確定該請(qǐng)求參與灰度發(fā)布;否則,確定該請(qǐng)求不參與灰度發(fā)布。優(yōu)選的,根據(jù)所述灰度配置信息對(duì)所述灰度數(shù)據(jù)進(jìn)行判斷,確定該請(qǐng)求是否參與灰度發(fā)布,包括:判斷灰度數(shù)據(jù)中請(qǐng)求的Cookie信息是否為當(dāng)前有效Cookie,若是,則確定該請(qǐng)求參與灰度發(fā)布;否則,從所述請(qǐng)求的Cookie信息中提取用戶標(biāo)識(shí)信息,并查看緩存中對(duì)應(yīng)該應(yīng)用的灰度用戶名單中是否包含該用戶標(biāo)識(shí)信息,若包含,則確定該請(qǐng)求參與灰度發(fā)布,若不包含,則確定該請(qǐng)求不參與灰度發(fā)布。優(yōu)選的,所述確定該請(qǐng)求是否參與灰度發(fā)布之后,還包括:若確定該請(qǐng)求參與灰度發(fā)布,則將該請(qǐng)求的Cookie值標(biāo)記為灰度Cookie ;根據(jù)該請(qǐng)求的Cookie值分配請(qǐng)求。本申請(qǐng)還提供了一種灰度發(fā)布的處理系統(tǒng),包括:第一應(yīng)用服務(wù)器,用于發(fā)布應(yīng)用的穩(wěn)定代碼;第二應(yīng)用服務(wù)器,用于發(fā)布應(yīng)用的灰度代碼;分流服務(wù)器,具體包括:配置加載模塊,用于加載該應(yīng)用的灰度配置信息;請(qǐng)求處理模塊,用于接收請(qǐng)求,并從請(qǐng)求的參數(shù)信息中提取用于灰度判斷的灰度數(shù)據(jù);灰度判斷模塊,用于根據(jù)所述灰度配置信息對(duì)所述灰度數(shù)據(jù)進(jìn)行判斷,確定該請(qǐng)求是否參與灰度發(fā)布;請(qǐng)求分流模塊,用于當(dāng)該請(qǐng)求參與灰度發(fā)布時(shí),將該請(qǐng)求分配到灰度代碼所在的第二服務(wù)器處理;當(dāng)該請(qǐng)求不參與灰度發(fā)布時(shí),將該請(qǐng)求分配到穩(wěn)定代碼所在的第一服務(wù)器處理。優(yōu)選的,所述灰度數(shù)據(jù)包含請(qǐng)求的網(wǎng)頁鏈接地址信息,和/或請(qǐng)求的IP地址信息,和/或請(qǐng)求的Cookie信息。優(yōu)選的,所述分流服務(wù)器還包括:灰度標(biāo)記模塊,用于當(dāng)灰度判斷模塊確定該請(qǐng)求參與灰度發(fā)布時(shí),將該請(qǐng)求的Cookie值標(biāo)記為灰度Cookie ;所述請(qǐng)求分流模塊根據(jù)該請(qǐng)求的Cookie值分配請(qǐng)求。優(yōu)選的,所述系統(tǒng)還包括:緩存服務(wù)器,用于緩存應(yīng)用的灰度用戶名單;灰度判斷模塊當(dāng)判斷灰度數(shù)據(jù)中請(qǐng)求的Cookie信息不是當(dāng)前有效Cookie時(shí),從所述請(qǐng)求的Cookie信息中提取用戶標(biāo)識(shí)信息,并查看所述緩存服務(wù)器中對(duì)應(yīng)該應(yīng)用的灰度用戶名單中是否包含該用戶標(biāo)識(shí)信息,若包含,則確定該請(qǐng)求參與灰度發(fā)布,若不包含,則確定該請(qǐng)求不參與灰度發(fā)布。與現(xiàn)有技術(shù)相比,本申請(qǐng)包括以下優(yōu)點(diǎn):首先,本申請(qǐng)將應(yīng)用的穩(wěn)定代碼和灰度代碼分別發(fā)布到不同服務(wù)器上,并通過配置的方式判斷請(qǐng)求,將參與灰度發(fā)布的請(qǐng)求分配到灰度代碼所在的服務(wù)器處理,并將不參與灰度發(fā)布的請(qǐng)求分配到穩(wěn)定代碼所在的服務(wù)器處理。這種配置的方式提供了一種通用方案,無論哪個(gè)項(xiàng)目應(yīng)用發(fā)布灰度功能,只需將實(shí)現(xiàn)灰度功能的灰度代碼和原有的穩(wěn)定代碼分開,并進(jìn)行灰度配置,就可以自動(dòng)根據(jù)配置將請(qǐng)求分配到不同的服務(wù)器上處理,無需再對(duì)每個(gè)應(yīng)用的穩(wěn)定代碼進(jìn)行大量修改,省去了項(xiàng)目中為了灰度發(fā)布額外增加的資源投入,大大減少了工作量,提高了工作效率。而且,灰度代碼的修改不會(huì)影響原有的穩(wěn)定代碼,保護(hù)了穩(wěn)定代碼不被灰度功能干擾,降低了發(fā)布風(fēng)險(xiǎn)。其次,本申請(qǐng)根據(jù)接收到的請(qǐng)求,直接利用請(qǐng)求中的參數(shù)信息進(jìn)行灰度判斷,無需額外獲取數(shù)據(jù)進(jìn)行判斷,實(shí)現(xiàn)簡單,易于推廣。當(dāng)然,實(shí)施本申請(qǐng)的任一產(chǎn)品不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
圖1是本申請(qǐng)實(shí)施例所述一種灰度發(fā)布的處理方法流程圖;圖2是本申請(qǐng)實(shí)施例所述一種灰度發(fā)布的處理系統(tǒng)結(jié)構(gòu)圖;圖3是本申請(qǐng)另一實(shí)施例所述的灰度發(fā)布處理系統(tǒng)圖;圖4是圖3所示系統(tǒng)的功能處理示意圖;圖5是圖3所示系統(tǒng)中分流服務(wù)器的處理流程圖。
具體實(shí)施例方式為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說明。本申請(qǐng)將應(yīng)用的功能代碼分為穩(wěn)定代碼(也稱為主干代碼)和灰度代碼(也稱為分支代碼)兩部分,其中主干代碼為運(yùn)行穩(wěn)定的原有功能代碼,分支代碼為加入新功能或技術(shù)改進(jìn)后實(shí)現(xiàn)灰度功能的新代碼,灰度代碼經(jīng)測試后才能完全上線使用。本申請(qǐng)?zhí)峁┝艘环N灰度發(fā)布的處理方法及系統(tǒng),將應(yīng)用的穩(wěn)定代碼和灰度代碼分開,并通過配置的方式判斷請(qǐng)求是否參與灰度發(fā)布,若參與則將請(qǐng)求分配到灰度代碼所在的服務(wù)器處理,若不參與則分配到穩(wěn)定代碼所在的服務(wù)器處理。下面通過實(shí)施例對(duì)本申請(qǐng)所述方法的實(shí)現(xiàn)流程進(jìn)行詳細(xì)說明。
參照?qǐng)D1,其為本申請(qǐng)實(shí)施例所述一種灰度發(fā)布的處理方法流程圖。步驟101,將應(yīng)用的穩(wěn)定代碼和灰度代碼分別發(fā)布到不同服務(wù)器上,并加載該應(yīng)用的灰度配置信息;將灰度代碼和穩(wěn)定代碼分開而不是混合在一起,可以避免灰度代碼干擾穩(wěn)定代碼的執(zhí)行。所述灰度配置信息用于判定使用穩(wěn)定代碼還是灰度代碼處理用戶請(qǐng)求,可根據(jù)每個(gè)應(yīng)用的需求預(yù)先設(shè)定不同的灰度配置信息。步驟102,接收請(qǐng)求,并從請(qǐng)求的參數(shù)信息中提取用于灰度判斷的灰度數(shù)據(jù);在實(shí)際應(yīng)用中,一個(gè)請(qǐng)求的參數(shù)信息中包含很多有價(jià)值的信息,如請(qǐng)求的網(wǎng)頁鏈接地址信息,如要訪問的網(wǎng)頁URL ;和/或,請(qǐng)求的IP地址信息,即發(fā)出請(qǐng)求的客戶端機(jī)器的IP ;和/或,請(qǐng)求的Cookie信息,等等,在網(wǎng)上交易系統(tǒng)中還可能包含訂單號(hào)等交易信息。這些參數(shù)信息中的很多信息都可以用來進(jìn)行灰度判斷,即判斷請(qǐng)求是否參與灰度發(fā)布,所述用于灰度判斷的信息稱為灰度數(shù)據(jù)。這種直接利用請(qǐng)求中的參數(shù)信息進(jìn)行灰度判斷的方式,無需額外獲取數(shù)據(jù)進(jìn)行判斷,實(shí)現(xiàn)簡單,易于推廣。步驟103,根據(jù)所述灰度配置信息對(duì)所述灰度數(shù)據(jù)進(jìn)行判斷,確定該請(qǐng)求是否參與灰度發(fā)布;若參與,執(zhí)行步驟104 ;否則,執(zhí)行步驟105?;叶扰渲眯畔⒅性O(shè)定了灰度判斷的策略,灰度配置信息不同,需要判斷的灰度數(shù)據(jù)也不同。下面列舉幾種灰度判斷的例子,具體如下:I)判斷灰度數(shù)據(jù)中請(qǐng)求的網(wǎng)頁鏈接地址信息(如URL)是否與灰度配置信息中設(shè)定的網(wǎng)頁鏈接地址信息相匹配,若匹配,則確定該請(qǐng)求參與灰度發(fā)布;否則,確定該請(qǐng)求不參與灰度發(fā)布。例如,灰度配置信息中設(shè)定了參與灰度發(fā)布的URL列表,當(dāng)請(qǐng)求訪問的URL包含在所述列表中時(shí),可以確定該請(qǐng)求參與灰度發(fā)布;若URL列表中沒有請(qǐng)求訪問的URL,則確定該請(qǐng)求不參與灰度發(fā)布。2)判斷灰度數(shù)據(jù)中請(qǐng)求的IP地址信息是否在灰度配置信息設(shè)定的IP地址范圍內(nèi),若是,則確定該請(qǐng)求參與灰度發(fā)布;否則,確定該請(qǐng)求不參與灰度發(fā)布。例如,灰度配置信息中設(shè)定了參與灰度發(fā)布的IP地址區(qū)間,當(dāng)請(qǐng)求的客戶端IP地址包含在所述區(qū)間內(nèi)時(shí),可以確定該請(qǐng)求參與灰度發(fā)布;若請(qǐng)求的客戶端IP地址不在該IP地址區(qū)間內(nèi),則確定該請(qǐng)求不參與灰度發(fā)布。3)判斷灰度數(shù)據(jù)中請(qǐng)求的Cookie信息是否為當(dāng)前有效Cookie,根據(jù)判斷結(jié)果,確定該請(qǐng)求是否參與灰度發(fā)布。Cookie是指某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密)。Cookie是由服務(wù)器端生成,發(fā)送給User-Agent (—般是瀏覽器),瀏覽器會(huì)將Cookie的名稱和值(key/value)保存到某個(gè)目錄下的文本文件內(nèi),下次請(qǐng)求同一網(wǎng)站時(shí)就發(fā)送該Cookie給服務(wù)器(前提是瀏覽器設(shè)置為啟用Cookie)。Cookie名稱和值可以由服務(wù)器端開發(fā)自己定義,對(duì)于JSP而言也可以直接寫入jsessionid,這樣服務(wù)器可以知道該用戶是否合法用戶以及是否需要重新登錄等。由上可知,若用戶客戶端第一次請(qǐng)求登錄服務(wù)器,請(qǐng)求中的Cookie信息為空,月艮務(wù)器將生成對(duì)應(yīng)的Cookie信息并發(fā)給客戶端,客戶端若再次請(qǐng)求則攜帶該Cookie信息,月艮務(wù)器判斷該Cookie信息是否在設(shè)定的有效期內(nèi),即同一客戶端是否在有效的時(shí)間內(nèi)再次請(qǐng)求,如果在有效期內(nèi),則認(rèn)為該Cookie是當(dāng)前有效的Cookie ;如果再次請(qǐng)求距上一次請(qǐng)求的時(shí)間超過了有效時(shí)間,即再次請(qǐng)求的Cookie信息不在有效期內(nèi),則認(rèn)為該Cookie不是當(dāng)前有效的Cookie。例如,可以對(duì)于請(qǐng)求Cookie是當(dāng)前有效Cookie的請(qǐng)求,確定該請(qǐng)求參與或不參與灰度發(fā)布;反之,若請(qǐng)求Cookie不是當(dāng)前有效Cookie,或者,第一次請(qǐng)求Cookie為空時(shí),判斷該請(qǐng)求不參與或參與灰度發(fā)布。4)判斷灰度數(shù)據(jù)中請(qǐng)求的Cookie信息是否為當(dāng)前有效Cookie,若是,則確定該請(qǐng)求參與灰度發(fā)布;否則,從所述請(qǐng)求的Cookie信息中提取用戶標(biāo)識(shí)信息,并查看緩存中對(duì)應(yīng)該應(yīng)用的灰度用戶名單中是否包含該用戶標(biāo)識(shí)信息,若包含,則確定該請(qǐng)求參與灰度發(fā)布,若不包含,則確定該請(qǐng)求不參與灰度發(fā)布。本例是對(duì)第3)個(gè)例子的優(yōu)化,當(dāng)請(qǐng)求Cookie是當(dāng)前有效Cookie時(shí),同樣確定該請(qǐng)求參與灰度發(fā)布。但是,當(dāng)請(qǐng)求Cookie不是當(dāng)前有效Cookie時(shí),或者,第一次請(qǐng)求Cookie為空時(shí),將進(jìn)一步采用以下判斷方式:緩存中可存儲(chǔ)了大量的用戶信息,包含用戶標(biāo)識(shí)(如用戶ID)、用戶聯(lián)系方式等信息,在網(wǎng)上交易系統(tǒng)中,還可存儲(chǔ)用戶的交易信用評(píng)估度、交易成功率等信息。根據(jù)這些用戶信息,可以將緩存中符合某些條件的用戶設(shè)置為灰度用戶,并形成灰度用戶名單。當(dāng)請(qǐng)求Cookie不是當(dāng)前有效Cookie時(shí),或者,第一次請(qǐng)求Cookie為空時(shí),可以依據(jù)緩存中的灰度用戶名單判斷請(qǐng)求用戶是否為灰度用戶,如果是,則該請(qǐng)求同樣可以參與灰度發(fā)布;如果不是,則該請(qǐng)求不參與灰度發(fā)布。上述I)至4)列舉的四個(gè)例子可以單獨(dú)用于灰度判斷,也可以組合起來共同進(jìn)行灰度判斷,而且,實(shí)際應(yīng)用中還可以設(shè)定其他的灰度判斷的策略,本實(shí)施例不再一一列舉。步驟104,將該請(qǐng)求分配到灰度代碼所在的服務(wù)器處理;步驟105,將該請(qǐng)求分配到穩(wěn)定代碼所在的服務(wù)器處理。基于上述實(shí)施例,可選的,在步驟103確定該請(qǐng)求是否參與灰度發(fā)布之后,還可以包括以下步驟:若確定該請(qǐng)求參與灰度發(fā)布,則將該請(qǐng)求的Cookie值標(biāo)記為灰度Cookie ;若確定該請(qǐng)求不參與灰度發(fā)布,則可以不標(biāo)記該請(qǐng)求的Cookie值,也可以將其標(biāo)記為非灰度Cookie。通過這種標(biāo)記,可以根據(jù)該請(qǐng)求的Cookie值分配請(qǐng)求,即根據(jù)該Cookie值觸發(fā)執(zhí)行步驟104或者步驟105。當(dāng)然,除此方法也可以采用如消息通知等其他的方法觸發(fā)步驟104或步驟105。此外,還可以將標(biāo)記后的Cookie值返回給客戶端,以供前端的JS (javascript,一種腳本語言,采用HTML頁作為其接口 )使用?;谏鲜隽鞒蹋趯?shí)際應(yīng)用中,一個(gè)應(yīng)用系統(tǒng)中可能包含多個(gè)項(xiàng)目應(yīng)用,每個(gè)項(xiàng)目應(yīng)用都有自己的一套穩(wěn)定代碼。當(dāng)其中某個(gè)項(xiàng)目應(yīng)用增加新功能或進(jìn)行技術(shù)改進(jìn)時(shí),產(chǎn)生相應(yīng)的灰度代碼,灰度代碼可通過上述流程的處理方式進(jìn)行灰度發(fā)布及請(qǐng)求處理。應(yīng)用的灰度代碼正式上線之前,還可能會(huì)經(jīng)歷多次修改,若修改該應(yīng)用的灰度代碼,則重新將修改后的灰度代碼發(fā)布到對(duì)應(yīng)的服務(wù)器上;和/或,若修改該應(yīng)用的灰度配置信息,則重新加載修改后的灰度配置信息。綜上所述,這種配置的方式為灰度發(fā)布提供了一種通用方案,無論哪個(gè)項(xiàng)目應(yīng)用發(fā)布灰度功能,只需將實(shí)現(xiàn)灰度功能的灰度代碼和原有的穩(wěn)定代碼分開,并進(jìn)行灰度配置,就可以自動(dòng)根據(jù)配置將請(qǐng)求分配到不同的服務(wù)器上處理,無需再對(duì)每個(gè)應(yīng)用的穩(wěn)定代碼進(jìn)行大量修改,省去了項(xiàng)目中為了灰度發(fā)布額外增加的資源投入,大大減少了工作量,提高了工作效率。而且,灰度代碼的修改不會(huì)影響原有的穩(wěn)定代碼,保護(hù)了穩(wěn)定代碼不被灰度功能干擾,降低了發(fā)布風(fēng)險(xiǎn)。基于上述方法實(shí)施例的說明,本申請(qǐng)還提供了相應(yīng)的系統(tǒng)實(shí)施例,如圖2所示,是一種灰度發(fā)布的處理系統(tǒng)結(jié)構(gòu)圖。所述處理系統(tǒng)可以包括第一應(yīng)用服務(wù)器10、第二應(yīng)用服務(wù)器20和分流服務(wù)器30,其中:第一應(yīng)用服務(wù)器10,用于發(fā)布應(yīng)用的穩(wěn)定代碼;第二應(yīng)用服務(wù)器20,用于發(fā)布應(yīng)用的灰度代碼;分流服務(wù)器30,具體可以包括:配置加載模塊301,用于加載該應(yīng)用的灰度配置信息;請(qǐng)求處理模塊302,用于接收請(qǐng)求,并從請(qǐng)求的參數(shù)信息中提取用于灰度判斷的灰度數(shù)據(jù);灰度判斷模塊303,用于根據(jù)所述灰度配置信息對(duì)所述灰度數(shù)據(jù)進(jìn)行判斷,確定該請(qǐng)求是否參與灰度發(fā)布;請(qǐng)求分流模塊304,用于當(dāng)該請(qǐng)求參與灰度發(fā)布時(shí),將該請(qǐng)求分配到灰度代碼所在的第二服務(wù)器20處理;當(dāng)該請(qǐng)求不參與灰度發(fā)布時(shí),將該請(qǐng)求分配到穩(wěn)定代碼所在的第一服務(wù)器10處理。其中,所述灰度數(shù)據(jù)可以包含請(qǐng)求的網(wǎng)頁鏈接地址信息,和/或請(qǐng)求的IP地址信息,和/或請(qǐng)求的Cookie信息,等等?;谏鲜龅幕叶葦?shù)據(jù),所述分流服務(wù)器30中的灰度判斷模塊303可按照上述方法實(shí)施例中的I)至4)任意一種或幾種的組合方式進(jìn)行灰度判斷,在此不再詳述。其中,若灰度判斷模塊303采用第4)種判斷方式,則所述處理系統(tǒng)還可以包括:緩存服務(wù)器,用于緩存應(yīng)用的灰度用戶名單;灰度判斷模塊303當(dāng)判斷灰度數(shù)據(jù)中請(qǐng)求的Cookie信息不是當(dāng)前有效Cookie時(shí),可以從所述請(qǐng)求的Cookie信息中提取用戶標(biāo)識(shí)信息,并查看所述緩存服務(wù)器中對(duì)應(yīng)該應(yīng)用的灰度用戶名單中是否包含該用戶標(biāo)識(shí)信息,若包含,則確定該請(qǐng)求參與灰度發(fā)布,若不包含,則確定該請(qǐng)求不參與灰度發(fā)布。此外可選的,所述分流服務(wù)器30還可以包括以下模塊:灰度標(biāo)記模塊,用于當(dāng)灰度判斷模塊303確定該請(qǐng)求參與灰度發(fā)布時(shí),將該請(qǐng)求的Cookie值標(biāo)記為灰度Cookie ;當(dāng)灰度判斷模塊303確定該請(qǐng)求不參與灰度發(fā)布時(shí),不標(biāo)記該請(qǐng)求的Cookie值或者將該請(qǐng)求的Cookie值標(biāo)記為非灰度Cookie ;所述請(qǐng)求分流模塊304可以根據(jù)該請(qǐng)求的Cookie值分配請(qǐng)求到第一服務(wù)器10或第二服務(wù)器20處理。對(duì)于上述的灰度發(fā)布處理系統(tǒng)實(shí)施例,由于其與方法實(shí)施例基本相似,所以描述的比較簡單,相關(guān)之處參見圖1所示方法實(shí)施例的部分說明即可。基于上述內(nèi)容,為了使本領(lǐng)域技術(shù)人員更加了解本申請(qǐng),下面通過另一個(gè)實(shí)施例進(jìn)行說明。參照?qǐng)D3,其為本申請(qǐng)另一實(shí)施例所述的灰度發(fā)布處理系統(tǒng)圖。所述灰度發(fā)布處理系統(tǒng)包括應(yīng)用服務(wù)器-A、應(yīng)用服務(wù)器-B、分流服務(wù)器、緩存服務(wù)器以及后臺(tái)應(yīng)用服務(wù)器。其中,應(yīng)用服務(wù)器-A中運(yùn)行應(yīng)用的穩(wěn)定代碼,應(yīng)用服務(wù)器-B中運(yùn)行應(yīng)用的灰度代碼,其中灰度代碼會(huì)隨著數(shù)據(jù)分析而進(jìn)行調(diào)優(yōu)處理。分流服務(wù)器用于處理請(qǐng)求分配。緩存服務(wù)器中緩存了灰度用戶名單,用于分流服務(wù)器進(jìn)行灰度判斷。后臺(tái)應(yīng)用服務(wù)器中存儲(chǔ)了管理員配置的灰度配置信息和灰度用戶名單。使用所述灰度發(fā)布處理系統(tǒng)進(jìn)行灰度發(fā)布時(shí),主要包括以下三部分處理:第一,配置管理及推送;首先,管理員通過后臺(tái)應(yīng)用服務(wù)器,編輯當(dāng)前某個(gè)應(yīng)用的灰度配置信息(如指定URL列表、IP區(qū)間、灰度Cookie值等信息)和灰度用戶名單。然后,將灰度配置信息推送到分流服務(wù)器的分流模塊中,分流服務(wù)器將灰度配置信息寫入內(nèi)存使用,并持久化一份,用于應(yīng)用重啟時(shí)可自動(dòng)恢復(fù)重啟前的配置。同時(shí),還將灰度用戶名單寫入緩存服務(wù)器。第二,請(qǐng)求分流;用戶請(qǐng)求某個(gè)應(yīng)用,分流服務(wù)器接收用戶請(qǐng)求,并可以從請(qǐng)求的參數(shù)信息中得到IP地址、URL、Cookie等灰度數(shù)據(jù),然后按照推送過來的灰度配置信息,判斷用戶是否參與灰度發(fā)布,把請(qǐng)求轉(zhuǎn)發(fā)到應(yīng)用服務(wù)器-A或應(yīng)用服務(wù)器-B中,并將用戶的Cookie值設(shè)置成是否灰度。第三,啟動(dòng),停止,狀態(tài)監(jiān)控;管理員通過后臺(tái)應(yīng)用服務(wù)器,還可以控制分流服務(wù)器啟動(dòng)還是關(guān)閉當(dāng)前的分流模塊,并可以隨時(shí)查看當(dāng)前服務(wù)器狀態(tài)和配置信息。所述灰度發(fā)布處理系統(tǒng)的主要處理還可參見圖4所示的示意圖,其中,管理員主要負(fù)責(zé)編輯配置、初始化配置以及啟動(dòng)、停止、狀態(tài)監(jiān)控分流服務(wù)器上的分流模塊,分流模塊主要負(fù)責(zé)處理請(qǐng)求,并根據(jù)管理員的操作進(jìn)行初始化配置、啟動(dòng)、停止或狀態(tài)監(jiān)控?;趫D3所示的系統(tǒng),下面通過圖5所示流程說明分流服務(wù)器的處理邏輯。所示流程是以幾種判斷方式的組合為例進(jìn)行說明,當(dāng)分流服務(wù)器接收到用戶請(qǐng)求后,處理步驟如下:步驟501,判斷灰度功能是否啟用;若啟用,執(zhí)行步驟502 ;若未啟用,則執(zhí)行步驟509,將請(qǐng)求分配給應(yīng)用服務(wù)器-A ;步驟502,判斷請(qǐng)求信息中的URL是否匹配配置中指定的URL,或者,判斷請(qǐng)求信息中的IP地址是否在配置設(shè)定的指定IP地址區(qū)間內(nèi);如果URL匹配或配置中沒有指定,則執(zhí)行步驟503 ;否則,如果不匹配,表示不參與灰度發(fā)布,則執(zhí)行步驟509,將請(qǐng)求分配給應(yīng)用服務(wù)器-A ;同樣,如果IP地址在指定IP地址區(qū)間內(nèi)或配置中沒有設(shè)定,則執(zhí)行步驟503 ;否貝U,如果不在指定IP地址區(qū)間,則執(zhí)行步驟509,將請(qǐng)求分配給應(yīng)用服務(wù)器-A ;步驟503,判斷請(qǐng)求信息中的Cookie是否為當(dāng)前有效Cookie ;
如果為當(dāng)前有效Cookie,則執(zhí)行步驟507 ;否則,如果不是當(dāng)前有效Cookie,或者請(qǐng)求信息中的Cookie為空,則執(zhí)行步驟504 ;步驟504,從請(qǐng)求信息的Cookie中獲取用戶標(biāo)識(shí),并查看緩存的灰度用戶名單中是否存在該用戶標(biāo)識(shí);如果存在,則執(zhí)行步驟505 ;如果不存在,則執(zhí)行步驟506 ;其中,可以從會(huì)員用戶的Cookie中獲取用戶昵稱(ick信息);步驟505,將該請(qǐng)求的Cookie值寫為灰度,然后執(zhí)行步驟507 ;步驟506,將該請(qǐng)求的Cookie值寫為非灰度,然后執(zhí)行步驟507 ;步驟507,判斷改寫后的Cookie值是否為灰度;如果是灰度,表示參與灰度發(fā)布,則執(zhí)行步驟508 ;如果不是灰度,表示不參與灰度發(fā)布,則執(zhí)行步驟509 ;步驟508,將請(qǐng)求分配給應(yīng)用服務(wù)器-B ;步驟509,將請(qǐng)求分配給應(yīng)用服務(wù)器-K。上述方法保護(hù)了穩(wěn)定代碼不被灰度功能干擾,降低了發(fā)布風(fēng)險(xiǎn)。需要說明的是,對(duì)于前述的方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本申請(qǐng)并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本申請(qǐng),某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作并不一定是本申請(qǐng)所必需的。本說明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。最后,還需要說明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語僅僅用來將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,上文中的“和/或”表示本文既包含了 “和”的關(guān)系,也包含了 “或”的關(guān)系,其中:如果方案A與方案B是“和”的關(guān)系,則表示某實(shí)施例中可以同時(shí)包括方案A和方案B ;如果方案A與方案B是“或”的關(guān)系,則表示某實(shí)施例中可以單獨(dú)包括方案A,或者單獨(dú)包括方案B。以上對(duì)本申請(qǐng)所提供的一種灰度發(fā)布的處理方法及系統(tǒng),進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。
權(quán)利要求
1.一種灰度發(fā)布的處理方法,其特征在于,包括: 將應(yīng)用的穩(wěn)定代碼和灰度代碼分別發(fā)布到不同服務(wù)器上,并加載該應(yīng)用的灰度配置信息; 接收請(qǐng)求,并從請(qǐng)求的參數(shù)信息中提取用于灰度判斷的灰度數(shù)據(jù); 根據(jù)所述灰度配置信息對(duì)所述灰度數(shù)據(jù)進(jìn)行判斷,確定該請(qǐng)求是否參與灰度發(fā)布; 若參與,則將該請(qǐng)求分配到灰度代碼所在的服務(wù)器處理; 若不參與,則將該請(qǐng)求分配到穩(wěn)定代碼所在的服務(wù)器處理。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 若修改該應(yīng)用的灰度代碼,則重新將修改后的灰度代碼發(fā)布到對(duì)應(yīng)的服務(wù)器上; 和/或,若修改該應(yīng)用的灰度配置信息,則重新加載修改后的灰度配置信息。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于: 所述灰度數(shù)據(jù)包含請(qǐng)求的網(wǎng)頁鏈接地址信息,和/或請(qǐng)求的IP地址信息,和/或請(qǐng)求的Cookie信息。
4.根據(jù)權(quán)利要求3所述的方 法,其特征在于,根據(jù)所述灰度配置信息對(duì)所述灰度數(shù)據(jù)進(jìn)行判斷,確定該請(qǐng)求是否參與灰度發(fā)布,包括: 判斷灰度數(shù)據(jù)中請(qǐng)求的網(wǎng)頁鏈接地址信息是否與灰度配置信息中設(shè)定的網(wǎng)頁鏈接地址信息相匹配,若匹配,則確定該請(qǐng)求參與灰度發(fā)布;否則,確定該請(qǐng)求不參與灰度發(fā)布。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,根據(jù)所述灰度配置信息對(duì)所述灰度數(shù)據(jù)進(jìn)行判斷,確定該請(qǐng)求是否參與灰度發(fā)布,包括: 判斷灰度數(shù)據(jù)中請(qǐng)求的IP地址信息是否在灰度配置信息設(shè)定的IP地址范圍內(nèi),若是,則確定該請(qǐng)求參與灰度發(fā)布;否則,確定該請(qǐng)求不參與灰度發(fā)布。
6.根據(jù)權(quán)利要求3所述的方法,其特征在于,根據(jù)所述灰度配置信息對(duì)所述灰度數(shù)據(jù)進(jìn)行判斷,確定該請(qǐng)求是否參與灰度發(fā)布,包括: 判斷灰度數(shù)據(jù)中請(qǐng)求的Cookie信息是否為當(dāng)前有效Cookie,若是,則確定該請(qǐng)求參與灰度發(fā)布;否則,確定該請(qǐng)求不參與灰度發(fā)布。
7.根據(jù)權(quán)利要求3所述的方法,其特征在于,根據(jù)所述灰度配置信息對(duì)所述灰度數(shù)據(jù)進(jìn)行判斷,確定該請(qǐng)求是否參與灰度發(fā)布,包括: 判斷灰度數(shù)據(jù)中請(qǐng)求的Cookie信息是否為當(dāng)前有效Cookie,若是,則確定該請(qǐng)求參與灰度發(fā)布; 否則,從所述請(qǐng)求的Cookie信息中提取用戶標(biāo)識(shí)信息,并查看緩存中對(duì)應(yīng)該應(yīng)用的灰度用戶名單中是否包含該用戶標(biāo)識(shí)信息,若包含,則確定該請(qǐng)求參與灰度發(fā)布,若不包含,則確定該請(qǐng)求不參與灰度發(fā)布。
8.根據(jù)權(quán)利要求3至7任一所述的方法,其特征在于,所述確定該請(qǐng)求是否參與灰度發(fā)布之后,還包括: 若確定該請(qǐng)求參與灰度發(fā)布,則將該請(qǐng)求的Cookie值標(biāo)記為灰度Cookie ; 根據(jù)該請(qǐng)求的Cookie值分配請(qǐng)求。
9.一種灰度發(fā)布的處理系統(tǒng),其特征在于,包括: 第一應(yīng)用服務(wù)器,用于發(fā)布應(yīng)用的穩(wěn)定代碼; 第二應(yīng)用服務(wù)器,用于發(fā)布應(yīng)用的灰度代碼;分流服務(wù)器,具體包括: 配置加載模塊,用于加載該應(yīng)用的灰度配置信息; 請(qǐng)求處理模塊,用于接收請(qǐng)求,并從請(qǐng)求的參數(shù)信息中提取用于灰度判斷的灰度數(shù)據(jù); 灰度判斷模塊,用于根據(jù)所述灰度配置信息對(duì)所述灰度數(shù)據(jù)進(jìn)行判斷,確定該請(qǐng)求是否參與灰度發(fā)布; 請(qǐng)求分流模塊,用于當(dāng)該請(qǐng)求參與灰度發(fā)布時(shí),將該請(qǐng)求分配到灰度代碼所在的第二服務(wù)器處理;當(dāng)該請(qǐng)求不參與灰度發(fā)布時(shí),將該請(qǐng)求分配到穩(wěn)定代碼所在的第一服務(wù)器處理。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于: 所述灰度數(shù)據(jù)包含請(qǐng)求的網(wǎng)頁鏈接地址信息,和/或請(qǐng)求的IP地址信息,和/或請(qǐng)求的Cookie信息。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述分流服務(wù)器還包括: 灰度標(biāo)記模塊,用于當(dāng)灰度判斷模塊確定該請(qǐng)求參與灰度發(fā)布時(shí),將該請(qǐng)求的Cookie值標(biāo)記為灰度Cookie ; 所述請(qǐng)求分流模塊根據(jù)該請(qǐng)求的Cookie值分配請(qǐng)求。
12.根據(jù)權(quán)利要求10所述的 系統(tǒng),其特征在于,還包括: 緩存服務(wù)器,用于緩存應(yīng)用的灰度用戶名單; 灰度判斷模塊當(dāng)判斷灰度數(shù)據(jù)中請(qǐng)求的Cookie信息不是當(dāng)前有效Cookie時(shí),從所述請(qǐng)求的Cookie信息中提取用戶標(biāo)識(shí)信息,并查看所述緩存服務(wù)器中對(duì)應(yīng)該應(yīng)用的灰度用戶名單中是否包含該用戶標(biāo)識(shí)信息,若包含,則確定該請(qǐng)求參與灰度發(fā)布,若不包含,則確定該請(qǐng)求不參與灰度發(fā)布。
全文摘要
本申請(qǐng)?zhí)峁┝艘环N灰度發(fā)布的處理方法及系統(tǒng),以解決目前的處理方法工作量大、發(fā)布風(fēng)險(xiǎn)高的問題。所述方法包括將應(yīng)用的穩(wěn)定代碼和灰度代碼分別發(fā)布到不同服務(wù)器上,并加載該應(yīng)用的灰度配置信息;接收請(qǐng)求,并從請(qǐng)求的參數(shù)信息中提取用于灰度判斷的灰度數(shù)據(jù);根據(jù)所述灰度配置信息對(duì)所述灰度數(shù)據(jù)進(jìn)行判斷,確定該請(qǐng)求是否參與灰度發(fā)布;若參與,則將該請(qǐng)求分配到灰度代碼所在的服務(wù)器處理;若不參與,則將該請(qǐng)求分配到穩(wěn)定代碼所在的服務(wù)器處理。本申請(qǐng)大大減少了工作量,提高了工作效率。而且,灰度代碼的修改不會(huì)影響原有的穩(wěn)定代碼,保護(hù)了穩(wěn)定代碼不被灰度功能干擾,降低了發(fā)布風(fēng)險(xiǎn)。
文檔編號(hào)H04L29/08GK103095743SQ20111033392
公開日2013年5月8日 申請(qǐng)日期2011年10月28日 優(yōu)先權(quán)日2011年10月28日
發(fā)明者羅俊 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司