亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

業(yè)務(wù)訪問請(qǐng)求的處理方法和相關(guān)設(shè)備與流程

文檔序號(hào):12600680閱讀:236來源:國(guó)知局
業(yè)務(wù)訪問請(qǐng)求的處理方法和相關(guān)設(shè)備與流程
本發(fā)明涉及信息
技術(shù)領(lǐng)域
,特別涉及一種業(yè)務(wù)訪問請(qǐng)求的處理方法和相關(guān)設(shè)備。
背景技術(shù)
:容器作為一種新興的虛擬化方式,跟傳統(tǒng)的虛擬化方式相比具有眾多的優(yōu)勢(shì),其中一個(gè)特性是輕量級(jí),可以實(shí)現(xiàn)更快速的交付和部署。容器的啟動(dòng)時(shí)間通常是秒級(jí)的,從而可大量地節(jié)約業(yè)務(wù)上線的時(shí)間。容器運(yùn)行在主機(jī)的容器引擎上,對(duì)外提供訪問端口,主機(jī)在接收到客戶端發(fā)送給容器的業(yè)務(wù)訪問請(qǐng)求時(shí),將業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)到容器上,由容器中的應(yīng)用服務(wù)處理業(yè)務(wù)訪問請(qǐng)求。雖然容器可以做到秒級(jí)啟動(dòng),但容器中的應(yīng)用服務(wù)卻無法做到秒級(jí)啟動(dòng)。具體的,應(yīng)用服務(wù)在啟動(dòng)過程中需要讀取相關(guān)的配置文件,加載依賴文件,以及連接數(shù)據(jù)庫,因此應(yīng)用服務(wù)的啟動(dòng)時(shí)間相對(duì)于容器而言需時(shí)較長(zhǎng)。在現(xiàn)有技術(shù)中,當(dāng)容器未啟動(dòng),而主機(jī)接收到針對(duì)容器內(nèi)的應(yīng)用服務(wù)的業(yè)務(wù)訪問請(qǐng)求時(shí),會(huì)啟動(dòng)容器,并直接轉(zhuǎn)發(fā)該業(yè)務(wù)訪問請(qǐng)求至容器,由于容器的啟動(dòng)速度很快,因此當(dāng)業(yè)務(wù)訪問請(qǐng)求發(fā)送至容器中時(shí),容器已經(jīng)啟動(dòng),但是由于容器中的應(yīng)用服務(wù)的啟動(dòng)時(shí)間較長(zhǎng),因此,當(dāng)容器接收到業(yè)務(wù)訪問請(qǐng)求時(shí),處理該業(yè)務(wù)訪問請(qǐng)求的應(yīng)用服務(wù)可能仍然處在加載過程中,并未完成啟動(dòng),從而導(dǎo)致業(yè)務(wù)訪問請(qǐng)求無法得到處理,客戶端對(duì)該應(yīng)用服務(wù)的訪問失敗。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例提供一種業(yè)務(wù)訪問請(qǐng)求的處理方法和相關(guān)設(shè)備,使得容器只有在應(yīng)用服務(wù)啟動(dòng)完成后才會(huì)接收到業(yè)務(wù)訪問請(qǐng)求,避免容器在應(yīng)用服務(wù)啟動(dòng)完成前接收到業(yè)務(wù)訪問請(qǐng)求帶來的訪問失敗的問題。第一方面,本申請(qǐng)?zhí)峁┮环N主機(jī),包括主機(jī)操作系統(tǒng)、請(qǐng)求處理裝置、應(yīng)用狀態(tài)庫以及容器,主機(jī)操作系統(tǒng)包括容器引擎,容器運(yùn)行在容器引擎之上,容器包括應(yīng)用服務(wù)和應(yīng)用服務(wù)監(jiān)控模塊,應(yīng)用狀態(tài)庫可記錄容器中運(yùn)行的應(yīng)用服務(wù)的狀態(tài),請(qǐng)求處理裝置接收客戶端的業(yè)務(wù)訪問請(qǐng)求,且業(yè)務(wù)訪問請(qǐng)求的目的端口為待訪問的目的應(yīng)用服務(wù)的主機(jī)端口,請(qǐng)求處理裝置可根據(jù)目的應(yīng)用服務(wù)的主機(jī)端口來查詢應(yīng)用狀態(tài)庫,當(dāng)在應(yīng)用狀態(tài)庫中查詢到目的應(yīng)用服務(wù)的狀態(tài)為未啟動(dòng)時(shí),請(qǐng)求處理裝置會(huì)存儲(chǔ)業(yè)務(wù)訪問請(qǐng)求而暫時(shí)不進(jìn)行轉(zhuǎn)發(fā),此時(shí)通過容器引擎啟動(dòng)目的應(yīng)用服務(wù)所在的目的容器,并監(jiān)控應(yīng)用狀態(tài)庫。在容器啟動(dòng)后,容器中的應(yīng)用服務(wù)監(jiān)控模塊則監(jiān)控目的容器上的目的應(yīng)用服務(wù)的狀態(tài),當(dāng)目的應(yīng)用服務(wù)啟動(dòng)完成時(shí),容器中的應(yīng)用服務(wù)監(jiān)控模塊可修改應(yīng)用狀態(tài)庫以記錄目的應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng),此時(shí),請(qǐng)求處理裝置可監(jiān)控到應(yīng)用狀態(tài)庫中記錄的目的應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng),將原先存儲(chǔ)的業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)給目的容器。由于應(yīng)用服務(wù)已啟動(dòng)完成,因此,當(dāng)容器接收到業(yè)務(wù)訪問請(qǐng)求時(shí),容器中的目的應(yīng)用服務(wù)即可處理該業(yè)務(wù)訪問請(qǐng)求。通過實(shí)施上述實(shí)施例,當(dāng)請(qǐng)求處理裝置接收到客戶端的業(yè)務(wù)訪問請(qǐng)求時(shí),會(huì)判斷處理該業(yè)務(wù)訪問請(qǐng)求的應(yīng)用服務(wù)是否已啟動(dòng),只有在確定應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),才將業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)至容器,避免容器在應(yīng)用服務(wù)啟動(dòng)完成前接收到業(yè)務(wù)訪問請(qǐng)求,無法對(duì)業(yè)務(wù)訪問請(qǐng)求進(jìn)行處理帶來的訪問失敗的問題。在第一方面的一種可能的實(shí)現(xiàn)方式中,主機(jī)還包括路由表,路由表記錄有應(yīng)用服務(wù)的主機(jī)端口與應(yīng)用服務(wù)的容器端口以及應(yīng)用服務(wù)所在的容器的IP地址之間的對(duì)應(yīng)關(guān)系。通過實(shí)施上述實(shí)施例,利用路由表建立主機(jī)與容器之間的內(nèi)部網(wǎng)絡(luò)連接,可將容器從公網(wǎng)隔離。在第一方面的一種可能的實(shí)現(xiàn)方式中,請(qǐng)求處理裝置可通過以下方式來啟動(dòng)目的容器:根據(jù)應(yīng)用訪問請(qǐng)求的目的端口來查詢路由表,確定目的應(yīng)用服務(wù)所在的目的容器的IP地址,根據(jù)目的容器的IP地址通過容器引擎啟動(dòng)目的容器。在第一方面的一種可能的實(shí)現(xiàn)方式中,請(qǐng)求處理裝置可通過以下方式轉(zhuǎn)發(fā)業(yè)務(wù)訪問請(qǐng)求:根據(jù)應(yīng)用訪問請(qǐng)求的目的端口,查詢路由表,將業(yè)務(wù)訪問請(qǐng)求的目的IP地址修改為容器的IP地址,將業(yè)務(wù)訪問請(qǐng)求的目的端口修改為應(yīng)用服務(wù)的容器端口,將修改后的業(yè)務(wù)訪問請(qǐng)求發(fā)送給目的容器。在第一方面的一種可能的實(shí)現(xiàn)方式中,請(qǐng)求處理裝置在判斷到目的應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),可不存儲(chǔ)業(yè)務(wù)訪問請(qǐng)求,而直接將業(yè)務(wù)訪問請(qǐng)求發(fā)送給目的容器。通過實(shí)施本實(shí)施例,由于應(yīng)用服務(wù)已經(jīng)啟動(dòng),因此在接收到針對(duì)應(yīng)用服務(wù)的業(yè)務(wù)訪問請(qǐng)求后,無需再次啟動(dòng)容器,故不再重復(fù)執(zhí)行容器啟動(dòng)之動(dòng)作,而是將該業(yè)務(wù)請(qǐng)求直接轉(zhuǎn)發(fā)至容器進(jìn)行處理,可確保請(qǐng)求處理的速度。第二方面,本申請(qǐng)?zhí)峁┮环N請(qǐng)求處理裝置,該請(qǐng)求處理裝置設(shè)置于主機(jī),其包括以下功能模塊:接收模塊,用于接收客戶端的業(yè)務(wù)訪問請(qǐng)求,業(yè)務(wù)訪問請(qǐng)求的目的端口為待訪問的目的應(yīng)用服務(wù)的主機(jī)端口;容器啟動(dòng)模塊,用于根據(jù)目的應(yīng)用服務(wù)的主機(jī)端口,查詢應(yīng)用狀態(tài)庫,當(dāng)目的應(yīng)用服務(wù)的狀態(tài)為未啟動(dòng)時(shí),存儲(chǔ)業(yè)務(wù)訪問請(qǐng)求,通過容器引擎啟動(dòng)目的應(yīng)用服務(wù)所在的目的容器,其中,應(yīng)用狀態(tài)庫用于記錄主機(jī)上的容器中運(yùn)行的應(yīng)用服務(wù)的狀態(tài);應(yīng)用狀態(tài)庫監(jiān)控模塊,用于監(jiān)控應(yīng)用狀態(tài)庫中記錄的目的應(yīng)用服務(wù)的狀態(tài);發(fā)送模塊,用于在應(yīng)用狀態(tài)庫監(jiān)控模塊監(jiān)控到應(yīng)用狀態(tài)庫中記錄的目的應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),將容器啟動(dòng)模塊存儲(chǔ)的業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)給目的容器,以使得目的應(yīng)用服務(wù)處理業(yè)務(wù)訪問請(qǐng)求,其中,應(yīng)用狀態(tài)庫中記錄的目的應(yīng)用服務(wù)的狀態(tài)為目的容器的應(yīng)用服務(wù)監(jiān)控模塊在目的應(yīng)用服務(wù)啟動(dòng)完成后更新的。通過實(shí)施上述實(shí)施例,當(dāng)請(qǐng)求處理裝置接收到客戶端的業(yè)務(wù)訪問請(qǐng)求時(shí),會(huì)判斷處理該業(yè)務(wù)訪問請(qǐng)求的應(yīng)用服務(wù)是否已啟動(dòng),只有在確定應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),才將業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)至容器,避免容器在應(yīng)用服務(wù)啟動(dòng)完成前接收到業(yè)務(wù)訪問請(qǐng)求,無法對(duì)業(yè)務(wù)訪問請(qǐng)求進(jìn)行處理帶來的訪問失敗的問題。在第二方面的一種可能的實(shí)現(xiàn)方式中,主機(jī)還包括路由表,路由表記錄有應(yīng)用服務(wù)的主機(jī)端口與應(yīng)用服務(wù)的容器端口以及應(yīng)用服務(wù)所在的容器的IP地址之間的對(duì)應(yīng)關(guān)系。通過實(shí)施上述實(shí)施例,利用路由表建立主機(jī)與容器之間的內(nèi)部網(wǎng)絡(luò)連接,可將容器從公網(wǎng)隔離。在第二方面的一種可能的實(shí)現(xiàn)方式中,容器啟動(dòng)模塊具體用于:根據(jù)應(yīng)用訪問請(qǐng)求的目的端口,查詢路由表,確定目的應(yīng)用服務(wù)所在的目的容器的IP地址,根據(jù)目的容器的IP地址通過容器引擎啟動(dòng)目的容器。在第二方面的一種可能的實(shí)現(xiàn)方式中,發(fā)送模塊具體用于:根據(jù)應(yīng)用訪問請(qǐng)求的目的端口,查詢路由表,將業(yè)務(wù)訪問請(qǐng)求的目的IP地址修改為容器的IP地址,將業(yè)務(wù)訪問請(qǐng)求的目的端口修改為應(yīng)用服務(wù)的容器端口,將修改后的業(yè)務(wù)訪問請(qǐng)求發(fā)送給目的容器。在第二方面的一種可能的實(shí)現(xiàn)方式中,容器啟動(dòng)模塊,還用于在查詢到目的應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),不存儲(chǔ)業(yè)務(wù)訪問請(qǐng)求;發(fā)送模塊,還用于直接將業(yè)務(wù)訪問請(qǐng)求發(fā)送給目的容器。第三方面,本申請(qǐng)?zhí)峁┮环N請(qǐng)求處理方法,該方法應(yīng)用于主機(jī),主機(jī)包括主機(jī)操作系統(tǒng)、請(qǐng)求處理裝置、應(yīng)用狀態(tài)庫以及目的容器,主機(jī)操作系統(tǒng)包括容器引擎,目的容器運(yùn)行在容器引擎之上,目的容器包括目的應(yīng)用服務(wù),該方法包括:請(qǐng)求處理裝置接收客戶端的業(yè)務(wù)訪問請(qǐng)求,業(yè)務(wù)訪問請(qǐng)求的目的端口為待訪問的目的應(yīng)用服務(wù)的主機(jī)端口;請(qǐng)求處理裝置根據(jù)目的應(yīng)用服務(wù)的主機(jī)端口,查詢應(yīng)用狀態(tài)庫,當(dāng)目的應(yīng)用服務(wù)的狀態(tài)為未啟動(dòng)時(shí),存儲(chǔ)業(yè)務(wù)訪問請(qǐng)求,通過容器引擎啟動(dòng)目的應(yīng)用服務(wù)所在的目的容器;目的容器監(jiān)控目的容器上的目的應(yīng)用服務(wù)的狀態(tài),當(dāng)目的應(yīng)用服務(wù)啟動(dòng)完成時(shí),在應(yīng)用狀態(tài)庫中記錄應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng);請(qǐng)求處理裝置在監(jiān)控到應(yīng)用狀態(tài)庫中記錄的目的應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),將存儲(chǔ)的業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)給目的容器,以使得目的應(yīng)用服務(wù)處理業(yè)務(wù)訪問請(qǐng)求。其中,主機(jī)還可以包括其他容器,其他容器也運(yùn)行于容器引擎之上,本發(fā)明實(shí)施例通過業(yè)務(wù)訪問請(qǐng)求的目的端口來選擇目的容器,在業(yè)務(wù)訪問請(qǐng)求的目的端口為待訪問的目的應(yīng)用服務(wù)的主機(jī)端口時(shí),選擇目的應(yīng)用服務(wù)所在容器為目的容器。通過實(shí)施上述實(shí)施例,當(dāng)請(qǐng)求處理裝置接收到客戶端的業(yè)務(wù)訪問請(qǐng)求時(shí),會(huì)判斷處理該業(yè)務(wù)訪問請(qǐng)求的應(yīng)用服務(wù)是否已啟動(dòng),只有在確定應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),才將業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)至容器,避免容器在應(yīng)用服務(wù)啟動(dòng)完成前接收到業(yè)務(wù)訪問請(qǐng)求,無法對(duì)業(yè)務(wù)訪問請(qǐng)求進(jìn)行處理帶來的訪問失敗的問題。在第三方面的一種可能的實(shí)現(xiàn)方式中,主機(jī)還包括路由表,路由表記錄有應(yīng)用服務(wù)的主機(jī)端口與應(yīng)用服務(wù)的容器端口以及應(yīng)用服務(wù)所在的容器的IP地址之間的對(duì)應(yīng)關(guān)系。通過實(shí)施上述實(shí)施例,利用路由表建立主機(jī)與容器之間的內(nèi)部網(wǎng)絡(luò)連接,可將容器從公網(wǎng)隔離。在第三方面的一種可能的實(shí)現(xiàn)方式中,請(qǐng)求處理裝置通過容器引擎啟動(dòng)目的應(yīng)用服務(wù)所在的目的容器具體包括:請(qǐng)求處理裝置根據(jù)應(yīng)用訪問請(qǐng)求的目的端口,查詢路由表,確定目的應(yīng)用服務(wù)所在的目的容器的IP地址,根據(jù)目的容器的IP地址通過容器引擎啟動(dòng)目的容器。在第三方面的一種可能的實(shí)現(xiàn)方式中,請(qǐng)求處理裝置將存儲(chǔ)的業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)給目的容器具體包括:請(qǐng)求處理裝置根據(jù)應(yīng)用訪問請(qǐng)求的目的端口,查詢路由表,將業(yè)務(wù)訪問請(qǐng)求的目的IP地址修改為容器的IP地址,將業(yè)務(wù)訪問請(qǐng)求的目的端口修改為應(yīng)用服務(wù)的容器端口,將修改后的業(yè)務(wù)訪問請(qǐng)求發(fā)送給目的容器。在第三方面的一種可能的實(shí)現(xiàn)方式中,該方法還包括:當(dāng)請(qǐng)求處理裝置查詢到目的應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),不存儲(chǔ)業(yè)務(wù)訪問請(qǐng)求,直接將業(yè)務(wù)訪問請(qǐng)求發(fā)送給目的容器。通過實(shí)施本實(shí)施例,由于應(yīng)用服務(wù)已經(jīng)啟動(dòng),因此在接收到針對(duì)應(yīng)用服務(wù)的業(yè)務(wù)訪問請(qǐng)求后,無需再次啟動(dòng)容器,故不再重復(fù)執(zhí)行容器啟動(dòng)之動(dòng)作,而是將該業(yè)務(wù)請(qǐng)求直接轉(zhuǎn)發(fā)至容器進(jìn)行處理,可確保請(qǐng)求處理的速度。第四方面,本申請(qǐng)?zhí)峁┮环N業(yè)務(wù)訪問請(qǐng)求的處理方法,該處理方法由主機(jī)上的請(qǐng)求處理裝置執(zhí)行,包括如下步驟:步驟一、接收客戶端的業(yè)務(wù)訪問請(qǐng)求,業(yè)務(wù)訪問請(qǐng)求的目的端口為待訪問的目的應(yīng)用服務(wù)的主機(jī)端口;步驟二:根據(jù)目的應(yīng)用服務(wù)的主機(jī)端口,查詢應(yīng)用狀態(tài)庫,當(dāng)目的應(yīng)用服務(wù)的狀態(tài)為未啟動(dòng)時(shí),存儲(chǔ)業(yè)務(wù)訪問請(qǐng)求,通過容器引擎啟動(dòng)目的應(yīng)用服務(wù)所在的目的容器,其中應(yīng)用狀態(tài)庫用于記錄主機(jī)上的容器中運(yùn)行的應(yīng)用服務(wù)的狀態(tài);步驟三、監(jiān)控應(yīng)用狀態(tài)庫,當(dāng)應(yīng)用狀態(tài)庫中記錄的目的應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),將存儲(chǔ)的業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)給目的容器,以使得目的應(yīng)用服務(wù)在完成啟動(dòng)后處理業(yè)務(wù)訪問請(qǐng)求,其中,應(yīng)用狀態(tài)庫中記錄的目的應(yīng)用服務(wù)的狀態(tài)為目的容器的應(yīng)用服務(wù)監(jiān)控模塊在目的應(yīng)用服務(wù)啟動(dòng)完成后更新的。通過實(shí)施上述實(shí)施例,當(dāng)請(qǐng)求處理裝置接收到客戶端的業(yè)務(wù)訪問請(qǐng)求時(shí),會(huì)判斷處理該業(yè)務(wù)訪問請(qǐng)求的應(yīng)用服務(wù)是否已啟動(dòng),只有在確定應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),才將業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)至容器,避免容器在應(yīng)用服務(wù)啟動(dòng)完成前接收到業(yè)務(wù)訪問請(qǐng)求,無法對(duì)業(yè)務(wù)訪問請(qǐng)求進(jìn)行處理帶來的訪問失敗的問題。第五方面,本申請(qǐng)?zhí)峁┮环N主機(jī),包括存儲(chǔ)器、處理器和總線,存儲(chǔ)器和處理器分別與總線連接,存儲(chǔ)器存儲(chǔ)有程序指令以及應(yīng)用狀態(tài)庫,處理器執(zhí)行存儲(chǔ)器中的第一程序指令以實(shí)現(xiàn)請(qǐng)求處理裝置的功能,處理器執(zhí)行存儲(chǔ)器中的第二程序指令以實(shí)現(xiàn)應(yīng)用服務(wù)監(jiān)控模塊的功能,處理器執(zhí)行存儲(chǔ)器中的第一程序指令以執(zhí)行步驟:接收客戶端的業(yè)務(wù)訪問請(qǐng)求,業(yè)務(wù)訪問請(qǐng)求的目的端口為待訪問的目的應(yīng)用服務(wù)的主機(jī)端口;根據(jù)目的應(yīng)用服務(wù)的主機(jī)端口,查詢應(yīng)用狀態(tài)庫,當(dāng)目的應(yīng)用服務(wù)的狀態(tài)為未啟動(dòng)時(shí),存儲(chǔ)業(yè)務(wù)訪問請(qǐng)求,通過容器引擎啟動(dòng)目的應(yīng)用服務(wù)所在的目的容器;處理器執(zhí)行存儲(chǔ)器中的第二程序指令以執(zhí)行步驟:監(jiān)控目的容器上的目的應(yīng)用服務(wù)的狀態(tài),當(dāng)目的應(yīng)用服務(wù)啟動(dòng)完成時(shí),在應(yīng)用狀態(tài)庫中記錄應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng);處理器執(zhí)行存儲(chǔ)器中的第一程序指令以執(zhí)行步驟:在監(jiān)控到應(yīng)用狀態(tài)庫中記錄的目的應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),將存儲(chǔ)的業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)給目的容器,以使得目的應(yīng)用服務(wù)處理業(yè)務(wù)訪問請(qǐng)求。通過實(shí)施上述實(shí)施例,當(dāng)請(qǐng)求處理裝置接收到客戶端的業(yè)務(wù)訪問請(qǐng)求時(shí),會(huì)判斷處理該業(yè)務(wù)訪問請(qǐng)求的應(yīng)用服務(wù)是否已啟動(dòng),只有在確定應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),才將業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)至容器,避免容器在應(yīng)用服務(wù)啟動(dòng)完成前接收到業(yè)務(wù)訪問請(qǐng)求,無法對(duì)業(yè)務(wù)訪問請(qǐng)求進(jìn)行處理帶來的訪問失敗的問題。本申請(qǐng)?jiān)谏鲜龈鞣矫嫣峁┑膶?shí)現(xiàn)方式的基礎(chǔ)上,還可以進(jìn)行進(jìn)一步組合以提供更多實(shí)現(xiàn)方式。附圖說明為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)本發(fā)明實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面所描述的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是根據(jù)本發(fā)明實(shí)施例的主機(jī)的裝置結(jié)構(gòu)示意圖;圖2是根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)訪問請(qǐng)求的處理方法的數(shù)據(jù)交互流程圖;圖3根據(jù)本發(fā)明實(shí)施例的主機(jī)的又一裝置結(jié)構(gòu)示意圖;圖4是根據(jù)本發(fā)明實(shí)施例的主機(jī)的另一裝置結(jié)構(gòu)示意圖。具體實(shí)施方式圖1為根據(jù)本發(fā)明實(shí)施例的主機(jī)的裝置結(jié)構(gòu)示意圖,如圖1所示,主機(jī)100包括硬件10、主機(jī)操作系統(tǒng)20、請(qǐng)求處理裝置203、應(yīng)用狀態(tài)庫202、路由表201、容器30以及容器40。值得說明的是,本實(shí)施例以2個(gè)容器進(jìn)行說明,而在一些實(shí)施例中,容器的數(shù)量可以是1個(gè)或大于2個(gè)。主機(jī)操作系統(tǒng)20包括容器引擎204以及物理網(wǎng)卡驅(qū)動(dòng)205。請(qǐng)求處理裝置203可訪問路由表201和應(yīng)用狀態(tài)庫202。在一些示例中,請(qǐng)求處理裝置203可設(shè)置在主機(jī)操作系統(tǒng)20的內(nèi)核,通過內(nèi)核運(yùn)行,在另外一些示例中,請(qǐng)求處理裝置203可作為應(yīng)用軟件安裝到主機(jī)操作系統(tǒng)20,在主機(jī)操作系統(tǒng)20中運(yùn)行。應(yīng)用狀態(tài)庫202和路由表201可存儲(chǔ)于主機(jī)100的磁盤中,并可加載到主機(jī)100的內(nèi)存上。硬件10包括物理網(wǎng)卡101,硬件10還包括處理器、存儲(chǔ)器(圖未示出)等,硬件10承載主機(jī)操作系統(tǒng)的運(yùn)行。而主機(jī)操作系統(tǒng)20中的物理網(wǎng)卡驅(qū)動(dòng)205用于驅(qū)動(dòng)物理網(wǎng)卡101,物理網(wǎng)卡驅(qū)動(dòng)205相當(dāng)于物理網(wǎng)卡101的硬件接口,主機(jī)操作系統(tǒng)20通過該硬件接口控制物理網(wǎng)卡101的工作,如發(fā)送、接收數(shù)據(jù),可通過物理網(wǎng)卡101為主機(jī)100設(shè)置IP地址,該IP地址為主機(jī)100的公網(wǎng)地址(在一些實(shí)施例中,物理網(wǎng)卡101可設(shè)置多個(gè)公網(wǎng)地址,在本發(fā)明實(shí)施例中,只需使用其中一個(gè)公網(wǎng)地址即可),在本實(shí)施例中可例如為123.456.78.101。外部設(shè)備若要訪問容器30或40,需將訪問請(qǐng)求的目的地址設(shè)定為主機(jī)100的公網(wǎng)地址,請(qǐng)求處理裝置203根據(jù)路由表201記錄的轉(zhuǎn)發(fā)規(guī)則將訪問請(qǐng)求轉(zhuǎn)發(fā)至對(duì)應(yīng)容器。通過設(shè)置路由表201,可將容器從公網(wǎng)隔離,來自公網(wǎng)的業(yè)務(wù)訪問請(qǐng)求若要訪問容器,只能先到達(dá)主機(jī)100,經(jīng)主機(jī)100轉(zhuǎn)發(fā)才能到達(dá)容器。容器30包括虛擬網(wǎng)卡301、運(yùn)行環(huán)境302、應(yīng)用服務(wù)監(jiān)控模塊303、應(yīng)用服務(wù)304以及應(yīng)用服務(wù)305,容器40包括虛擬網(wǎng)卡401、運(yùn)行環(huán)境402、應(yīng)用服務(wù)監(jiān)控模塊403以及應(yīng)用服務(wù)404。運(yùn)行環(huán)境具體為包括Bins/Libs(二進(jìn)制或庫)文件的依賴包,不同的容器30和40具有不同的依賴包,從而令不同的應(yīng)用服務(wù)通過對(duì)應(yīng)依賴包可正常運(yùn)行在對(duì)應(yīng)的容器中。容器30在運(yùn)行環(huán)境302下運(yùn)行應(yīng)用服務(wù)監(jiān)控模塊303、應(yīng)用服務(wù)304和應(yīng)用服務(wù)304,容器40在運(yùn)行環(huán)境402下運(yùn)行應(yīng)用服務(wù)監(jiān)控模塊403和應(yīng)用服務(wù)404。容器30可以為應(yīng)用服務(wù)305、304運(yùn)行提供一切要素(容器40相對(duì)于應(yīng)用服務(wù)404亦然),容器30和容器40可以在容器引擎204的控制下可以運(yùn)行、啟動(dòng)、停止(即未啟動(dòng))或者被刪除,容器30與容器40之間是隔離的安全應(yīng)用平臺(tái)。請(qǐng)求處理裝置203用于對(duì)客戶端發(fā)送的針對(duì)特定容器內(nèi)的應(yīng)用服務(wù)的業(yè)務(wù)訪問請(qǐng)求進(jìn)行處理。容器引擎204通過安裝而嵌入于主機(jī)操作系統(tǒng)20的內(nèi)核,可讓開發(fā)者將應(yīng)用服務(wù)404以及運(yùn)行環(huán)境403打包到可移植的容器40中,和/或?qū)⑦\(yùn)行環(huán)境302、應(yīng)用服務(wù)304和應(yīng)用服務(wù)305打包到可移植的容器40中,然后將容器30和/或容器40發(fā)布到任何流行的Linux機(jī)器上,從而實(shí)現(xiàn)虛擬化。在安裝容器引擎204之后,容器引擎204可于shell接口中為主機(jī)操作系統(tǒng)20提供控制容器的bash指令集,其中Shell接口是主機(jī)操作系統(tǒng)20的用戶界面,是提供了用戶與主機(jī)操作系統(tǒng)20的內(nèi)核進(jìn)行交互操作的一種接口。Shell接口接收用戶輸入的bash指令并將其送入內(nèi)核去執(zhí)行,從而控制容器。并且,用戶輸入的bash指令也可以寫入到腳本中,在Shell接口指定腳本的運(yùn)行時(shí)間(或指定主機(jī)操作系統(tǒng)20啟動(dòng)后自動(dòng)執(zhí)行),可令主機(jī)操作系統(tǒng)20自動(dòng)執(zhí)行bash指令。容器引擎204還可以為容器30分配虛擬網(wǎng)卡301,為容器40分配虛擬網(wǎng)卡401,舉例而言,可通過虛擬網(wǎng)卡301將容器30的IP地址設(shè)置為192.168.1.3,通過虛擬網(wǎng)卡401將容器40的IP地址設(shè)置為192.168.1.4,容器引擎204內(nèi)設(shè)置了網(wǎng)橋2041,虛擬網(wǎng)卡301、虛擬網(wǎng)卡401分別與網(wǎng)橋2041連接,網(wǎng)橋2041通過容器的IP地址識(shí)別容器。示例性地,虛擬網(wǎng)卡301為應(yīng)用服務(wù)305分配端口21,為應(yīng)用服務(wù)304分配端口80,應(yīng)用服務(wù)304舉例而言可為Web服務(wù),應(yīng)用服務(wù)305舉例而言可為Ftp服務(wù)。網(wǎng)橋2041可將虛擬網(wǎng)卡301或虛擬網(wǎng)卡401發(fā)出的數(shù)據(jù)轉(zhuǎn)發(fā)至物理網(wǎng)卡驅(qū)動(dòng)205,物理網(wǎng)卡驅(qū)動(dòng)205對(duì)該數(shù)據(jù)進(jìn)行封裝后通過物理網(wǎng)卡101發(fā)送至外部設(shè)備。進(jìn)一步,物理網(wǎng)卡101從外部設(shè)備接收的數(shù)據(jù)經(jīng)物理網(wǎng)卡驅(qū)動(dòng)205拆包之后,在經(jīng)由請(qǐng)求處理裝置203的處理(下文將會(huì)詳細(xì)描述)后發(fā)送至網(wǎng)橋2041,并由網(wǎng)橋2041發(fā)送至容器30或容器40。示例性地,主機(jī)100可在主機(jī)操作系統(tǒng)20中為應(yīng)用服務(wù)404分配端口12404,為應(yīng)用服務(wù)305分配端口12305,為應(yīng)用服務(wù)304分配端口12304。在本發(fā)明實(shí)施例中,路由表201預(yù)先記錄了:容器30的IP地址192.168.1.3、應(yīng)用服務(wù)304的容器端口80二者與主機(jī)應(yīng)用服務(wù)304的主機(jī)端口12304之間的對(duì)應(yīng)關(guān)系;容器30的IP地址192.168.1.3、應(yīng)用服務(wù)305的容器端口21二者與主機(jī)應(yīng)用服務(wù)305的主機(jī)端口12305之間的對(duì)應(yīng)關(guān)系;容器40的IP地址192.168.1.4、應(yīng)用服務(wù)404的容器端口80二者與主機(jī)應(yīng)用服務(wù)404的主機(jī)端口12404之間的對(duì)應(yīng)關(guān)系。路由表201如表1所示:192.168.1.3:8012304192.168.1.3:2112305192.168.1.4:8012404表1應(yīng)用服務(wù)的容器端口可以由所在容器直接分配,應(yīng)用服務(wù)的主機(jī)端口可以由運(yùn)行應(yīng)用服務(wù)所在容器的主機(jī)分配,在可選實(shí)施例中,應(yīng)用服務(wù)的容器端口和主機(jī)端口可由運(yùn)行應(yīng)用服務(wù)的容器所在主機(jī)統(tǒng)一分配,或由第三方平臺(tái)分配,本發(fā)明實(shí)施例對(duì)此不作限定。應(yīng)用狀態(tài)庫202的作用是記錄本主機(jī)上的各容器上運(yùn)行的應(yīng)用服務(wù)的狀態(tài),其可以由請(qǐng)求處理裝置203及各容器中的應(yīng)用服務(wù)監(jiān)控模塊303、403寫入,并由請(qǐng)求處理裝置203讀取。值得注意的是,容器30在初始狀態(tài)下處于”未啟動(dòng)”狀態(tài),因此容器30中的應(yīng)用服務(wù)304和應(yīng)用服務(wù)305也未啟動(dòng),請(qǐng)求處理裝置203通過容器引擎204檢測(cè)到應(yīng)用服務(wù)304和應(yīng)用服務(wù)305未啟動(dòng),會(huì)對(duì)獨(dú)立于容器30之外的應(yīng)用狀態(tài)庫202進(jìn)行修改,修改應(yīng)用狀態(tài)庫202使其記錄應(yīng)用服務(wù)304的狀態(tài)為未啟動(dòng)。假設(shè)應(yīng)用服務(wù)304和應(yīng)用服務(wù)404為Web服務(wù),其名稱為apache,應(yīng)用服務(wù)305為Ftp服務(wù),其名稱為ftp,在初始狀態(tài)下,應(yīng)用狀態(tài)庫202中的部分內(nèi)容至少應(yīng)如表2所示:表2容器標(biāo)識(shí)舉例而言可通過容器名稱或容器網(wǎng)絡(luò)地址來實(shí)現(xiàn),應(yīng)用服務(wù)標(biāo)識(shí)舉例而言可通過應(yīng)用服務(wù)名稱或容器端口來實(shí)現(xiàn)。示例地,在表2中,利用容器名稱(containername)來實(shí)現(xiàn)容器標(biāo)識(shí),利用應(yīng)用服務(wù)名稱(appname)來實(shí)現(xiàn)應(yīng)用服務(wù)標(biāo)識(shí)。在表2的第一行,containername為容器名稱,appname為應(yīng)用服務(wù)名稱,status為應(yīng)用服務(wù)狀態(tài);在表2的第二行,container1為容器30的名稱,apache為容器30的應(yīng)用服務(wù)304的名稱,stop表示應(yīng)用服務(wù)304未啟動(dòng);在表2的第三行,container1為容器30的名稱,ftp為容器30的應(yīng)用服務(wù)305的名稱,stop表示應(yīng)用服務(wù)305未啟動(dòng);在表2的第四行,container2為容器40的名稱,apache為容器40的應(yīng)用服務(wù)404的名稱,run表示應(yīng)用服務(wù)305已啟動(dòng)。在一示例中,應(yīng)用狀態(tài)庫202的存儲(chǔ)路徑為“/myapp”,即應(yīng)用狀態(tài)庫202存儲(chǔ)在主機(jī)操作系統(tǒng)20的目錄myapp中。值得注意的是,該目錄名稱可根據(jù)需要設(shè)置,且在myapp目錄下,僅存在應(yīng)用狀態(tài)庫202一個(gè)文件。圖2是根據(jù)本發(fā)明實(shí)施例的業(yè)務(wù)訪問請(qǐng)求的處理方法的數(shù)據(jù)交互流程圖,以下將結(jié)合圖2對(duì)實(shí)施例提供的方案進(jìn)行說明。在500部分,容器40處于“已啟動(dòng)”狀態(tài)。在501部分,容器30處于“未啟動(dòng)”狀態(tài)。請(qǐng)求處理裝置203可向容器引擎204輸入容器停止命令,從而使得容器30處于”未啟動(dòng)”狀態(tài),具體地,請(qǐng)求處理裝置203可通過主機(jī)操作系統(tǒng)20的shell接口向容器引擎204輸入容器停止命令“dockerstopcontainer1”,container1為容器30的名稱。在502部分,請(qǐng)求處理裝置203發(fā)送容器狀態(tài)檢測(cè)命令至容器引擎204。容器狀態(tài)檢測(cè)命令例如為“dockerps-a”和“dockerps”,命令“dockerps-a”可列出處于“未啟動(dòng)”狀態(tài)的容器,命令“dockerps”可列出處于“已啟動(dòng)”狀態(tài)的容器。請(qǐng)求處理裝置203可通過主機(jī)操作系統(tǒng)20的shell接口向容器引擎204輸入容器停止命令“dockerstopcontainer1”。在503部分,容器引擎204運(yùn)行容器狀態(tài)檢測(cè)命令以檢測(cè)容器狀態(tài),并檢測(cè)到容器30處于“未啟動(dòng)”狀態(tài),且容器40處于“已啟動(dòng)”狀態(tài)。在504部分,容器引擎204將容器30處于”未啟動(dòng)”狀態(tài)的信息通知請(qǐng)求處理裝置203,并且,容器引擎204可將容器40處于“已啟動(dòng)”狀態(tài)的信息通知請(qǐng)求處理裝置203。在505部分,請(qǐng)求處理裝置203在獲知容器30處于”未啟動(dòng)”狀態(tài)之后,修改應(yīng)用狀態(tài)庫202以記錄應(yīng)用服務(wù)304和305的狀態(tài)為“未啟動(dòng)”。進(jìn)一步地,請(qǐng)求處理裝置203在獲知容器40處于“已啟動(dòng)”狀態(tài)之后,請(qǐng)求處理裝置203通過容器引擎204檢測(cè)到應(yīng)用服務(wù)404已啟動(dòng),對(duì)應(yīng)用狀態(tài)庫202進(jìn)行修改,修改應(yīng)用狀態(tài)庫202以記錄應(yīng)用服務(wù)404的狀態(tài)為“已啟動(dòng)”。具體地,請(qǐng)求處理裝置203通過容器引擎204發(fā)送應(yīng)用服務(wù)狀態(tài)查詢指令至容器40,容器40在自身shell接口中輸入“ps”命令以查詢應(yīng)用服務(wù)404的狀態(tài),并獲知其為已啟動(dòng),請(qǐng)求處理裝置203通過容器引擎204獲取應(yīng)用服務(wù)404的狀態(tài)為“已啟動(dòng)”。修改后的應(yīng)用狀態(tài)庫202如表3所示:表3通過以上步驟,可使得應(yīng)用狀態(tài)庫202所記錄的應(yīng)用服務(wù)狀態(tài)更新為與當(dāng)前應(yīng)用服務(wù)的狀態(tài)一致,經(jīng)更新的應(yīng)用狀態(tài)庫202可用于以下步驟506-514。在一種具體的場(chǎng)景中,請(qǐng)求處理裝置203通過主機(jī)操作系統(tǒng)20的shell接口來執(zhí)行“etcdctlset/myapp/container1/apache/status"stop"”命令,來修改位于“/myapp”存儲(chǔ)路徑中的應(yīng)用狀態(tài)庫202,并將應(yīng)用狀態(tài)庫202中在名為“container1”的容器30的,且名為“apache”的應(yīng)用服務(wù)的狀態(tài)記錄為“stop”(即如表2第二行所示)。并且,請(qǐng)求處理裝置203通過主機(jī)操作系統(tǒng)20的shell接口來執(zhí)行“etcdctlset/myapp/container1/ftp/status"stop"”命令,來修改位于“/myapp”存儲(chǔ)路徑中的應(yīng)用狀態(tài)庫202,并將應(yīng)用狀態(tài)庫202中在名為“container1”的容器30上的、名為“ftp”的應(yīng)用服務(wù)的狀態(tài)記錄為“stop”(即如表2第二行所示)。進(jìn)一步,請(qǐng)求處理裝置203通過主機(jī)操作系統(tǒng)20的shell接口來執(zhí)行“etcdctlset/myapp/container2/apache/status"start"”命令,將應(yīng)用狀態(tài)庫202中在名為“container2”的容器40上的、名為“apache”的應(yīng)用服務(wù)的狀態(tài)記錄為“start”(即如表2第三行所示)。其中,請(qǐng)求處理裝置203在503部分獲知容器30(container1)處于“未啟動(dòng)”狀態(tài),且容器40(container2)處于“已啟動(dòng)”狀態(tài)時(shí),通過查詢應(yīng)用狀態(tài)庫202即可獲知container1中的所有應(yīng)用服務(wù)的名稱:apache和ftp,且container2中的所有應(yīng)用服務(wù)的名稱:apache。在506部分,請(qǐng)求處理裝置203接收到業(yè)務(wù)訪問請(qǐng)求。該業(yè)務(wù)訪問請(qǐng)求是由外部設(shè)備(如客戶端)針對(duì)容器30中的應(yīng)用服務(wù)304而發(fā)送的。在主機(jī)100中,首先由圖1中的物理網(wǎng)卡101接收業(yè)務(wù)訪問請(qǐng)求,并經(jīng)物理網(wǎng)卡驅(qū)動(dòng)205解析發(fā)送至請(qǐng)求處理裝置203。經(jīng)解析后的業(yè)務(wù)訪問請(qǐng)求可包括目的IP地址、目的端口、源IP地址、源端口以及請(qǐng)求類型,請(qǐng)求類型包括但不限于讀請(qǐng)求、寫請(qǐng)求、連接請(qǐng)求、下載請(qǐng)求、測(cè)試請(qǐng)求等。其中,目的IP地址為主機(jī)100的外網(wǎng)IP地址,目的端口為應(yīng)用服務(wù)304的主機(jī)端口,源IP地址和源端口為發(fā)出業(yè)務(wù)訪問請(qǐng)求至主機(jī)100的終端的IP地址和端口。在一個(gè)示例中,業(yè)務(wù)訪問請(qǐng)求可為網(wǎng)頁訪問請(qǐng)求(http請(qǐng)求),請(qǐng)求類型為讀請(qǐng)求,目的IP地址為123.456.78.101(主機(jī)100的外網(wǎng)IP地址),目的端口是12304(應(yīng)用服務(wù)304的主機(jī)端口),源IP地址為123.456.98.102(外部設(shè)備的IP地址),源端口為8012。應(yīng)用服務(wù)304可為Web服務(wù)器軟件,如apache軟件。在另一個(gè)示例中,業(yè)務(wù)訪問請(qǐng)求為下載請(qǐng)求(ftp請(qǐng)求)或其他常見的網(wǎng)絡(luò)請(qǐng)求。為了便于理解,在本實(shí)施例中,請(qǐng)求處理裝置203的業(yè)務(wù)訪問請(qǐng)求為網(wǎng)頁訪問請(qǐng)求。在507和509部分,請(qǐng)求處理裝置203在接收到業(yè)務(wù)訪問請(qǐng)求后,解析到業(yè)務(wù)訪問請(qǐng)求的目的端口為應(yīng)用服務(wù)404的主機(jī)端口12304,查詢路由表201中端口12304對(duì)應(yīng)的容器地址192.168.1.3,根據(jù)容器地址192.168.1.3獲知獲知容器30的名稱(如container1),在應(yīng)用狀態(tài)表202中查詢?nèi)萜鱟ontainer1的應(yīng)用服務(wù)的狀態(tài),由于container1中的應(yīng)用服務(wù)apache和ftp的狀態(tài)均為“未啟動(dòng)”,因此可以確定容器30處于“未啟動(dòng)”狀態(tài)(參見505部分),此時(shí)需要啟動(dòng)容器30,因此請(qǐng)求處理裝置203存儲(chǔ)業(yè)務(wù)訪問請(qǐng)求,等待應(yīng)用服務(wù)404啟動(dòng)后再轉(zhuǎn)發(fā)業(yè)務(wù)訪問請(qǐng)求。具體地,在507部分,請(qǐng)求處理裝置203發(fā)送容器啟動(dòng)命令至容器引擎204。該容器啟動(dòng)命令為“dockerstartcontainer1”,請(qǐng)求處理裝置203通過主機(jī)操作系統(tǒng)20的shell接口來執(zhí)行“dockerstartcontainer1”命令。值得注意的是,請(qǐng)求處理裝置203會(huì)預(yù)先記錄容器30的IP地址192.168.1.3與容器30的名稱(如container1)之間的對(duì)應(yīng)關(guān)系,由容器30的IP地址192.168.1.3獲得容器30的名稱container1。并且,請(qǐng)求處理裝置203發(fā)送容器啟動(dòng)命令之后,可于508部分監(jiān)控應(yīng)用狀態(tài)庫202。該508部分可在發(fā)送容器啟動(dòng)命令之后或與發(fā)送容器啟動(dòng)命令同步執(zhí)行。請(qǐng)求處理裝置203可通過主機(jī)操作系統(tǒng)20的shell接口執(zhí)行“confd/myapp”命令,來實(shí)現(xiàn)對(duì)應(yīng)用狀態(tài)庫202的監(jiān)控,“/myapp”為應(yīng)用狀態(tài)庫202所在路徑,應(yīng)用狀態(tài)庫202存儲(chǔ)在路徑目錄“/myapp”中。在一些實(shí)施例中,應(yīng)用狀態(tài)庫的路徑目錄也可以是其他路徑,本發(fā)明實(shí)施例對(duì)此不作限定。在執(zhí)行上述命令后,請(qǐng)求處理裝置203可檢測(cè)到應(yīng)用狀態(tài)庫202的狀態(tài)status變化。在509部分,容器引擎204根據(jù)容器啟動(dòng)命令啟動(dòng)容器30。值得注意的是,在本部分中,基于容器本身的輕量特性,容器30的啟動(dòng)速度為秒級(jí)。在510部分,容器30啟動(dòng)應(yīng)用服務(wù)304和305,并監(jiān)控應(yīng)用服務(wù)304和305是否完成啟動(dòng)。其中,應(yīng)用服務(wù)304和305可通過腳本設(shè)置為在容器30啟動(dòng)之后實(shí)現(xiàn)自動(dòng)啟動(dòng),圖1中所示的應(yīng)用服務(wù)監(jiān)控模塊303可用于監(jiān)控應(yīng)用服務(wù)304和305是否完成啟動(dòng),應(yīng)用服務(wù)監(jiān)控模塊303通過容器30的shell接口執(zhí)行應(yīng)用服務(wù)啟動(dòng)命令,應(yīng)用服務(wù)啟動(dòng)命令例如可為“start”命令,其用法為“應(yīng)用服務(wù)所在路徑/bin/應(yīng)用服務(wù)名稱start”。且應(yīng)用服務(wù)監(jiān)控模塊303可進(jìn)一步通過容器30的shell接口執(zhí)行“curllocalhost:port/appname/index.html”命令,以監(jiān)控應(yīng)用服務(wù)304或305是否啟動(dòng)完成。其中l(wèi)ocalhost是指容器30本身,port為容器30為應(yīng)用服務(wù)分配的端口(針對(duì)應(yīng)用服務(wù)304是端口80,針對(duì)應(yīng)用服務(wù)305是端口21),appname為應(yīng)用服務(wù)名稱(針對(duì)應(yīng)用服務(wù)304是apache,針對(duì)應(yīng)用服務(wù)305是ftp),該命令可用于監(jiān)控容器30上的應(yīng)用服務(wù)304或305是否啟動(dòng)完成。由于應(yīng)用服務(wù)304為網(wǎng)頁服務(wù)軟件,需要進(jìn)行連接數(shù)據(jù)庫、讀取配置文件等動(dòng)作,因此其啟動(dòng)所需時(shí)間比容器30啟動(dòng)所需時(shí)間長(zhǎng)。在511部分,在容器30確認(rèn)應(yīng)用服務(wù)304和305啟動(dòng)完成后,將應(yīng)用狀態(tài)庫202記錄的應(yīng)用服務(wù)304和305的狀態(tài)更新為已啟動(dòng)。具體地,容器30中的應(yīng)用服務(wù)監(jiān)控模塊303通過向容器30的shell接口執(zhí)行“etcdctlset/myapp/container1/apache/status"run"”命令,來修改位于“/myapp”目錄中的應(yīng)用狀態(tài)庫202,并將應(yīng)用狀態(tài)庫202中“container1”對(duì)應(yīng)的名為“apache”的應(yīng)用服務(wù)304的狀態(tài)修改為“run”(已啟動(dòng))。并且,應(yīng)用服務(wù)監(jiān)控模塊303還通過向容器30的shell接口執(zhí)行“etcdctlset/myapp/container1/ftp/status"run"”命令,將應(yīng)用狀態(tài)庫202中“container1”對(duì)應(yīng)的名為“ftp”的應(yīng)用服務(wù)305的狀態(tài)修改為“run”(已啟動(dòng))。在512部分,由于應(yīng)用狀態(tài)庫202中應(yīng)用服務(wù)304的狀態(tài)被修改為已啟動(dòng),該狀態(tài)的改變會(huì)被請(qǐng)求處理裝置203所檢測(cè)到(參見步驟508),此時(shí),請(qǐng)求處理裝置203將業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)至容器30。值得注意的是,于此所述的“轉(zhuǎn)發(fā)”是指:請(qǐng)求處理裝置203根據(jù)業(yè)務(wù)訪問請(qǐng)求所攜帶的目的端口12304,在路由表201中查找與該目的端口12304對(duì)應(yīng)的容器30的IP地址和應(yīng)用服務(wù)304的容器端口(192.168.1.3:80),將業(yè)務(wù)訪問請(qǐng)求的目的IP地址123.456.78.101修改為容器30的IP地址192.168.1.3,將目的端口12304修改為應(yīng)用服務(wù)304的容器端口80,并將更新后的業(yè)務(wù)訪問請(qǐng)求發(fā)送至圖1所示的網(wǎng)橋2041,網(wǎng)橋2041根據(jù)該業(yè)務(wù)訪問請(qǐng)求所攜帶的容器30的IP地址192.168.1.3和應(yīng)用服務(wù)304的容器端口80將該業(yè)務(wù)訪問請(qǐng)求發(fā)送至容器30的虛擬網(wǎng)卡301的端口80,從而令應(yīng)用服務(wù)304在該端口80接收到應(yīng)用服務(wù)請(qǐng)求,進(jìn)而對(duì)應(yīng)用服務(wù)請(qǐng)求進(jìn)行處理。在513部分,請(qǐng)求處理裝置203接收到針對(duì)設(shè)置在容器30內(nèi)的應(yīng)用服務(wù)304的另一業(yè)務(wù)訪問請(qǐng)求,該另一業(yè)務(wù)訪問請(qǐng)求可例如為另一Web網(wǎng)頁訪問請(qǐng)求。在514部分,請(qǐng)求處理裝置203在判斷到另一業(yè)務(wù)訪問請(qǐng)求的目的端口為應(yīng)用服務(wù)404的主機(jī)端口12304,查詢路由表201中端口12304對(duì)應(yīng)的容器地址192.168.1.3,根據(jù)容器地址192.168.1.3獲知獲知容器30的名稱(如container1),在應(yīng)用狀態(tài)表202中查詢?nèi)萜鱟ontainer1的應(yīng)用服務(wù)的狀態(tài),由于container1中的應(yīng)用服務(wù)apache和ftp的狀態(tài)均為“已啟動(dòng)”(參見511部分),因此可以確定容器30處于“已啟動(dòng)”狀態(tài)(參見505部分),此時(shí)不需要啟動(dòng)容器30,因此請(qǐng)求處理裝置203不存儲(chǔ)業(yè)務(wù)訪問請(qǐng)求,直接將該另一業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)至容器30,其中,轉(zhuǎn)發(fā)規(guī)則可參考512部分所述,因此可使得應(yīng)用服務(wù)304可對(duì)該另一業(yè)務(wù)訪問請(qǐng)求進(jìn)行處理。可選地,請(qǐng)求處理裝置203在轉(zhuǎn)發(fā)另一業(yè)務(wù)訪問請(qǐng)求之前,可查詢應(yīng)用狀態(tài)庫202中應(yīng)用服務(wù)304的狀態(tài),具體地,在表2中container1的apache的status(狀態(tài))為“run(已啟動(dòng))”時(shí),可直接轉(zhuǎn)發(fā)另一業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)至容器30,若為“stop”則需要執(zhí)行如507至511部分以啟動(dòng)容器30。在本部分中,由于應(yīng)用服務(wù)304已經(jīng)啟動(dòng),因此在接收到針對(duì)應(yīng)用服務(wù)304的另一業(yè)務(wù)訪問請(qǐng)求后,無需再次啟動(dòng)容器30,故不再重復(fù)執(zhí)行507至511部分,而是將另一業(yè)務(wù)請(qǐng)求直接轉(zhuǎn)發(fā),可確保后續(xù)請(qǐng)求處理的速度。在本實(shí)施例中,當(dāng)請(qǐng)求處理裝置接收到客戶端的業(yè)務(wù)訪問請(qǐng)求時(shí),會(huì)判斷處理該業(yè)務(wù)訪問請(qǐng)求的應(yīng)用服務(wù)是否已啟動(dòng),只有在確定應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),才將業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)至容器,避免容器在應(yīng)用服務(wù)啟動(dòng)完成前接收到業(yè)務(wù)訪問請(qǐng)求,無法對(duì)業(yè)務(wù)訪問請(qǐng)求進(jìn)行處理帶來的訪問失敗的問題。并且,在本實(shí)施例中,在初始狀態(tài)下,當(dāng)請(qǐng)求處理裝置203接收到針對(duì)應(yīng)用服務(wù)305的業(yè)務(wù)訪問請(qǐng)求時(shí),也會(huì)做出類似507至514部分的動(dòng)作,從而保證業(yè)務(wù)訪問請(qǐng)求不會(huì)因?yàn)槿萜?0的啟動(dòng)速度過快而丟失。進(jìn)一步,當(dāng)請(qǐng)求處理裝置203接收到針對(duì)應(yīng)用服務(wù)404的業(yè)務(wù)訪問請(qǐng)求時(shí),可根據(jù)應(yīng)用狀態(tài)庫202中應(yīng)用服務(wù)404的狀態(tài)來轉(zhuǎn)發(fā)應(yīng)用服務(wù)304的業(yè)務(wù)訪問請(qǐng)求。具體地,在查詢到在表2中container2的apache的status(狀態(tài))為“run(已啟動(dòng))”時(shí),直接轉(zhuǎn)發(fā)針對(duì)應(yīng)用服務(wù)304的業(yè)務(wù)訪問請(qǐng)求至容器40,由于跳過請(qǐng)求處理裝置203的處理,因此可以保證請(qǐng)求處理速度。以下請(qǐng)參見圖3,圖3示出請(qǐng)求處理裝置203的內(nèi)部結(jié)構(gòu)。如圖3所示,處理裝置203包括接收模塊101、容器啟動(dòng)模塊102、應(yīng)用狀態(tài)庫監(jiān)控模塊103以及發(fā)送模塊104。其中,接收模塊101可執(zhí)行上述部分506和513所述的功能,容器啟動(dòng)模塊102可執(zhí)行上述部分502和507所述的功能,應(yīng)用狀態(tài)庫監(jiān)控模塊103可執(zhí)行上述508部分所述的功能,發(fā)送模塊104可執(zhí)行上述512和514部分所述的功能。上述的功能模塊可通過腳本實(shí)現(xiàn),腳本可在主機(jī)操作系統(tǒng)20的shell接口上運(yùn)行,從而實(shí)現(xiàn)對(duì)應(yīng)功能。本發(fā)明實(shí)施例進(jìn)一步提供一種主機(jī),請(qǐng)參見圖4,圖4是根據(jù)本發(fā)明實(shí)施例的主機(jī)100的裝置結(jié)構(gòu)示意圖,如圖4所示,主主機(jī)100包括存儲(chǔ)器602、處理器601和總線603,存儲(chǔ)器602和處理器601分別與總線603連接,存儲(chǔ)器602存儲(chǔ)有程序指令以及應(yīng)用狀態(tài)庫202,處理器601執(zhí)行存儲(chǔ)器602中的第一程序指令以實(shí)現(xiàn)請(qǐng)求處理裝置203的功能,處理器601執(zhí)行存儲(chǔ)器602中的第二程序指令以實(shí)現(xiàn)應(yīng)用服務(wù)監(jiān)控模塊303、403的功能,處理器601執(zhí)行存儲(chǔ)器602中的第一程序指令以執(zhí)行步驟:接收客戶端的業(yè)務(wù)訪問請(qǐng)求,業(yè)務(wù)訪問請(qǐng)求的目的端口為待訪問的目的應(yīng)用服務(wù)的主機(jī)端口;根據(jù)目的應(yīng)用服務(wù)的主機(jī)端口,查詢應(yīng)用狀態(tài)庫202,當(dāng)目的應(yīng)用服務(wù)的狀態(tài)為未啟動(dòng)時(shí),存儲(chǔ)業(yè)務(wù)訪問請(qǐng)求,通過容器引擎啟動(dòng)目的應(yīng)用服務(wù)所在的目的容器;處理器601執(zhí)行存儲(chǔ)器602中的第二程序指令以執(zhí)行步驟:監(jiān)控目的容器上的目的應(yīng)用服務(wù)的狀態(tài),當(dāng)目的應(yīng)用服務(wù)啟動(dòng)完成時(shí),在應(yīng)用狀態(tài)庫202中記錄應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng);處理器601執(zhí)行存儲(chǔ)器602中的第一程序指令以執(zhí)行步驟:在監(jiān)控到應(yīng)用狀態(tài)庫202中記錄的目的應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),將存儲(chǔ)的業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)給目的容器,以使得目的應(yīng)用服務(wù)處理業(yè)務(wù)訪問請(qǐng)求。通過在確定應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),先存儲(chǔ)業(yè)務(wù)訪問請(qǐng)求,才將業(yè)務(wù)訪問請(qǐng)求轉(zhuǎn)發(fā)至容器,容器在于其中的應(yīng)用服務(wù)在啟動(dòng)完畢之后才會(huì)接收到業(yè)務(wù)訪問請(qǐng)求,使得應(yīng)用服務(wù)可對(duì)業(yè)務(wù)訪問請(qǐng)求進(jìn)行處理,可保證業(yè)務(wù)訪問請(qǐng)求不會(huì)因?yàn)槿萜鞯膯?dòng)速度過快而丟失。可選地,主機(jī)還包括路由表201,路由表201記錄有應(yīng)用服務(wù)的主機(jī)端口與應(yīng)用服務(wù)的容器端口以及應(yīng)用服務(wù)所在的容器的IP地址之間的對(duì)應(yīng)關(guān)系??蛇x地,處理器601執(zhí)行存儲(chǔ)器602中的第一程序指令以執(zhí)行具體步驟來啟動(dòng)目的容器:根據(jù)應(yīng)用訪問請(qǐng)求的目的端口,查詢路由表201,確定目的應(yīng)用服務(wù)所在的目的容器的IP地址,根據(jù)目的容器的IP地址通過容器引擎啟動(dòng)目的容器??蛇x地,處理器601執(zhí)行存儲(chǔ)器602中的第一程序指令以執(zhí)行具體步驟來轉(zhuǎn)發(fā)業(yè)務(wù)訪問請(qǐng)求:根據(jù)應(yīng)用訪問請(qǐng)求的目的端口,查詢路由表201,將業(yè)務(wù)訪問請(qǐng)求的目的IP地址修改為容器的IP地址,將業(yè)務(wù)訪問請(qǐng)求的目的端口修改為應(yīng)用服務(wù)的容器端口,將修改后的業(yè)務(wù)訪問請(qǐng)求發(fā)送給目的容器??蛇x地,處理器601執(zhí)行存儲(chǔ)器602中的第一程序指令以執(zhí)行步驟:當(dāng)目的應(yīng)用服務(wù)的狀態(tài)為已啟動(dòng)時(shí),不存儲(chǔ)業(yè)務(wù)訪問請(qǐng)求,直接將業(yè)務(wù)訪問請(qǐng)求發(fā)送給目的容器。綜上,圖4所示的實(shí)施例詳細(xì)介紹了主機(jī)的硬件架構(gòu),圖4所示主機(jī)的功能和效果和圖1及其對(duì)應(yīng)內(nèi)容完全一致,于此不作贅述。需說明的是,以上描述的任意裝置實(shí)施例都僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上。可以根據(jù)實(shí)際的需要選擇其中的部分或者全部模塊來實(shí)現(xiàn)本實(shí)施例方案的目的。另外,本發(fā)明提供的裝置實(shí)施例附圖中,模塊之間的連接關(guān)系表示它們之間具有通信連接,具體可以實(shí)現(xiàn)為一條或多條通信總線或信號(hào)線。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。通過以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實(shí)現(xiàn),當(dāng)然也可以通過專用硬件包括專用集成電路、專用CPU、專用存儲(chǔ)器、專用元器件等來實(shí)現(xiàn)。一般情況下,凡由計(jì)算機(jī)程序完成的功能都可以很容易地用相應(yīng)的硬件來實(shí)現(xiàn),而且,用來實(shí)現(xiàn)同一功能的具體硬件結(jié)構(gòu)也可以是多種多樣的,例如模擬電路、數(shù)字電路或?qū)S秒娐返取5?,?duì)本發(fā)明而言更多情況下軟件程序?qū)崿F(xiàn)是更佳的實(shí)施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì)算機(jī)的軟盤,U盤、移動(dòng)硬盤、只讀存儲(chǔ)器(ROM,Read-OnlyMemory)、隨機(jī)存取存儲(chǔ)器(RAM,RandomAccessMemory)、磁碟或者光盤等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,上述描述的系統(tǒng)、裝置或單元的具體工作過程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過程,在此不再贅述。以上所述,僅為本發(fā)明的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域
的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。當(dāng)前第1頁1 2 3 
當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1