專利名稱:應(yīng)用發(fā)布方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及計(jì)算機(jī)數(shù)據(jù)處理技術(shù)領(lǐng)域,特別是涉及一種應(yīng)用發(fā)布方法及系統(tǒng)。
背景技術(shù):
互聯(lián)網(wǎng)產(chǎn)品通常需要不停的升級(jí)更新以更好的實(shí)現(xiàn)其功能和滿足用戶需求。但在產(chǎn)品升級(jí)過(guò)程中,通常會(huì)出現(xiàn)新舊版本兼容、升級(jí)版本的產(chǎn)品不穩(wěn)定,或者大量用戶同時(shí)升級(jí)造成的系統(tǒng)崩潰,以及用戶不習(xí)慣等問(wèn)題。為了解決這些問(wèn)題,很多互聯(lián)網(wǎng)產(chǎn)品會(huì)采用灰度發(fā)布的策略,即選取一小部分用戶作為新版本的發(fā)布對(duì)象,通過(guò)對(duì)這些用戶使用過(guò)程中的問(wèn)題進(jìn)行搜集和檢測(cè),若發(fā)現(xiàn)問(wèn)題,則及時(shí)更新、修改等調(diào)整,若沒有問(wèn)題,則進(jìn)一步擴(kuò)大新版本的發(fā)布范圍。一般情況下,在一種新產(chǎn)品的灰度發(fā)布過(guò)程中,開發(fā)者通常會(huì)預(yù)先選取測(cè)試用戶、測(cè)試環(huán)境和測(cè)試服務(wù)器,并將這些測(cè)試用戶放入新產(chǎn)品的白名單中。在接收用戶使用請(qǐng)求時(shí),通過(guò)判斷該用戶是否在白名單中來(lái)確定是否進(jìn)入測(cè)試服務(wù)器中的灰度發(fā)布版本。此種方法中,為了避免影響正常運(yùn)轉(zhuǎn),灰度發(fā)布版本的服務(wù)器通常都是少量幾臺(tái),當(dāng)需要擴(kuò)大測(cè)試范圍時(shí),則需要重新調(diào)整配置其他服務(wù)器,而且灰度發(fā)布的環(huán)境與線上環(huán)境不同,每次都需要對(duì)灰度發(fā)布環(huán)境進(jìn)行配置調(diào)整,這需要耗費(fèi)較多的時(shí)間和精力。另外,灰度發(fā)布的范圍通過(guò)產(chǎn)品開發(fā)者的設(shè)定來(lái)控制,當(dāng)有多個(gè)產(chǎn)品發(fā)布時(shí),則存在多種灰度發(fā)布范圍的控制,由于發(fā)布范圍不同,無(wú)法實(shí)現(xiàn)統(tǒng)一控制,這增加了管理難度和成本。
發(fā)明內(nèi)容
本申請(qǐng)?zhí)峁┮环N應(yīng)用發(fā)布方法及系統(tǒng),以解決應(yīng)用灰度發(fā)布時(shí)存在費(fèi)時(shí)且無(wú)法統(tǒng)一控制管理的問(wèn)題。為了解決上述問(wèn)題,本申請(qǐng)公開了一種應(yīng)用發(fā)布方法,包括以下步驟:接收客戶端發(fā)送的用戶請(qǐng)求,所述用戶請(qǐng)求中包含請(qǐng)求訪問(wèn)的統(tǒng)一資源定位符;基于用戶請(qǐng)求信息和從配置服務(wù)器中獲取的應(yīng)用配置信息,對(duì)用戶請(qǐng)求信息進(jìn)行處理,所述處理包括:若當(dāng)前用戶符合進(jìn)入灰度發(fā)布版本的條件,則重寫當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符;將處理后的統(tǒng)一資源定位符傳遞給應(yīng)用,應(yīng)用根據(jù)處理后的統(tǒng)一資源定位符以及應(yīng)用配置信息來(lái)確定當(dāng)前用戶進(jìn)入的版本。進(jìn)一步地,所述方法還包括更新應(yīng)用配置信息,所述更新應(yīng)用配置信息包括:監(jiān)聽配置服務(wù)器中的應(yīng)用配置信息的修改操作;從預(yù)存的配置表中查詢所述修改的應(yīng)用配置信息所對(duì)應(yīng)的應(yīng)用服務(wù)器;將所述修改后的應(yīng)用配置信息同步到所述應(yīng)用服務(wù)器。進(jìn)一步地,所述應(yīng)用配置信息包括:應(yīng)用的統(tǒng)一資源定位符和分流策略。進(jìn)一步地,所述判斷當(dāng)前用戶是否符合進(jìn)入灰度發(fā)布版本的條件包括:判斷當(dāng)前用戶的統(tǒng)一資源定位符與應(yīng)用配置信息中的統(tǒng)一資源定位符是否匹配,若匹配,則根據(jù)分流策略來(lái)判斷當(dāng)前用戶是否符合進(jìn)入灰度發(fā)布版本的條件。進(jìn)一步地,所述重寫當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符包括:在當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符添加標(biāo)識(shí);所述處理還包括:若當(dāng)前用戶符合進(jìn)入灰度發(fā)布版本的條件符合,則不做處理;所述應(yīng)用根據(jù)處理后的統(tǒng)一資源定位符以及應(yīng)用配置信息來(lái)確定當(dāng)前用戶進(jìn)入的版本包括:若處理后的當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符包含標(biāo)識(shí),則表示能夠進(jìn)入灰度發(fā)布版本,反之,則表示不能夠進(jìn)入灰度發(fā)布版本。進(jìn)一步地,所述重寫當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符包括:添加符合標(biāo)識(shí)在當(dāng)前用戶請(qǐng)求的統(tǒng)一資源定位符中;所述處理還包括:若當(dāng)前用戶不符合進(jìn)入灰度發(fā)布版本的條件,則添加不符合標(biāo)識(shí)在當(dāng)前用戶請(qǐng)求的統(tǒng)一資源定位符中;所述應(yīng)用根據(jù)處理后的統(tǒng)一資源定位符以及應(yīng)用配置信息來(lái)確定當(dāng)前用戶進(jìn)入的版本包括:若處理后的當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符包含符合標(biāo)識(shí),則表示能夠進(jìn)入灰度發(fā)布版本,若包含不符合標(biāo)識(shí),則表示不能夠進(jìn)入灰度發(fā)布版本。進(jìn)一步地,所述標(biāo)識(shí)為graypub參數(shù),graypub參數(shù)的不同取值分別表示符合標(biāo)識(shí)和不符合標(biāo)識(shí)。為了解決上述問(wèn)題,本申請(qǐng)還公開了一種應(yīng)用發(fā)布系統(tǒng),包括:用戶請(qǐng)求接收模塊,用于接收客戶端發(fā)送的用戶請(qǐng)求,所述用戶請(qǐng)求中包含請(qǐng)求訪問(wèn)的統(tǒng)一資源定位符;配置信息獲取模塊,用于獲取配置服務(wù)器中的應(yīng)用配置信息;處理模塊,用于基于用戶請(qǐng)求信息和從配置服務(wù)器中獲取的應(yīng)用配置信息,對(duì)當(dāng)前用戶請(qǐng)求進(jìn)行處理,所述處理包括:若當(dāng)前用戶符合進(jìn)入灰度發(fā)布版本的條件符合,則重寫當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符;請(qǐng)求傳遞模塊,用于將處理后的統(tǒng)一資源定位符傳遞給應(yīng)用,應(yīng)用根據(jù)處理后的統(tǒng)一資源定位符以及應(yīng)用配置信息,確定當(dāng)前用戶進(jìn)入的版本。進(jìn)一步地,所述系統(tǒng)還包括:監(jiān)聽模塊,用于監(jiān)聽配置服務(wù)器中的應(yīng)用配置信息的修改操作;查詢所述修改的應(yīng)用配置信息所對(duì)應(yīng)的應(yīng)用服務(wù)器;將所述修改后的應(yīng)用配置信息同步到所述應(yīng)用服務(wù)器。進(jìn)一步地,所述應(yīng)用配置信息包括統(tǒng)一資源定位符和分流策略,所述處理模塊包括:判斷單元,用于判斷所述當(dāng)前用戶的統(tǒng)一資源定位符與應(yīng)用配置信息中的統(tǒng)一資源定位符是否匹配,若匹配,則根據(jù)分流策略來(lái)判斷當(dāng)前用戶是否符合進(jìn)入灰度發(fā)布版本的條件。進(jìn)一步地,所述處理模塊還包括: 標(biāo)識(shí)添加單元,若當(dāng)前用戶符合進(jìn)入灰度發(fā)布的條件,則添加符合標(biāo)識(shí)在當(dāng)前用戶請(qǐng)求的統(tǒng)一資源定位符中,反之,則添加不符合標(biāo)識(shí)在當(dāng)前用戶請(qǐng)求的統(tǒng)一資源定位符中;或者若當(dāng)前用戶符合進(jìn)入灰度發(fā)布的條件,則添加標(biāo)識(shí)在當(dāng)前用戶請(qǐng)求的統(tǒng)一資源定位符中,反之,則不做處理。與現(xiàn)有技術(shù)相比,本申請(qǐng)包括以下優(yōu)點(diǎn):本申請(qǐng)的應(yīng)用發(fā)布方法和系統(tǒng)對(duì)客戶端通過(guò)服務(wù)器發(fā)送給應(yīng)用的訪問(wèn)請(qǐng)求進(jìn)行攔截,先對(duì)訪問(wèn)請(qǐng)求進(jìn)行過(guò)濾,根據(jù)預(yù)定的條件來(lái)判斷當(dāng)前用戶所能訪問(wèn)的應(yīng)用版本,并根據(jù)判斷結(jié)果對(duì)訪問(wèn)請(qǐng)求中的統(tǒng)一資源定位符進(jìn)行重寫,從而對(duì)訪問(wèn)用戶實(shí)現(xiàn)分流,達(dá)到應(yīng)用灰度發(fā)布的目的。通過(guò)在服務(wù)器和應(yīng)用之間建立系統(tǒng)實(shí)現(xiàn)分流,通過(guò)控制該系統(tǒng)中的分流策略和配置信息便可以控制灰度發(fā)布的范圍,在應(yīng)用所對(duì)應(yīng)的任何服務(wù)器中都可以應(yīng)用,無(wú)需專門采用灰度測(cè)試服務(wù)器,也無(wú)需重新建立灰度測(cè)試環(huán)境,從而可以節(jié)省時(shí)間和精力。另外,因?yàn)樵撓到y(tǒng)為獨(dú)立的系統(tǒng),可以應(yīng)用于該服務(wù)器的所有應(yīng)用中,只需要在系統(tǒng)中添加應(yīng)用對(duì)應(yīng)的配置信息即可實(shí)現(xiàn)灰度發(fā)布的控制,從而便于管理,特別是對(duì)于包含有大量應(yīng)用的大型服務(wù)器來(lái)說(shuō),此種方法無(wú)需再逐一管理其中的各應(yīng)用,可以實(shí)現(xiàn)統(tǒng)一控制,降低了管理難度和成本。另外,當(dāng)灰度發(fā)布測(cè)試到某一階段,需要擴(kuò)大一定的測(cè)試范圍時(shí)或者完全發(fā)布時(shí),可以通過(guò)逐漸放量的方式,只需要更改配置信息中的相關(guān)信息,例如分流閾值等等便可以實(shí)現(xiàn),無(wú)需更改測(cè)試環(huán)境和服務(wù)器,從而減低了灰度發(fā)布的復(fù)雜度,并提高了灰度發(fā)布的通用性。當(dāng)然,實(shí)施本申請(qǐng)的任一產(chǎn)品不一定需要同時(shí)達(dá)到以上所述的所有優(yōu)點(diǎn)。
圖1是本申請(qǐng)的本申請(qǐng)的應(yīng)用發(fā)布方法和系統(tǒng)實(shí)現(xiàn)的架構(gòu)圖;圖2是本申請(qǐng)的應(yīng)用發(fā)布方法實(shí)施例一的流程圖;圖3是本申請(qǐng)的應(yīng)用發(fā)布方法和系統(tǒng)中同步過(guò)程的架構(gòu)圖;圖4是本申請(qǐng)的應(yīng)用發(fā)布方法和系統(tǒng)實(shí)例的系統(tǒng)架構(gòu)圖;圖5是本申請(qǐng)的應(yīng)用發(fā)布系統(tǒng)實(shí)施例一的結(jié)構(gòu)示意圖。
具體實(shí)施例方式為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式
對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說(shuō)明。參照?qǐng)D1,其示出本申請(qǐng)的應(yīng)用發(fā)布方法和系統(tǒng)實(shí)現(xiàn)的架構(gòu)圖,需要進(jìn)行灰度發(fā)布的應(yīng)用的新舊版本代碼可同時(shí)存儲(chǔ)在應(yīng)用服務(wù)器中,灰度發(fā)布的策略等應(yīng)用配置信息由配置服務(wù)器統(tǒng)一存儲(chǔ)管理,應(yīng)用服務(wù)器通過(guò)與配置服務(wù)器之間的信息交互來(lái)獲取和同步應(yīng)用配置信息。當(dāng)用戶通過(guò)客戶端向應(yīng)用服務(wù)器發(fā)送訪問(wèn)請(qǐng)求時(shí),應(yīng)用服務(wù)器基于用戶請(qǐng)求信息和從配置服務(wù)器中獲取到的應(yīng)用配置信息來(lái)對(duì)用戶進(jìn)行實(shí)時(shí)判斷,并確定其所進(jìn)入的灰度發(fā)布版本,從而實(shí)現(xiàn)應(yīng)用的灰度發(fā)布。參照?qǐng)D2,其示出本申請(qǐng)的一種應(yīng)用發(fā)布方法實(shí)施例一,包括以下步驟:步驟101,接收客戶端發(fā)送的用戶請(qǐng)求,所述用戶請(qǐng)求中包含請(qǐng)求訪問(wèn)的統(tǒng)一資源定位符(URL, Uniform Resource Locator)。服務(wù)器端在接收客戶端發(fā)送的用戶請(qǐng)求后,會(huì)將用戶請(qǐng)求傳遞給應(yīng)用發(fā)布系統(tǒng)。用戶請(qǐng)求除了包含應(yīng)用的URL之外,還可以包含用戶標(biāo)識(shí)(ID)等信息,應(yīng)用發(fā)布系統(tǒng)可以根據(jù)實(shí)際需求來(lái)讀取用戶請(qǐng)求中的相關(guān)信息。步驟102,基于用戶請(qǐng)求信息和從配置服務(wù)器中獲取的應(yīng)用配置信息,對(duì)用戶請(qǐng)求信息進(jìn)行處理,所述處理包括:若當(dāng)前用戶符合進(jìn)入灰度發(fā)布版本的條件符合,則重寫當(dāng)前用戶請(qǐng)求中的URL。應(yīng)用配置信息由配置服務(wù)器統(tǒng)一管理,配置服務(wù)器中可以存儲(chǔ)多個(gè)應(yīng)用的配置信息,且維護(hù)有配置表,以保證應(yīng)用與各自的配置信息一一對(duì)應(yīng)。應(yīng)用服務(wù)器通過(guò)與配置服務(wù)器的交互來(lái)實(shí)時(shí)獲取應(yīng)用配置信息。應(yīng)用配置信息可包括該應(yīng)用所對(duì)應(yīng)的統(tǒng)一資源定位符、重寫統(tǒng)一資源定位符的規(guī)則以及分流策略等等。當(dāng)前用戶是否符合進(jìn)入灰度發(fā)布版本的條件可以是:首先判斷當(dāng)前用戶請(qǐng)求的URL是否與預(yù)存的URL匹配,若匹配,則分流策略來(lái)判斷當(dāng)前用戶是否符合進(jìn)入灰度發(fā)布版本的條件??梢岳斫?,通過(guò)分流策略來(lái)判斷時(shí),根據(jù)分流策略的不同,還可以獲取當(dāng)前用戶的其他信息來(lái)幫助實(shí)現(xiàn)判斷。例如,分流策略可以包括通用的分流策略,也可以包括特定的分流策略。通用的分流策略一般包括隨機(jī)分流或者根據(jù)用戶ID分流等等。隨機(jī)分流策略為隨機(jī)選取設(shè)定比例范圍內(nèi)的用戶作為進(jìn)入灰度發(fā)布版本的用戶,此時(shí),可以僅通過(guò)用戶請(qǐng)求中的URL就可以實(shí)現(xiàn)判斷。用戶ID分流策略為從用戶請(qǐng)求中獲取用戶ID,根據(jù)預(yù)定規(guī)則對(duì)ID進(jìn)入處理后,根據(jù)處理后的值對(duì)用戶進(jìn)行分組,例如,對(duì)ID求余(mod)等方式,則通過(guò)設(shè)定余數(shù)的取值區(qū)間來(lái)選取進(jìn)入灰度發(fā)布版本的用戶。特定的分流策略則可以根據(jù)實(shí)際情況來(lái)確定。例如,根據(jù)會(huì)員業(yè)務(wù)分組。假設(shè)有普通會(huì)員、黃金會(huì)員和鉆石會(huì)員,可分別設(shè)定這三種會(huì)員進(jìn)入灰度發(fā)布版本的比例等分流策略信息,此時(shí),可通過(guò)獲取用戶請(qǐng)求中的用戶身份標(biāo)識(shí)來(lái)識(shí)別用戶所在的分組,以確定該用戶請(qǐng)求是否進(jìn)入灰度發(fā)布版本??梢岳斫?,本申請(qǐng)還可包括更新應(yīng)用配置信息。當(dāng)有新應(yīng)用發(fā)布時(shí),發(fā)布者可以選取灰度發(fā)布所需要的通用的分流策略或者特定的分流策略,并將新應(yīng)用的統(tǒng)一資源定位符等信息作為新的應(yīng)用配置信息添加到配置服務(wù)器中,然后更新配置表,并與新應(yīng)用對(duì)應(yīng)的應(yīng)用服務(wù)器建立數(shù)據(jù)通信即可實(shí)現(xiàn)新應(yīng)用的灰度發(fā)布。另外,更新應(yīng)用配置信息還包括原有應(yīng)用配置信息的修改,當(dāng)應(yīng)用發(fā)布者對(duì)應(yīng)用配置信息進(jìn)行修改,例如需要擴(kuò)大灰度發(fā)布范圍時(shí),可以在配置服務(wù)器中修改對(duì)應(yīng)的分流策略。此時(shí)設(shè)置在配置服務(wù)器中的監(jiān)聽單元可以監(jiān)聽到修改操作,并會(huì)查詢配置表獲取修改的應(yīng)用配置信息所對(duì)應(yīng)的應(yīng)用服務(wù)器,然后將修改后的應(yīng)用配置信息同步到所述應(yīng)用服務(wù)器中,從而實(shí)現(xiàn)應(yīng)用服務(wù)器中的應(yīng)用配置信息的實(shí)時(shí)更新,進(jìn)而保證應(yīng)用發(fā)布時(shí)分流數(shù)據(jù)的準(zhǔn)確性??梢岳斫?,所有應(yīng)用的配置信息都可以存儲(chǔ)在配置服務(wù)器中,通過(guò)配置服務(wù)器來(lái)實(shí)現(xiàn)數(shù)據(jù)的同步。參照?qǐng)D3,當(dāng)后臺(tái)管理在配置服務(wù)器中修改應(yīng)用配置信息后,置于配置服務(wù)器中的監(jiān)聽裝置首先能夠監(jiān)聽該修改操作,并查找到修改后的應(yīng)用配置信息,然后同步給對(duì)應(yīng)的應(yīng)用服務(wù)器。重寫當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符根據(jù)應(yīng)用配置信息中的重寫統(tǒng)一資源定位符的規(guī)則來(lái)實(shí)現(xiàn),例如,在當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符中添加標(biāo)識(shí)??梢岳斫猓舢?dāng)前用戶不符合進(jìn)入灰度發(fā)布版本的條件,可以不做處理,也可以重寫其請(qǐng)求中的統(tǒng)一資源定位符。此時(shí)可以通過(guò)在符合與不符合的統(tǒng)一資源定位符中添加不同的標(biāo)識(shí)符來(lái)區(qū)別。例如,在符合條件的統(tǒng)一資源定位符中添加符合標(biāo)識(shí)、在不符合條件的統(tǒng)一資源定位符中添加不符合標(biāo)識(shí)。以graypub參數(shù)作為標(biāo)識(shí)為例,當(dāng)graypub參數(shù)取不同的值時(shí),分別表示是否符合。例如,如果附加graypub = O或者沒有這個(gè)參數(shù),則表示不能進(jìn)入灰度發(fā)布版本;如果附加graypub = I,則表示能夠進(jìn)入灰度發(fā)布版本。另外,如果還有其他的分流策略,例如,根據(jù)具體業(yè)務(wù)分組,貝1J可以通過(guò)附加graypub = x(x為一個(gè)大于2的數(shù)字)來(lái)表示具體業(yè)務(wù)分組。如,設(shè)定2表示普通會(huì)員,3表示黃金會(huì)員,4表示鉆石會(huì)員等等。當(dāng)URL中附加graypub = 2,則說(shuō)明能夠進(jìn)入普通會(huì)員的灰度發(fā)布版本。步驟103,將處理后的URL傳遞給應(yīng)用,應(yīng)用根據(jù)處理后的URL以及應(yīng)用配置信息來(lái)確定當(dāng)前用戶進(jìn)入的版本。應(yīng)用配置信息中包含有重寫URL的規(guī)則,URL被重寫后,則可以根據(jù)此重寫規(guī)則對(duì)URL進(jìn)行解析。置于應(yīng)用服務(wù)器中的處理模塊在重寫URL之后,則會(huì)將用戶訪問(wèn)請(qǐng)求傳遞給應(yīng)用。應(yīng)用會(huì)設(shè)定特定的邏輯判斷模塊,并包含不同版本的運(yùn)行代碼,應(yīng)用在接收請(qǐng)求后,根據(jù)URL中的標(biāo)識(shí)以及結(jié)合應(yīng)用配置信息中的重寫規(guī)則來(lái)確定當(dāng)前用戶所進(jìn)入的版本代碼。例如,以前述應(yīng)用配置信息的重寫規(guī)則為例,如果URL中有g(shù)raypub = I這個(gè)參數(shù),則認(rèn)為需要進(jìn)入灰度發(fā)布版本,如果URL中有g(shù)raypub = O或者沒有這個(gè)參數(shù),則認(rèn)為不需要進(jìn)入灰度發(fā)布版本。又如,如果URL中有g(shù)raypub = 2這個(gè)參數(shù),則認(rèn)為需要進(jìn)入普通會(huì)員所對(duì)應(yīng)的灰度發(fā)布版本。參照?qǐng)D4,其示出本申請(qǐng)實(shí)施過(guò)程中的用戶請(qǐng)求走向圖。在一具體場(chǎng)景中,所述應(yīng)用發(fā)布系統(tǒng)判斷用戶請(qǐng)求是否應(yīng)該進(jìn)入灰度發(fā)布和對(duì)URL的重寫可通過(guò)置于應(yīng)用服務(wù)器中的apache或者nginx來(lái)實(shí)現(xiàn)。首先,用戶請(qǐng)求經(jīng)過(guò)負(fù)載均衡路由到一臺(tái)應(yīng)用服務(wù)器,置于應(yīng)用服務(wù)器中的apache/nginx,通過(guò)從配置服務(wù)器中所獲取的應(yīng)用配置信息來(lái)判斷當(dāng)前用戶是否需要進(jìn)行灰度發(fā)布版本,并根據(jù)判斷結(jié)果重寫當(dāng)前用戶請(qǐng)求中的URL,即在URL中添加對(duì)應(yīng)的灰度發(fā)布重寫標(biāo)記。本實(shí)例中,灰度發(fā)布重寫標(biāo)記是graypub參數(shù),如果graypub = O或者沒有這個(gè)參數(shù),認(rèn)為沒有進(jìn)入灰度發(fā)布版本;如果graypub = I表示進(jìn)入灰度發(fā)布版本;如果graypub = x(x是一個(gè)大于2的數(shù)字),則表示根據(jù)具體業(yè)務(wù)分組。應(yīng)用服務(wù)器中,Web應(yīng)用方在接收請(qǐng)求時(shí),首選讀取用戶請(qǐng)求的URL,并基于應(yīng)用配置信息進(jìn)行判斷。如果有g(shù)raypub = I這個(gè)參數(shù),則認(rèn)為需要進(jìn)入灰度發(fā)布版本,控制進(jìn)入灰度發(fā)布的新代碼;如果沒有g(shù)raypub參數(shù)或者graypub參數(shù)為O,則認(rèn)為不需要進(jìn)入,則控制進(jìn)入原代碼執(zhí)行;如果graypub為其他參數(shù),則表示根據(jù)業(yè)務(wù)情況處理,分別控制其進(jìn)入對(duì)應(yīng)的代碼。本申請(qǐng)通過(guò)需要進(jìn)行灰度發(fā)布的各種應(yīng)用的應(yīng)用配置信息置于配置服務(wù)器中,各應(yīng)用服務(wù)器只需要與配置服務(wù)器進(jìn)行通信便可以獲取到與之對(duì)應(yīng)的應(yīng)用配置信息。當(dāng)應(yīng)用服務(wù)器接收到訪問(wèn)請(qǐng)求時(shí),可以基于配置信息和用戶請(qǐng)求信息進(jìn)行實(shí)時(shí)判斷,從而確定用戶所進(jìn)入的版本。通過(guò)后臺(tái)的配置服務(wù)器可以實(shí)時(shí)對(duì)各應(yīng)用的應(yīng)用配置信息進(jìn)行修改,如分流策略中的閾值等等,可以準(zhǔn)確的控制灰度發(fā)布的范圍和精度。例如,當(dāng)某一應(yīng)用的灰度發(fā)布的范圍需要從20%擴(kuò)大到50%時(shí),無(wú)需重新修改應(yīng)用服務(wù)器的發(fā)布環(huán)境,也無(wú)需增減應(yīng)用服務(wù)器,可以直接在配置服務(wù)器中修改該應(yīng)用配置信息中的分流策略數(shù)據(jù),然后通過(guò)配置服務(wù)器與應(yīng)用服務(wù)器之間的數(shù)據(jù)通信,將修改后的應(yīng)用配置信息同步到對(duì)應(yīng)的應(yīng)用服務(wù)器中。此種方式無(wú)需更改測(cè)試環(huán)境和應(yīng)用服務(wù)器,這降低了灰度發(fā)布的復(fù)雜度,提高了灰度發(fā)布的通用性。另外,配置服務(wù)器中可以存儲(chǔ)多個(gè)應(yīng)用的應(yīng)用配置信息,并分別與多個(gè)應(yīng)用服務(wù)器建立數(shù)據(jù)通信,各應(yīng)用的配置信息可以得到統(tǒng)一管理和維護(hù),降低灰度發(fā)布的成本。參照?qǐng)D5,其示出本申請(qǐng)的應(yīng)用發(fā)布系統(tǒng)實(shí)施例一,包括用戶請(qǐng)求接收模塊10、配置信息獲取模塊50、處理模塊20和請(qǐng)求傳遞模塊30。用戶請(qǐng)求接收模塊10,用于接收客戶端發(fā)送的用戶請(qǐng)求,所述用戶請(qǐng)求中包含請(qǐng)求訪問(wèn)的統(tǒng)一資源定位符。配置信息獲取模塊50,用于獲取配置服務(wù)器中的應(yīng)用配置信息。處理模塊20,用于基于用戶請(qǐng)求信息和從配置服務(wù)器中獲取的應(yīng)用配置信息,對(duì)當(dāng)前用戶請(qǐng)求進(jìn)行處理,所述處理包括:若當(dāng)前用戶符合進(jìn)入灰度發(fā)布版本的條件符合,則重寫當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符。優(yōu)選地,處理模塊20還包括判斷單元,用于判斷所述當(dāng)前用戶的統(tǒng)一資源定位符與應(yīng)用配置信息中的統(tǒng)一資源定位符是否匹配,若匹配,則根據(jù)分流策略來(lái)判斷當(dāng)前用戶是否符合進(jìn)入灰度發(fā)布版本的條件。優(yōu)選地,處理模塊20還包括標(biāo)識(shí)添加單元,若當(dāng)前用戶符合進(jìn)入灰度發(fā)布的條件,則添加符合標(biāo)識(shí)在當(dāng)前用戶請(qǐng)求的統(tǒng)一資源定位符中,反之,則添加不符合標(biāo)識(shí)在當(dāng)前用戶請(qǐng)求的統(tǒng)一資源定位符中;或者若當(dāng)前用戶符合進(jìn)入灰度發(fā)布的條件,則添加標(biāo)識(shí)在當(dāng)前用戶請(qǐng)求的統(tǒng)一資源定位符中,反之,則不做處理。具體的,處理模塊可以根據(jù)預(yù)定的應(yīng)用配置信息中的重寫統(tǒng)一資源定位符的規(guī)則寫入對(duì)應(yīng)的參數(shù)到統(tǒng)一資源定位符中,例如,附加graypub = O或者不附加這個(gè)參數(shù),則表示不能進(jìn)入灰度發(fā)布版本;如果附加graypub = I,則表示能夠進(jìn)入灰度發(fā)布版本。另外如果還有其他的分流策略,例如,根據(jù)具體業(yè)務(wù)分組,則可以通過(guò)附加graypub = x(x為一個(gè)大于2的數(shù)字)來(lái)表示具體業(yè)務(wù)分組。請(qǐng)求傳遞模塊30,用于將處理后的統(tǒng)一資源定位符傳遞給應(yīng)用,應(yīng)用根據(jù)處理后的統(tǒng)一資源定位符中以及應(yīng)用配置信息,確定當(dāng)前用戶進(jìn)入的版本。優(yōu)選地,應(yīng)用發(fā)布系統(tǒng)還包括監(jiān)聽模塊,用于監(jiān)聽配置服務(wù)器中的應(yīng)用配置信息的修改操作,并查詢修改的應(yīng)用配置信息所對(duì)應(yīng)的應(yīng)用服務(wù)器,然后將修改后的應(yīng)用配置信息同步到所述應(yīng)用服務(wù)器。其中,配置服務(wù)器中可以維護(hù)一個(gè)配置表,記錄其中所存儲(chǔ)的所有應(yīng)用以及各應(yīng)用對(duì)應(yīng)的配置信息、以及應(yīng)用對(duì)應(yīng)的應(yīng)用服務(wù)器。在監(jiān)聽到應(yīng)用配置信息有更新時(shí),則查詢?cè)搼?yīng)用對(duì)應(yīng)的應(yīng)用服務(wù)器,并將更新的應(yīng)用配置信息同步給應(yīng)用服務(wù)器。本說(shuō)明書中的各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說(shuō)明的都是與其他實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似的部分互相參見即可。對(duì)于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本相似,所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說(shuō)明即可。以上對(duì)本申請(qǐng)所提供的應(yīng)用發(fā)布方法及系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本申請(qǐng)的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本申請(qǐng)的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請(qǐng)的思想,在具體實(shí)施方式
及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書內(nèi)容不應(yīng)理解為對(duì)本申請(qǐng)的限制。
權(quán)利要求
1.一種應(yīng)用發(fā)布方法,其特征在于,包括以下步驟: 接收客戶端發(fā)送的用戶請(qǐng)求,所述用戶請(qǐng)求中包含請(qǐng)求訪問(wèn)的統(tǒng)一資源定位符; 基于用戶請(qǐng)求信息和從配置服務(wù)器中獲取的應(yīng)用配置信息,對(duì)用戶請(qǐng)求信息進(jìn)行處理,所述處理包括:若當(dāng)前用戶符合進(jìn)入灰度發(fā)布版本的條件,則重寫當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符; 將處理后的統(tǒng)一資源定位符傳遞給應(yīng)用,應(yīng)用根據(jù)處理后的統(tǒng)一資源定位符以及應(yīng)用配置信息來(lái)確定當(dāng)前用戶進(jìn)入的版本。
2.如權(quán)利要求1所述的應(yīng)用發(fā)布方法,其特征在于,所述方法還包括更新應(yīng)用配置信息,所述更新應(yīng)用配置信息包括: 監(jiān)聽配置服務(wù)器中的應(yīng)用配置信息的修改操作; 從預(yù)存的配置表中查詢所述修改的應(yīng)用配置信息所對(duì)應(yīng)的應(yīng)用服務(wù)器; 將所述修改后的應(yīng)用配置信息同步到所述應(yīng)用服務(wù)器。
3.如權(quán)利要求1所述的應(yīng)用發(fā)布方法,其特征在于,所述應(yīng)用配置信息包括: 應(yīng)用的統(tǒng)一資源定位符和分流策略。
4.如權(quán)利要求3所述的應(yīng)用發(fā)布方法,其特征在于,所述判斷當(dāng)前用戶是否符合進(jìn)入灰度發(fā)布版本的條件包括: 判斷當(dāng)前用戶的統(tǒng)一 資源定位符與應(yīng)用配置信息中的統(tǒng)一資源定位符是否匹配,若匹配,則根據(jù)分流策略來(lái)判斷當(dāng)前用戶是否符合進(jìn)入灰度發(fā)布版本的條件。
5.如權(quán)利要求1所述的應(yīng)用發(fā)布方法,其特征在于,所述重寫當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符包括:在當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符添加標(biāo)識(shí);所述處理還包括:若當(dāng)前用戶符合進(jìn)入灰度發(fā)布版本的條件符合,則不做處理; 所述應(yīng)用根據(jù)處理后的統(tǒng)一資源定位符以及應(yīng)用配置信息來(lái)確定當(dāng)前用戶進(jìn)入的版本包括:若處理后的當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符包含標(biāo)識(shí),則表示能夠進(jìn)入灰度發(fā)布版本,反之,則表示不能夠進(jìn)入灰度發(fā)布版本。
6.如權(quán)利要求1所述的應(yīng)用發(fā)布方法,其特征在于,所述重寫當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符包括:添加符合標(biāo)識(shí)在當(dāng)前用戶請(qǐng)求的統(tǒng)一資源定位符中;所述處理還包括:若當(dāng)前用戶不符合進(jìn)入灰度發(fā)布版本的條件,則添加不符合標(biāo)識(shí)在當(dāng)前用戶請(qǐng)求的統(tǒng)一資源定位符中; 所述應(yīng)用根據(jù)處理后的統(tǒng)一資源定位符以及應(yīng)用配置信息來(lái)確定當(dāng)前用戶進(jìn)入的版本包括:若處理后的當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符包含符合標(biāo)識(shí),則表示能夠進(jìn)入灰度發(fā)布版本,若包含不符合標(biāo)識(shí),則表示不能夠進(jìn)入灰度發(fā)布版本。
7.如權(quán)利要求6所述的應(yīng)用發(fā)布方法,其特征在于,所述標(biāo)識(shí)為graypub參數(shù),graypub參數(shù)的不同取值分別表示符合標(biāo)識(shí)和不符合標(biāo)識(shí)。
8.一種應(yīng)用發(fā)布系統(tǒng),其特征在于,包括: 用戶請(qǐng)求接收模塊,用于接收客戶端發(fā)送的用戶請(qǐng)求,所述用戶請(qǐng)求中包含請(qǐng)求訪問(wèn)的統(tǒng)一資源定位符; 配置信息獲取模塊,用于獲取配置服務(wù)器中的應(yīng)用配置信息; 處理模塊,用于基于用戶請(qǐng)求信息和從配置服務(wù)器中獲取的應(yīng)用配置信息,對(duì)當(dāng)前用戶請(qǐng)求進(jìn)行處理,所述處理包括:若當(dāng)前用戶符合進(jìn)入灰度發(fā)布版本的條件符合,則重寫當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符; 請(qǐng)求傳遞模塊,用于將處理后的統(tǒng)一資源定位符傳遞給應(yīng)用,應(yīng)用根據(jù)處理后的統(tǒng)一資源定位符以及應(yīng)用配置信息,確定當(dāng)前用戶進(jìn)入的版本。
9.如權(quán)利要求8所述的應(yīng)用發(fā)布系統(tǒng),其特征在于,所述系統(tǒng)還包括: 監(jiān)聽模塊,用于監(jiān)聽配置服務(wù)器中的應(yīng)用配置信息的修改操作;查詢所述修改的應(yīng)用配置信息所對(duì)應(yīng)的應(yīng)用服務(wù)器;將所述修改后的應(yīng)用配置信息同步到所述應(yīng)用服務(wù)器。
10.如權(quán)利要求8或9所述的應(yīng)用發(fā)布系統(tǒng),其特征在于,所述應(yīng)用配置信息包括統(tǒng)一資源定位符和分流策略,所述處理模塊包括: 判斷單元,用于判斷所述當(dāng)前用戶的統(tǒng)一資源定位符與應(yīng)用配置信息中的統(tǒng)一資源定位符是否匹配,若匹配,則根據(jù)分流策略來(lái)判斷當(dāng)前用戶是否符合進(jìn)入灰度發(fā)布版本的條件。
11.如權(quán)利要求8所述的應(yīng)用發(fā)布系統(tǒng),其特征在于,所述處理模塊還包括: 標(biāo)識(shí)添加單元,若當(dāng)前用戶符合進(jìn)入灰度發(fā)布的條件,則添加符合標(biāo)識(shí)在當(dāng)前用戶請(qǐng)求的統(tǒng)一資源定位符中,反之,則添加不符合標(biāo)識(shí)在當(dāng)前用戶請(qǐng)求的統(tǒng)一資源定位符中;或者 若當(dāng)前用戶符合進(jìn)入灰度發(fā)布的條件,則添加標(biāo)識(shí)在當(dāng)前用戶請(qǐng)求的統(tǒng)一資源定位符中,反之,則不做處理。
全文摘要
本發(fā)明提供了一種應(yīng)用發(fā)布方法,包括以下步驟接收客戶端發(fā)送的用戶請(qǐng)求,所述用戶請(qǐng)求中包含請(qǐng)求訪問(wèn)的統(tǒng)一資源定位符;基于用戶請(qǐng)求信息和從配置服務(wù)器中獲取的應(yīng)用配置信息,對(duì)用戶請(qǐng)求信息進(jìn)行處理,所述處理包括若當(dāng)前用戶符合進(jìn)入灰度發(fā)布版本的條件,則重寫當(dāng)前用戶請(qǐng)求中的統(tǒng)一資源定位符;將處理后的統(tǒng)一資源定位符傳遞給應(yīng)用,應(yīng)用根據(jù)處理后的統(tǒng)一資源定位符以及應(yīng)用配置信息來(lái)確定當(dāng)前用戶進(jìn)入的版本。本發(fā)明還提供一種實(shí)現(xiàn)前述方法的應(yīng)用發(fā)布系統(tǒng)。本發(fā)明的應(yīng)用發(fā)布方法及系統(tǒng),能夠?qū)?yīng)用灰度發(fā)布實(shí)現(xiàn)統(tǒng)一控制管理、節(jié)省應(yīng)用灰度發(fā)布時(shí)間以及成本。
文檔編號(hào)H04L29/08GK103176790SQ20111044227
公開日2013年6月26日 申請(qǐng)日期2011年12月26日 優(yōu)先權(quán)日2011年12月26日
發(fā)明者徐恒飛 申請(qǐng)人:阿里巴巴集團(tuán)控股有限公司