本申請(qǐng)涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種用于發(fā)布網(wǎng)頁(yè)應(yīng)用的技術(shù)。
背景技術(shù):
現(xiàn)在技術(shù)中,web應(yīng)用(或稱網(wǎng)頁(yè)應(yīng)用)在發(fā)布時(shí)往往需要額外增加一套網(wǎng)頁(yè)應(yīng)用發(fā)布系統(tǒng),例如,以GAE(Google App Engine,Google公司推出的互聯(lián)網(wǎng)應(yīng)用服務(wù)引擎)為代表的開(kāi)發(fā)和托管網(wǎng)頁(yè)應(yīng)用的平臺(tái),都不具備自發(fā)布網(wǎng)頁(yè)應(yīng)用的功能,所以需要額外做一套網(wǎng)頁(yè)應(yīng)用發(fā)布系統(tǒng)。在發(fā)布網(wǎng)頁(yè)應(yīng)用時(shí),通過(guò)額外的發(fā)布系統(tǒng)終止原工作進(jìn)程,再啟動(dòng)新工作進(jìn)程,其中,該原工作進(jìn)程和新工作進(jìn)程均位于web容器(或稱網(wǎng)頁(yè)容器)中,網(wǎng)頁(yè)應(yīng)用在該web容器中存在對(duì)應(yīng)的工作進(jìn)程。顯然,這樣的方式,不僅耗時(shí)耗力,并且會(huì)帶來(lái)額外的開(kāi)發(fā)和運(yùn)維的成本。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)?zhí)峁┮环N用于發(fā)布網(wǎng)頁(yè)應(yīng)用的方法與設(shè)備,以解決需要額外網(wǎng)頁(yè)應(yīng)用發(fā)布系統(tǒng)來(lái)發(fā)布網(wǎng)頁(yè)應(yīng)用的問(wèn)題。
根據(jù)本申請(qǐng)的一個(gè)方面,提供了一種用于發(fā)布網(wǎng)頁(yè)應(yīng)用的方法,其中,該方法包括:
在web容器中為待發(fā)布的網(wǎng)頁(yè)應(yīng)用創(chuàng)建新工作進(jìn)程,其中,所述網(wǎng)頁(yè)應(yīng)用在所述web容器中存在對(duì)應(yīng)的原工作進(jìn)程;
將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程。
進(jìn)一步地,該方法還包括:終止所述原工作進(jìn)程。
進(jìn)一步地,所述將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程包括:將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的部分流量引至所述新工作進(jìn)程。
進(jìn)一步地,所述將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程包括:當(dāng)所述新工作進(jìn)程成功啟動(dòng)后,將所述網(wǎng)頁(yè)應(yīng)用在所述原工 作進(jìn)程中的流量引至所述新工作進(jìn)程。
進(jìn)一步地,所述將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程包括:通過(guò)反向代理進(jìn)程將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程。
進(jìn)一步地,所述web容器包括用于管理所述新工作進(jìn)程和所述反向代理進(jìn)程的管理進(jìn)程。
根據(jù)本申請(qǐng)的另一個(gè)方面,提供了一種用于發(fā)布網(wǎng)頁(yè)應(yīng)用的設(shè)備,其中,該設(shè)備包括:
創(chuàng)建裝置,用于在web容器中為待發(fā)布的網(wǎng)頁(yè)應(yīng)用創(chuàng)建新工作進(jìn)程,其中,所述網(wǎng)頁(yè)應(yīng)用在所述web容器中存在對(duì)應(yīng)的原工作進(jìn)程;
引流裝置,用于將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程。
進(jìn)一步地,該設(shè)備還包括:終止裝置,用于終止所述原工作進(jìn)程。
進(jìn)一步地,所述引流裝置用于:將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的部分流量引至所述新工作進(jìn)程。
進(jìn)一步地,所述引流裝置用于:當(dāng)所述新工作進(jìn)程成功啟動(dòng)后,將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程。
進(jìn)一步地,所述引流裝置用于:通過(guò)反向代理進(jìn)程將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程。
進(jìn)一步地,所述web容器包括用于管理所述新工作進(jìn)程和所述反向代理進(jìn)程的管理進(jìn)程。
與現(xiàn)有技術(shù)相比,本申請(qǐng)通過(guò)在web容器中為待發(fā)布的網(wǎng)頁(yè)應(yīng)用創(chuàng)建新工作進(jìn)程,當(dāng)新工作進(jìn)程成功啟動(dòng)后,通過(guò)反向代理進(jìn)程將所述網(wǎng)頁(yè)應(yīng)用在原工作進(jìn)程中的流量引至所述新工作進(jìn)程,通過(guò)管理進(jìn)程管理所述工作進(jìn)程和反向代理進(jìn)程,最后終止所述原工作進(jìn)程,完成對(duì)網(wǎng)頁(yè)應(yīng)用的發(fā)布。通過(guò)在web容器中增加反向代理進(jìn)程和管理進(jìn)程,從而實(shí)現(xiàn)自發(fā)布網(wǎng)頁(yè)應(yīng)用的功能,省去了額外的發(fā)布系統(tǒng),降低了開(kāi)發(fā)和運(yùn)維的成本。進(jìn)一步地,通過(guò)將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的部分流量引至新工作進(jìn)程,以灰度發(fā)布的方式可以及時(shí)發(fā)現(xiàn)、調(diào)整問(wèn)題,從而保證整體系統(tǒng)的穩(wěn) 定。
附圖說(shuō)明
通過(guò)閱讀參照以下附圖所作的對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本申請(qǐng)的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯:
圖1示出根據(jù)本申請(qǐng)一個(gè)方面的一種用于發(fā)布網(wǎng)頁(yè)應(yīng)用的方法流程圖;
圖2示出根據(jù)本申請(qǐng)一個(gè)實(shí)施例的一種用于發(fā)布網(wǎng)頁(yè)應(yīng)用的方法流程圖;
圖3示出根據(jù)本申請(qǐng)另一個(gè)方面的一種用于發(fā)布網(wǎng)頁(yè)應(yīng)用的設(shè)備示意圖;
圖4示出根據(jù)本申請(qǐng)一個(gè)實(shí)施例的一種用于發(fā)布網(wǎng)頁(yè)應(yīng)用的設(shè)備示意圖;
圖5示出根據(jù)本申請(qǐng)一個(gè)優(yōu)選實(shí)施例的一種用于發(fā)布網(wǎng)頁(yè)應(yīng)用的系統(tǒng)示意圖。
附圖中相同或相似的附圖標(biāo)記代表相同或相似的部件。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)描述。
在本申請(qǐng)一個(gè)典型的配置中,終端、服務(wù)網(wǎng)絡(luò)的設(shè)備和可信方均包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀 光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
本申請(qǐng)中的web容器除了包括現(xiàn)有技術(shù)中已存在的工作進(jìn)程,還包括反向代理進(jìn)程和管理進(jìn)程。首先,在web容器中為待發(fā)布的網(wǎng)頁(yè)應(yīng)用創(chuàng)建新工作進(jìn)程,其中,所述網(wǎng)頁(yè)應(yīng)用在所述web容器中存在對(duì)應(yīng)的原工作進(jìn)程,再通過(guò)反向代理進(jìn)程將流量從原工作進(jìn)程引至新工作進(jìn)程,并通過(guò)管理進(jìn)程管理工作進(jìn)程和反向代理進(jìn)程,最后終止原工作進(jìn)程,完成對(duì)網(wǎng)頁(yè)應(yīng)用的發(fā)布。
本申請(qǐng)的技術(shù)方案可以應(yīng)用于開(kāi)發(fā)和托管網(wǎng)頁(yè)應(yīng)用的平臺(tái),以實(shí)現(xiàn)自發(fā)布網(wǎng)頁(yè)應(yīng)用的功能,從而省去了額外的發(fā)布系統(tǒng),降低了開(kāi)發(fā)和運(yùn)維的成本。當(dāng)然,本領(lǐng)域技術(shù)人員應(yīng)能理解上述應(yīng)用場(chǎng)景僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的可以實(shí)現(xiàn)自發(fā)布功能的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
圖1示出根據(jù)本申請(qǐng)一個(gè)方面的一種用于發(fā)布網(wǎng)頁(yè)應(yīng)用的方法流程圖。
該方法包括步驟S11和步驟S12。具體地,在步驟S11中,設(shè)備1在web容器中為待發(fā)布的網(wǎng)頁(yè)應(yīng)用創(chuàng)建新工作進(jìn)程,其中,所述網(wǎng)頁(yè)應(yīng)用在所述web容器中存在對(duì)應(yīng)的原工作進(jìn)程;在步驟S12中,設(shè)備1將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程。
在此,所述設(shè)備1包括但不限于用戶設(shè)備、網(wǎng)絡(luò)設(shè)備、或用戶設(shè)備與網(wǎng)絡(luò)設(shè)備通過(guò)網(wǎng)絡(luò)相集成所構(gòu)成的設(shè)備。所述用戶設(shè)備其包括但不限于任何一種可與用戶通過(guò)觸摸板進(jìn)行人機(jī)交互的移動(dòng)電子產(chǎn)品,例如智能手機(jī)、PDA等,所述移動(dòng)電子產(chǎn)品可以采用任意操作系統(tǒng),如android操作系統(tǒng)、iOS操作系統(tǒng)等。其中,所述網(wǎng)絡(luò)設(shè)備包括一種能夠按照事先設(shè)定或存儲(chǔ)的指令,自動(dòng)進(jìn)行數(shù)值計(jì)算和信息處理的電子設(shè)備,其硬件包括但不限于微處理器、專用集成電路(ASIC)、可編程門陣列(FPGA)、數(shù)字處理器(DSP)、嵌入式設(shè)備等。所述網(wǎng)絡(luò)設(shè)備其包括但不限于計(jì)算機(jī)、網(wǎng)絡(luò) 主機(jī)、單個(gè)網(wǎng)絡(luò)服務(wù)器、多個(gè)網(wǎng)絡(luò)服務(wù)器集或多個(gè)服務(wù)器構(gòu)成的云;在此,云由基于云計(jì)算(Cloud Computing)的大量計(jì)算機(jī)或網(wǎng)絡(luò)服務(wù)器構(gòu)成,其中,云計(jì)算是分布式計(jì)算的一種,由一群松散耦合的計(jì)算機(jī)集組成的一個(gè)虛擬超級(jí)計(jì)算機(jī)。所述網(wǎng)絡(luò)包括但不限于互聯(lián)網(wǎng)、廣域網(wǎng)、城域網(wǎng)、局域網(wǎng)、VPN網(wǎng)絡(luò)、無(wú)線自組織網(wǎng)絡(luò)(Ad Hoc網(wǎng)絡(luò))等。優(yōu)選地,設(shè)備1還可以是運(yùn)行于所述用戶設(shè)備、網(wǎng)絡(luò)設(shè)備、或用戶設(shè)備與網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)設(shè)備、觸摸終端或網(wǎng)絡(luò)設(shè)備與觸摸終端通過(guò)網(wǎng)絡(luò)相集成所構(gòu)成的設(shè)備上的腳本程序。當(dāng)然,本領(lǐng)域技術(shù)人員應(yīng)能理解上述設(shè)備1僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的設(shè)備1如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
設(shè)備1的各個(gè)步驟之間是持續(xù)不斷工作的。具體地,在步驟S11中,設(shè)備1持續(xù)在web容器中為待發(fā)布的網(wǎng)頁(yè)應(yīng)用創(chuàng)建新工作進(jìn)程,在步驟S12中,設(shè)備1持續(xù)將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程,直至步驟S11中設(shè)備1停止在web容器中為待發(fā)布的網(wǎng)頁(yè)應(yīng)用創(chuàng)建新工作進(jìn)程。
在步驟S11中,設(shè)備1在web容器中為待發(fā)布的網(wǎng)頁(yè)應(yīng)用創(chuàng)建新工作進(jìn)程,其中,所述網(wǎng)頁(yè)應(yīng)用在所述web容器中存在對(duì)應(yīng)的原工作進(jìn)程。
在此,所述網(wǎng)頁(yè)應(yīng)用是一種可以通過(guò)網(wǎng)頁(yè)訪問(wèn)的應(yīng)用程序,用戶只需要有瀏覽器即可訪問(wèn)網(wǎng)頁(yè)應(yīng)用,而不需要再安裝其他軟件。所述web容器給處于其中的應(yīng)用程序組件(例如JSP、Servlet)提供一個(gè)運(yùn)行環(huán)境,使應(yīng)用程序組件可以直接跟web容器中的環(huán)境變量交互,不必關(guān)注其他系統(tǒng)問(wèn)題。其中,所述網(wǎng)頁(yè)應(yīng)用在所述web容器中存在對(duì)應(yīng)的原工作進(jìn)程,所述工作進(jìn)程為網(wǎng)頁(yè)應(yīng)用提供一個(gè)運(yùn)行環(huán)境,原工作進(jìn)程和所創(chuàng)建的新工作進(jìn)程均位于web容器中。
在具體的實(shí)施例中,可以通過(guò)調(diào)用fork函數(shù),根據(jù)原工作進(jìn)程創(chuàng)建出新工作進(jìn)程。一個(gè)工作進(jìn)程組可以包括一個(gè)或多個(gè)功能相同的工作進(jìn)程。
在步驟S12中,設(shè)備1將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程。
在此,所述流量指的是用戶對(duì)網(wǎng)頁(yè)應(yīng)用的訪問(wèn)請(qǐng)求。其中,所述流量可 以包括新產(chǎn)生的訪問(wèn)請(qǐng)求和擬分發(fā)至原工作進(jìn)程的訪問(wèn)請(qǐng)求。
優(yōu)選地,當(dāng)所述新工作進(jìn)程成功啟動(dòng)后,步驟S12中設(shè)備1將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程。
在此,所述新工作進(jìn)程成功啟動(dòng)指的是所述新工作進(jìn)程可以為用戶提供服務(wù),響應(yīng)用戶的訪問(wèn)請(qǐng)求。當(dāng)所述新工作進(jìn)程啟動(dòng)成功后,會(huì)主動(dòng)通知其他的工作進(jìn)程。
優(yōu)選地,在步驟S12中,設(shè)備1通過(guò)反向代理進(jìn)程將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程。
在具體的實(shí)施例中,所述反向代理進(jìn)程在系統(tǒng)啟動(dòng)時(shí)被創(chuàng)建,并啟動(dòng)反向代理功能,負(fù)責(zé)將流量分配到不同的工作進(jìn)程中。
更優(yōu)選地,所述web容器包括用于管理所述新工作進(jìn)程和所述反向代理進(jìn)程的管理進(jìn)程。
在具體的實(shí)施例中,通過(guò)所述管理進(jìn)程實(shí)現(xiàn)對(duì)工作進(jìn)程和反向代理進(jìn)程的管理。具體地,可以通過(guò)管理進(jìn)程調(diào)用fork函數(shù)(又稱分叉函數(shù),新進(jìn)程由當(dāng)前已有進(jìn)程調(diào)用fork函數(shù)創(chuàng)建,分叉的進(jìn)程叫子進(jìn)程,創(chuàng)建者叫父進(jìn)程;該函數(shù)的特點(diǎn)是調(diào)用一次,返回兩次,一次是在父進(jìn)程,一次是在子進(jìn)程,兩次返回的區(qū)別是子進(jìn)程的返回值為0,父進(jìn)程的返回值是新子進(jìn)程的ID,子進(jìn)程與父進(jìn)程繼續(xù)并發(fā)運(yùn)行),根據(jù)原工作進(jìn)程創(chuàng)建出新工作進(jìn)程;可以通過(guò)管理進(jìn)程,讓反向代理進(jìn)程將流量引至新工作進(jìn)程;可以通過(guò)管理進(jìn)程終止原工作進(jìn)程。
優(yōu)選地,在步驟S12中,設(shè)備1將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的部分流量引至所述新工作進(jìn)程。
在具體的實(shí)施例中,可以通過(guò)將所述原工作進(jìn)程中的部分流量引至所述新工作進(jìn)程,從而實(shí)現(xiàn)灰度發(fā)布。在此,灰度發(fā)布指的是在黑與白之間,能夠平滑過(guò)渡的一種發(fā)布方式,逐步擴(kuò)大發(fā)布范圍,最后達(dá)到完全發(fā)布?;叶劝l(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時(shí)候就可以發(fā)現(xiàn)、調(diào)整問(wèn)題,從而保證用戶體驗(yàn)。
例如,在具體的應(yīng)用場(chǎng)景中,可以根據(jù)用戶的IP地址,通過(guò)在系統(tǒng)的后臺(tái)指定,使特定的一個(gè)或多個(gè)IP地址訪問(wèn)特定版本的網(wǎng)頁(yè)應(yīng)用。還 可以通過(guò)工作進(jìn)程與反向代理進(jìn)程的配合,利用每次訪問(wèn)請(qǐng)求中帶有的唯一標(biāo)示該請(qǐng)求用戶的信息(cookie),來(lái)實(shí)現(xiàn)灰度發(fā)布。
當(dāng)然,本領(lǐng)域技術(shù)人員應(yīng)能理解上述灰度發(fā)布的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的灰度發(fā)布的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
圖2示出根據(jù)本申請(qǐng)一個(gè)實(shí)施例的一種用于發(fā)布網(wǎng)頁(yè)應(yīng)用的方法流程圖。
該方法包括步驟S21、步驟S22和步驟S23。在此,步驟S21、步驟S22和圖1中步驟S11、步驟S12的內(nèi)容相同或基本相同,為簡(jiǎn)明起見(jiàn),不再贅述。
具體地,在步驟S23中,設(shè)備1終止所述原工作進(jìn)程。
在具體的實(shí)施例中,當(dāng)新版本的網(wǎng)頁(yè)應(yīng)用可以完整地為用戶提供服務(wù)時(shí),所述原工作進(jìn)程作為舊版本的網(wǎng)頁(yè)應(yīng)用的運(yùn)行環(huán)境已不再被需要時(shí),即可以終止所述原工作進(jìn)程,從而完成對(duì)網(wǎng)頁(yè)應(yīng)用的發(fā)布。
圖3示出根據(jù)本申請(qǐng)另一個(gè)方面的一種用于發(fā)布網(wǎng)頁(yè)應(yīng)用的設(shè)備1,其中,設(shè)備1包括創(chuàng)建裝置11和引流裝置12。
具體地,所述創(chuàng)建裝置11在web容器中為待發(fā)布的網(wǎng)頁(yè)應(yīng)用創(chuàng)建新工作進(jìn)程,其中,所述網(wǎng)頁(yè)應(yīng)用在所述web容器中存在對(duì)應(yīng)的原工作進(jìn)程;所述引流裝置12將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程。
在此,所述設(shè)備1包括但不限于用戶設(shè)備、網(wǎng)絡(luò)設(shè)備、或用戶設(shè)備與網(wǎng)絡(luò)設(shè)備通過(guò)網(wǎng)絡(luò)相集成所構(gòu)成的設(shè)備。所述用戶設(shè)備其包括但不限于任何一種可與用戶通過(guò)觸摸板進(jìn)行人機(jī)交互的移動(dòng)電子產(chǎn)品,例如智能手機(jī)、PDA等,所述移動(dòng)電子產(chǎn)品可以采用任意操作系統(tǒng),如android操作系統(tǒng)、iOS操作系統(tǒng)等。其中,所述網(wǎng)絡(luò)設(shè)備包括一種能夠按照事先設(shè)定或存儲(chǔ)的指令,自動(dòng)進(jìn)行數(shù)值計(jì)算和信息處理的電子設(shè)備,其硬件包括但不限于微處理器、專用集成電路(ASIC)、可編程門陣列(FPGA)、數(shù)字處理器(DSP)、嵌入式設(shè)備等。所述網(wǎng)絡(luò)設(shè)備其包括但不限于計(jì)算機(jī)、網(wǎng)絡(luò)主機(jī)、單個(gè)網(wǎng)絡(luò)服務(wù)器、多個(gè)網(wǎng)絡(luò)服務(wù)器集或多個(gè)服務(wù)器構(gòu)成的云;在此, 云由基于云計(jì)算(Cloud Computing)的大量計(jì)算機(jī)或網(wǎng)絡(luò)服務(wù)器構(gòu)成,其中,云計(jì)算是分布式計(jì)算的一種,由一群松散耦合的計(jì)算機(jī)集組成的一個(gè)虛擬超級(jí)計(jì)算機(jī)。所述網(wǎng)絡(luò)包括但不限于互聯(lián)網(wǎng)、廣域網(wǎng)、城域網(wǎng)、局域網(wǎng)、VPN網(wǎng)絡(luò)、無(wú)線自組織網(wǎng)絡(luò)(Ad Hoc網(wǎng)絡(luò))等。優(yōu)選地,設(shè)備1還可以是運(yùn)行于所述用戶設(shè)備、網(wǎng)絡(luò)設(shè)備、或用戶設(shè)備與網(wǎng)絡(luò)設(shè)備、網(wǎng)絡(luò)設(shè)備、觸摸終端或網(wǎng)絡(luò)設(shè)備與觸摸終端通過(guò)網(wǎng)絡(luò)相集成所構(gòu)成的設(shè)備上的腳本程序。當(dāng)然,本領(lǐng)域技術(shù)人員應(yīng)能理解上述設(shè)備1僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的設(shè)備1如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
上述各裝置之間是持續(xù)不斷工作的,在此,本領(lǐng)域技術(shù)人員應(yīng)理解“持續(xù)”是指上述各裝置分別實(shí)時(shí)地或者按照設(shè)定的或?qū)崟r(shí)調(diào)整的工作模式要求,例如所述創(chuàng)建裝置11持續(xù)在web容器中為待發(fā)布的網(wǎng)頁(yè)應(yīng)用創(chuàng)建新工作進(jìn)程,所述引流裝置12持續(xù)將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程,直至所述創(chuàng)建裝置11停止在web容器中為待發(fā)布的網(wǎng)頁(yè)應(yīng)用創(chuàng)建新工作進(jìn)程。
所述創(chuàng)建裝置11在web容器中為待發(fā)布的網(wǎng)頁(yè)應(yīng)用創(chuàng)建新工作進(jìn)程,其中,所述網(wǎng)頁(yè)應(yīng)用在所述web容器中存在對(duì)應(yīng)的原工作進(jìn)程。
在此,所述網(wǎng)頁(yè)應(yīng)用是一種可以通過(guò)網(wǎng)頁(yè)訪問(wèn)的應(yīng)用程序,用戶只需要有瀏覽器即可訪問(wèn)網(wǎng)頁(yè)應(yīng)用,而不需要再安裝其他軟件。所述web容器給處于其中的應(yīng)用程序組件(例如JSP、Servlet)提供一個(gè)運(yùn)行環(huán)境,使應(yīng)用程序組件可以直接跟web容器中的環(huán)境變量交互,不必關(guān)注其他系統(tǒng)問(wèn)題。其中,所述網(wǎng)頁(yè)應(yīng)用在所述web容器中存在對(duì)應(yīng)的原工作進(jìn)程,所述工作進(jìn)程為網(wǎng)頁(yè)應(yīng)用提供一個(gè)運(yùn)行環(huán)境,原工作進(jìn)程和所創(chuàng)建的新工作進(jìn)程均位于web容器中。
在具體的實(shí)施例中,可以通過(guò)調(diào)用fork函數(shù),根據(jù)原工作進(jìn)程創(chuàng)建出新工作進(jìn)程。一個(gè)工作進(jìn)程組可以包括一個(gè)或多個(gè)功能相同的工作進(jìn)程。
所述引流裝置12將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程。
在此,所述流量指的是用戶對(duì)網(wǎng)頁(yè)應(yīng)用的訪問(wèn)請(qǐng)求。其中,所述流量可 以包括新產(chǎn)生的訪問(wèn)請(qǐng)求和擬分發(fā)至原工作進(jìn)程的訪問(wèn)請(qǐng)求。
優(yōu)選地,當(dāng)所述新工作進(jìn)程成功啟動(dòng)后,所述引流裝置12將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程。
在此,所述新工作進(jìn)程成功啟動(dòng)指的是所述新工作進(jìn)程可以為用戶提供服務(wù),響應(yīng)用戶的訪問(wèn)請(qǐng)求。當(dāng)所述新工作進(jìn)程啟動(dòng)成功后,會(huì)主動(dòng)通知其他的工作進(jìn)程。
優(yōu)選地,所述引流裝置12通過(guò)反向代理進(jìn)程將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的流量引至所述新工作進(jìn)程。
在具體的實(shí)施例中,所述反向代理進(jìn)程在系統(tǒng)啟動(dòng)時(shí)被創(chuàng)建,并啟動(dòng)反向代理功能,負(fù)責(zé)將流量分配到不同的工作進(jìn)程中。
更優(yōu)選地,所述web容器包括用于管理所述新工作進(jìn)程和所述反向代理進(jìn)程的管理進(jìn)程。
在具體的實(shí)施例中,通過(guò)所述管理進(jìn)程實(shí)現(xiàn)對(duì)工作進(jìn)程和反向代理進(jìn)程的管理。具體地,可以通過(guò)管理進(jìn)程調(diào)用fork函數(shù)(又稱分叉函數(shù),新進(jìn)程由當(dāng)前已有進(jìn)程調(diào)用fork函數(shù)創(chuàng)建,分叉的進(jìn)程叫子進(jìn)程,創(chuàng)建者叫父進(jìn)程;該函數(shù)的特點(diǎn)是調(diào)用一次,返回兩次,一次是在父進(jìn)程,一次是在子進(jìn)程,兩次返回的區(qū)別是子進(jìn)程的返回值為0,父進(jìn)程的返回值是新子進(jìn)程的ID,子進(jìn)程與父進(jìn)程繼續(xù)并發(fā)運(yùn)行),根據(jù)原工作進(jìn)程創(chuàng)建出新工作進(jìn)程;可以通過(guò)管理進(jìn)程,讓反向代理進(jìn)程將流量引至新工作進(jìn)程;可以通過(guò)管理進(jìn)程終止原工作進(jìn)程。
優(yōu)選地,所述引流裝置12將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的部分流量引至所述新工作進(jìn)程。
在具體的實(shí)施例中,可以通過(guò)將所述原工作進(jìn)程中的部分流量引至所述新工作進(jìn)程,從而實(shí)現(xiàn)灰度發(fā)布。在此,灰度發(fā)布指的是在黑與白之間,能夠平滑過(guò)渡的一種發(fā)布方式,逐步擴(kuò)大發(fā)布范圍,最后達(dá)到完全發(fā)布。灰度發(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時(shí)候就可以發(fā)現(xiàn)、調(diào)整問(wèn)題,從而保證用戶體驗(yàn)。
例如,在具體的應(yīng)用場(chǎng)景中,可以根據(jù)用戶的IP地址,通過(guò)在系統(tǒng)的后臺(tái)指定,使特定的一個(gè)或多個(gè)IP地址訪問(wèn)特定版本的網(wǎng)頁(yè)應(yīng)用。還 可以通過(guò)工作進(jìn)程與反向代理進(jìn)程的配合,利用每次訪問(wèn)請(qǐng)求中帶有的唯一標(biāo)示該請(qǐng)求用戶的信息(cookie),來(lái)實(shí)現(xiàn)灰度發(fā)布。
當(dāng)然,本領(lǐng)域技術(shù)人員應(yīng)能理解上述灰度發(fā)布的方式僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的灰度發(fā)布的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
圖4示出根據(jù)本申請(qǐng)一個(gè)實(shí)施例的一種用于發(fā)布網(wǎng)頁(yè)應(yīng)用的設(shè)備1,其中,所述設(shè)備1包括創(chuàng)建裝置11’、引流裝置12’和終止裝置13’。
在此,所述創(chuàng)建裝置11’、引流裝置12’與圖3中創(chuàng)建裝置11、引流裝置12的內(nèi)容相同或基本相同,為簡(jiǎn)明起見(jiàn),不再贅述。
具體地,所述終止裝置13終止所述原工作進(jìn)程。
在具體的實(shí)施例中,當(dāng)新版本的網(wǎng)頁(yè)應(yīng)用可以完整地為用戶提供服務(wù)時(shí),所述原工作進(jìn)程作為舊版本的網(wǎng)頁(yè)應(yīng)用的運(yùn)行環(huán)境已不再被需要時(shí),即可以終止所述原工作進(jìn)程,從而完成對(duì)網(wǎng)頁(yè)應(yīng)用的發(fā)布。
圖5示出根據(jù)本申請(qǐng)一個(gè)優(yōu)選實(shí)施例的一種用于發(fā)布網(wǎng)頁(yè)應(yīng)用的系統(tǒng)示意圖,其中,該系統(tǒng)包括工作進(jìn)程、管理進(jìn)程和反向代理進(jìn)程。
具體地,所述工作進(jìn)程、反向代理進(jìn)程和管理進(jìn)程均位于web容器中。一個(gè)工作進(jìn)程組可以包括一個(gè)或多個(gè)功能相同的工作進(jìn)程,圖5中的工作進(jìn)程組A包括一個(gè)工作進(jìn)程A,工作進(jìn)程組A’包括一個(gè)工作進(jìn)程A’,工作進(jìn)程組B包括兩個(gè)功能相同的工作進(jìn)程B1和工作進(jìn)程B2。方向代理進(jìn)程負(fù)責(zé)將用戶對(duì)網(wǎng)頁(yè)應(yīng)用的訪問(wèn)請(qǐng)求(即流量)相應(yīng)地分配到各個(gè)工作進(jìn)程中。管理進(jìn)程負(fù)責(zé)管理工作進(jìn)程和反向代理進(jìn)程。
例如,管理進(jìn)程通過(guò)調(diào)用fork函數(shù),根據(jù)原來(lái)的工作進(jìn)程A創(chuàng)建出新的工作進(jìn)程A’,其中,舊版本的網(wǎng)頁(yè)應(yīng)用對(duì)應(yīng)原工作進(jìn)程A,待發(fā)布的新版網(wǎng)頁(yè)應(yīng)用對(duì)應(yīng)新工作進(jìn)程A’。當(dāng)新工作進(jìn)程A’成功啟動(dòng)后,管理進(jìn)程讓反向代理進(jìn)程將流量從原工作進(jìn)程A引至新工作進(jìn)程A’。在此,可以先將原工作進(jìn)程A中的部分流量引至新工作進(jìn)程A’,通過(guò)灰度發(fā)布及時(shí)發(fā)現(xiàn)、調(diào)整問(wèn)題,保證整體系統(tǒng)的穩(wěn)定。當(dāng)新版網(wǎng)頁(yè)應(yīng)用可以完整地為用戶提供服務(wù)時(shí),終止原工作進(jìn)程A,從而完成對(duì)新版網(wǎng)頁(yè)應(yīng)用的發(fā)布。
當(dāng)然,本領(lǐng)域技術(shù)人員應(yīng)能理解上述發(fā)布網(wǎng)頁(yè)應(yīng)用的方式僅為舉例, 其他現(xiàn)有的或今后可能出現(xiàn)的發(fā)布網(wǎng)頁(yè)應(yīng)用的方式如可適用于本申請(qǐng),也應(yīng)包含在本申請(qǐng)保護(hù)范圍以內(nèi),并在此以引用方式包含于此。
與現(xiàn)有技術(shù)相比,本申請(qǐng)通過(guò)在web容器中為待發(fā)布的網(wǎng)頁(yè)應(yīng)用創(chuàng)建新工作進(jìn)程,當(dāng)新工作進(jìn)程成功啟動(dòng)后,通過(guò)反向代理進(jìn)程將所述網(wǎng)頁(yè)應(yīng)用在原工作進(jìn)程中的流量引至所述新工作進(jìn)程,通過(guò)管理進(jìn)程管理所述工作進(jìn)程和反向代理進(jìn)程,最后終止所述原工作進(jìn)程,完成對(duì)網(wǎng)頁(yè)應(yīng)用的發(fā)布。通過(guò)在web容器中增加反向代理進(jìn)程和管理進(jìn)程,從而實(shí)現(xiàn)自發(fā)布網(wǎng)頁(yè)應(yīng)用的功能,省去了額外的發(fā)布系統(tǒng),降低了開(kāi)發(fā)和運(yùn)維的成本。進(jìn)一步地,通過(guò)將所述網(wǎng)頁(yè)應(yīng)用在所述原工作進(jìn)程中的部分流量引至新工作進(jìn)程,以灰度發(fā)布的方式可以及時(shí)發(fā)現(xiàn)、調(diào)整問(wèn)題,從而保證整體系統(tǒng)的穩(wěn)定。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)的精神和范圍。這樣,倘若本申請(qǐng)的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。
需要注意的是,本申請(qǐng)可在軟件和/或軟件與硬件的組合體中被實(shí)施,例如,可采用專用集成電路(ASIC)、通用目的計(jì)算機(jī)或任何其他類似硬件設(shè)備來(lái)實(shí)現(xiàn)。在一個(gè)實(shí)施例中,本申請(qǐng)的軟件程序可以通過(guò)處理器執(zhí)行以實(shí)現(xiàn)上文所述步驟或功能。同樣地,本申請(qǐng)的軟件程序(包括相關(guān)的數(shù)據(jù)結(jié)構(gòu))可以被存儲(chǔ)到計(jì)算機(jī)可讀記錄介質(zhì)中,例如,RAM存儲(chǔ)器,磁或光驅(qū)動(dòng)器或軟磁盤及類似設(shè)備。另外,本申請(qǐng)的一些步驟或功能可采用硬件來(lái)實(shí)現(xiàn),例如,作為與處理器配合從而執(zhí)行各個(gè)步驟或功能的電路。
另外,本申請(qǐng)的一部分可被應(yīng)用為計(jì)算機(jī)程序產(chǎn)品,例如計(jì)算機(jī)程序指令,當(dāng)其被計(jì)算機(jī)執(zhí)行時(shí),通過(guò)該計(jì)算機(jī)的操作,可以調(diào)用或提供根據(jù)本申請(qǐng)的方法和/或技術(shù)方案。而調(diào)用本申請(qǐng)的方法的程序指令,可能被存儲(chǔ)在固定的或可移動(dòng)的記錄介質(zhì)中,和/或通過(guò)廣播或其他信號(hào)承載媒體中的數(shù)據(jù)流而被傳輸,和/或被存儲(chǔ)在根據(jù)所述程序指令運(yùn)行的計(jì)算機(jī)設(shè)備的工作存儲(chǔ)器中。在此,根據(jù)本申請(qǐng)的一個(gè)實(shí)施例包括一個(gè)裝置,該裝置包括用于存儲(chǔ)計(jì)算機(jī)程序指令的存儲(chǔ)器和用于執(zhí)行程序指令的處理器,其 中,當(dāng)該計(jì)算機(jī)程序指令被該處理器執(zhí)行時(shí),觸發(fā)該裝置運(yùn)行基于前述根據(jù)本申請(qǐng)的多個(gè)實(shí)施例的方法和/或技術(shù)方案。
對(duì)于本領(lǐng)域技術(shù)人員而言,顯然本申請(qǐng)不限于上述示范性實(shí)施例的細(xì)節(jié),而且在不背離本申請(qǐng)的精神或基本特征的情況下,能夠以其他的具體形式實(shí)現(xiàn)本申請(qǐng)。因此,無(wú)論從哪一點(diǎn)來(lái)看,均應(yīng)將實(shí)施例看作是示范性的,而且是非限制性的,本申請(qǐng)的范圍由所附權(quán)利要求而不是上述說(shuō)明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化涵括在本申請(qǐng)內(nèi)。不應(yīng)將權(quán)利要求中的任何附圖標(biāo)記視為限制所涉及的權(quán)利要求。此外,顯然“包括”一詞不排除其他單元或步驟,單數(shù)不排除復(fù)數(shù)。裝置權(quán)利要求中陳述的多個(gè)單元或裝置也可以由一個(gè)單元或裝置通過(guò)軟件或者硬件來(lái)實(shí)現(xiàn)。第一,第二等詞語(yǔ)用來(lái)表示名稱,而并不表示任何特定的順序。