本發(fā)明涉及服務(wù)器的推薦方法及其裝置。
背景技術(shù):
傳統(tǒng)的分布式應(yīng)用,一方面依賴硬件進(jìn)行服務(wù)的負(fù)載均衡,另一方面針對(duì)軟件負(fù)載均衡,現(xiàn)在市面上也有很多分布式注冊(cè)中心,主要使用幾大算法和原則進(jìn)行:Paxos推舉算法、LRU最少使用算法、FIFO先入先出規(guī)則等。
分布式注冊(cè)中心zookeeper是一個(gè)開放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),現(xiàn)由apache軟件基金會(huì)進(jìn)行維護(hù),是基于Fast Paxos推舉算法進(jìn)行負(fù)載均衡。目前的分布式注冊(cè)中心存在以下缺陷:
1.命名空間限制,現(xiàn)有方案中命名空間Node類似于一個(gè)計(jì)算機(jī)文件系統(tǒng),當(dāng)存在子命名情況下不能被依次刪除;
2.內(nèi)存使用率問題,底層采用內(nèi)存數(shù)據(jù)庫(kù)進(jìn)行實(shí)例化加載配置對(duì)象,對(duì)內(nèi)存的使用率比較高;
3.啟動(dòng)順序,服務(wù)問題,使用上只能根據(jù)現(xiàn)有服務(wù)的實(shí)例化順序去加載,并且更新必須按照現(xiàn)有的順序更新;
4.沒有對(duì)任務(wù)進(jìn)行時(shí)間統(tǒng)計(jì)計(jì)算,在任務(wù)調(diào)度上沒有根據(jù)實(shí)際時(shí)間進(jìn)行任務(wù)調(diào)度最優(yōu)選擇;
5.沒有直接管理的界面進(jìn)行管理。
技術(shù)實(shí)現(xiàn)要素:
為了克服現(xiàn)有技術(shù)的不足,本發(fā)明的目的在于提供一種服務(wù)器的推薦方法,其能解決服務(wù)器的任務(wù)調(diào)度問題。
為了實(shí)現(xiàn)上述目的,本發(fā)明所采用的技術(shù)方案如下:
一種服務(wù)器的推薦方法,其包括以下步驟:
啟動(dòng)分布式注冊(cè)中心;
啟動(dòng)與所述分布式注冊(cè)中心對(duì)應(yīng)的多臺(tái)分布式服務(wù)器;
分布式注冊(cè)中心接收用戶通過客戶端發(fā)起的服務(wù)請(qǐng)求,并根據(jù)預(yù)設(shè)的策略,選擇對(duì)應(yīng)的分布式服務(wù)器處理請(qǐng)求的服務(wù)。
優(yōu)選的,所述策略為:根據(jù)客戶端的種類、處理服務(wù)所消耗的時(shí)間平均值、處理服務(wù)所產(chǎn)生的時(shí)間抖動(dòng)值以及分布式服務(wù)器的對(duì)應(yīng)關(guān)系,選擇處理對(duì)應(yīng)的服務(wù)的時(shí)間平均值最小和時(shí)間抖動(dòng)值最小的分布式服務(wù)器;其中,所述對(duì)應(yīng)關(guān)系由以下流程獲得:統(tǒng)計(jì)用戶每次通過不同種類的客戶端發(fā)起的服務(wù)在不同的分布式服務(wù)器中進(jìn)行處理所消耗的時(shí)間以及所產(chǎn)生的時(shí)間抖動(dòng)值,計(jì)算出對(duì)應(yīng)服務(wù)在對(duì)應(yīng)的分布式服務(wù)器中的時(shí)間平均值和最大、最小的時(shí)間抖動(dòng)值,從而將客戶端的種類、處理服務(wù)所消耗的時(shí)間平均值、處理服務(wù)所產(chǎn)生的時(shí)間抖動(dòng)值以及分布式服務(wù)器形成所述對(duì)應(yīng)關(guān)系。
進(jìn)一步優(yōu)選的,所述客戶端的種類由以下參數(shù)構(gòu)成:客戶端的型號(hào)、客戶端的硬件碼、客戶端與分布式注冊(cè)中心通信的接口。
優(yōu)選的,所述策略為:當(dāng)請(qǐng)求的服務(wù)的發(fā)起量超過預(yù)設(shè)閾值時(shí),根據(jù)每個(gè)服務(wù)在每臺(tái)分布式服務(wù)器所消耗的時(shí)間的關(guān)系,計(jì)算出每臺(tái)服務(wù)器當(dāng)前處理的所有服務(wù)所消耗的總時(shí)間,根據(jù)處理請(qǐng)求的服務(wù)所需的時(shí)間,對(duì)請(qǐng)求的服務(wù)在各分布式服務(wù)器中進(jìn)行快慢任務(wù)的均衡分配,根據(jù)快慢任務(wù)的均衡分配,將請(qǐng)求的服務(wù)加入到對(duì)應(yīng)的分布式服務(wù)器的處理隊(duì)列中。
優(yōu)選的,當(dāng)請(qǐng)求的服務(wù)為多用戶的并發(fā)服務(wù)請(qǐng)求時(shí),且當(dāng)客戶端的種類為相同時(shí),且并發(fā)時(shí)間小于預(yù)設(shè)時(shí)間時(shí),將請(qǐng)求的服務(wù)進(jìn)行合并處理;所述客戶端的種類由以下參數(shù)構(gòu)成:客戶端的型號(hào)、客戶端的硬件碼、客戶端與分布式注冊(cè)中心通信的接口。所述預(yù)設(shè)時(shí)間為100ms。
優(yōu)選的,所述推薦方法還包括以下步驟:實(shí)時(shí)生成網(wǎng)絡(luò)拓?fù)鋱D,所述網(wǎng)絡(luò)拓?fù)鋱D用于顯示所有分布式服務(wù)器處理請(qǐng)求的服務(wù)的狀態(tài)。
優(yōu)選的,所述推薦方法還包括以下步驟:實(shí)時(shí)生成時(shí)間規(guī)劃圖,所述時(shí)間規(guī)劃圖用于顯示每一臺(tái)分布式服務(wù)器正在處理的每一個(gè)請(qǐng)求的服務(wù)以及對(duì)應(yīng)的時(shí)間平均值、時(shí)間的最大和最小抖動(dòng)值。
本發(fā)明還公開了一種服務(wù)器的推薦裝置,其包括以下模塊:
第一啟動(dòng)模塊,用于啟動(dòng)分布式注冊(cè)中心;
第二啟動(dòng)模塊,用于啟動(dòng)與所述分布式注冊(cè)中心對(duì)應(yīng)的多臺(tái)分布式服務(wù)器;
策略推薦模塊,用于通過分布式注冊(cè)中心接收用戶通過客戶端發(fā)起的服務(wù)請(qǐng)求,并根據(jù)預(yù)設(shè)的策略,選擇對(duì)應(yīng)的分布式服務(wù)器處理請(qǐng)求的服務(wù)。
相比現(xiàn)有技術(shù),本發(fā)明的有益效果在于:
將每種服務(wù)在不同的分布式服務(wù)器中運(yùn)行的實(shí)際時(shí)間進(jìn)行分析后,進(jìn)行服務(wù)的推薦調(diào)度和監(jiān)控。
采用分布式注冊(cè)中心減少開發(fā)過程中的耦合程度,統(tǒng)一管理,有統(tǒng)一界面進(jìn)行服務(wù)的開關(guān),有統(tǒng)一的界面進(jìn)行信息的查看,及時(shí)的展現(xiàn)出每個(gè)服務(wù)的狀態(tài)和自動(dòng)管理,對(duì)運(yùn)維和開發(fā)工作帶來更多的便捷和便利,在用戶角度上,系統(tǒng)更加直觀,速度提升上更加明顯,更加有效的提升企業(yè)的服務(wù)品質(zhì)。
附圖說明
圖1為本發(fā)明較佳實(shí)施例的一種服務(wù)器的推薦方法的流程圖;
圖2為本發(fā)明較佳實(shí)施例的一種服務(wù)器的推薦裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面,結(jié)合附圖以及具體實(shí)施方式,對(duì)本發(fā)明做進(jìn)一步描述:
如圖1所示,一種服務(wù)器的推薦方法,其包括以下步驟:
步驟S1、啟動(dòng)分布式注冊(cè)中心。
分布式注冊(cè)中心可采用commandLine方式啟動(dòng),可以使用start.sh–profile(方式指定環(huán)境為開發(fā)、測(cè)試、生產(chǎn)),在實(shí)現(xiàn)中使用了多種配置文件方式主要包含的配置文件如:緩存、日志、負(fù)載均衡節(jié)點(diǎn),其中負(fù)載均衡節(jié)點(diǎn)配置文件config.properties配置多個(gè)負(fù)載均衡的實(shí)例地址,配置文件中集群節(jié)點(diǎn)實(shí)例如下:
heartbeat=200##此為每個(gè)節(jié)點(diǎn)的心跳檢測(cè)間隔時(shí)間(單位毫秒)
node.s1=192.168.0.101
node.s2=192.168.0.102
node.s3=192.168.0.104
指定好每個(gè)節(jié)點(diǎn)的ip地址即可,當(dāng)添加節(jié)點(diǎn)時(shí)在配置文件中加入node.s4依次類推n為node.sn=xxxx最大化的加強(qiáng)分布式注冊(cè)中心的容災(zāi)能力。
步驟S2、啟動(dòng)與所述分布式注冊(cè)中心對(duì)應(yīng)的多臺(tái)分布式服務(wù)器。本步驟不必按照任何順序啟動(dòng)多臺(tái)分布式服務(wù)器。
步驟S3、分布式注冊(cè)中心接收用戶通過客戶端發(fā)起的服務(wù)請(qǐng)求,并根據(jù)預(yù)設(shè)的策略,選擇對(duì)應(yīng)的分布式服務(wù)器處理請(qǐng)求的服務(wù)。
所述策略包括:根據(jù)客戶端的種類、處理服務(wù)所消耗的時(shí)間平均值、處理服務(wù)所產(chǎn)生的時(shí)間抖動(dòng)值以及分布式服務(wù)器的對(duì)應(yīng)關(guān)系,選擇處理對(duì)應(yīng)的服務(wù)的時(shí)間平均值最小和時(shí)間抖動(dòng)值最小的分布式服務(wù)器;其中,所述對(duì)應(yīng)關(guān)系由以下流程獲得:統(tǒng)計(jì)用戶每次通過不同種類的客戶端發(fā)起的服務(wù)在不同的分布式服務(wù)器中進(jìn)行處理所消耗的時(shí)間以及所產(chǎn)生的時(shí)間抖動(dòng)值,計(jì)算出對(duì)應(yīng)服務(wù)在對(duì)應(yīng)的分布式服務(wù)器中的時(shí)間平均值和最大、最小的時(shí)間抖動(dòng)值,從而將客戶端的種類、處理服務(wù)所消耗的時(shí)間平均值、處理服務(wù)所產(chǎn)生的時(shí)間抖動(dòng)值以及分布式服務(wù)器形成所述對(duì)應(yīng)關(guān)系。
所述客戶端的種類由以下參數(shù)構(gòu)成:客戶端的型號(hào)、客戶端的硬件碼、客戶端與分布式注冊(cè)中心通信的接口。其中,客戶端的型號(hào)是指臺(tái)式電腦、移動(dòng)終端等平臺(tái)??蛻舳说挠布a可以是MAC地址。所述接口可以包括接口名稱和接口參數(shù)。在記錄上述對(duì)應(yīng)關(guān)系的時(shí)候,可以采用hash和sha-1算法對(duì)客戶端的種類進(jìn)行計(jì)算出對(duì)應(yīng)UUID值。
所述策略還包括:當(dāng)請(qǐng)求的服務(wù)的發(fā)起量超過預(yù)設(shè)閾值時(shí),根據(jù)每個(gè)服務(wù)在每臺(tái)分布式服務(wù)器所消耗的時(shí)間的關(guān)系,計(jì)算出每臺(tái)服務(wù)器當(dāng)前處理的所有服務(wù)所消耗的總時(shí)間,根據(jù)處理請(qǐng)求的服務(wù)所需的時(shí)間,對(duì)請(qǐng)求的服務(wù)在各分布式服務(wù)器中進(jìn)行快慢任務(wù)的均衡分配,根據(jù)快慢任務(wù)的均衡分配,將請(qǐng)求的服務(wù)加入到對(duì)應(yīng)的分布式服務(wù)器的處理隊(duì)列中。
也就是說,針對(duì)單個(gè)服務(wù)出現(xiàn)訪問量噴井的情況下,根據(jù)分布式注冊(cè)中心已經(jīng)計(jì)算好每個(gè)服務(wù)在每臺(tái)分布式服務(wù)器上的時(shí)間片,當(dāng)請(qǐng)求量達(dá)到一定值時(shí),滿負(fù)荷處理時(shí),自動(dòng)計(jì)算出最優(yōu)排隊(duì)時(shí)間和最優(yōu)排隊(duì)策略。本實(shí)施例的時(shí)間片是指分布式注冊(cè)中心每臺(tái)分布式服務(wù)器執(zhí)行服務(wù)所占用的時(shí)間,即處理完一個(gè)請(qǐng)求的服務(wù)所需要花費(fèi)的響應(yīng)時(shí)間。
其中,每臺(tái)分布式服務(wù)器當(dāng)前的所有服務(wù)所要消耗的總時(shí)間為
單臺(tái)分布式服務(wù)器單個(gè)服務(wù)消耗的時(shí)間為
當(dāng)新增一個(gè)服務(wù)請(qǐng)求時(shí),根據(jù)當(dāng)前請(qǐng)求隊(duì)列中的請(qǐng)求服務(wù)及單服務(wù)的時(shí)間關(guān)系,進(jìn)行隊(duì)列內(nèi)排序(主要是將任務(wù)區(qū)分快慢任務(wù)),根據(jù)當(dāng)前所有分布式服務(wù)器的總體時(shí)間和單個(gè)服務(wù)時(shí)間,進(jìn)行分布式服務(wù)器時(shí)間消耗排序,平均好快慢任務(wù)的分配,達(dá)到分布式服務(wù)器服務(wù)切換的最優(yōu)調(diào)度,在此處通過上述方法可以計(jì)算出分布式服務(wù)器對(duì)于快慢任務(wù)的最大吞吐量。
另外,在進(jìn)行了請(qǐng)求的服務(wù)在各分布式服務(wù)器的隊(duì)列中的順序計(jì)算后,當(dāng)發(fā)現(xiàn)局域網(wǎng)中還存在有可以運(yùn)行服務(wù)的分布式服務(wù)器時(shí),將定義為慢任務(wù)的服務(wù)委派至該分布式服務(wù)器。
再者,當(dāng)請(qǐng)求的服務(wù)為多用戶的并發(fā)服務(wù)請(qǐng)求時(shí),且當(dāng)客戶端的種類為相同時(shí),且并發(fā)時(shí)間小于預(yù)設(shè)時(shí)間時(shí),將請(qǐng)求的服務(wù)進(jìn)行合并處理。所述預(yù)設(shè)時(shí)間可以是100ms。客戶端的種類相同是指經(jīng)過hash和sha-1算法計(jì)算后,得到的UUID值相同。
步驟S4、實(shí)時(shí)生成網(wǎng)絡(luò)拓?fù)鋱D和時(shí)間規(guī)劃圖,所述網(wǎng)絡(luò)拓?fù)鋱D用于顯示所有分布式服務(wù)器處理請(qǐng)求的服務(wù)的狀態(tài),所述時(shí)間規(guī)劃圖用于顯示每一臺(tái)分布式服務(wù)器正在處理的每一個(gè)請(qǐng)求的服務(wù)以及對(duì)應(yīng)的時(shí)間平均值、時(shí)間的最大和最小抖動(dòng)值。
本實(shí)施例還公開了一種服務(wù)器的推薦裝置,其包括以下模塊:
第一啟動(dòng)模塊,用于啟動(dòng)分布式注冊(cè)中心;
第二啟動(dòng)模塊,用于啟動(dòng)與所述分布式注冊(cè)中心對(duì)應(yīng)的多臺(tái)分布式服務(wù)器;
策略推薦模塊,用于通過分布式注冊(cè)中心接收用戶通過客戶端發(fā)起的服務(wù)請(qǐng)求,并根據(jù)預(yù)設(shè)的策略,選擇對(duì)應(yīng)的分布式服務(wù)器處理請(qǐng)求的服務(wù);
顯示模塊,用于實(shí)時(shí)生成網(wǎng)絡(luò)拓?fù)鋱D和時(shí)間規(guī)劃圖,所述網(wǎng)絡(luò)拓?fù)鋱D用于顯示所有分布式服務(wù)器處理請(qǐng)求的服務(wù)的狀態(tài),所述時(shí)間規(guī)劃圖用于顯示每一臺(tái)分布式服務(wù)器正在處理的每一個(gè)請(qǐng)求的服務(wù)以及對(duì)應(yīng)的時(shí)間平均值、時(shí)間的最大和最小抖動(dòng)值。
本發(fā)明具有如下特點(diǎn):
1)對(duì)訪問的服務(wù)次數(shù)和訪問花費(fèi)的時(shí)間進(jìn)行分析,得到最優(yōu)分布式服務(wù)器推薦;
2)智能添加和刪除服務(wù)節(jié)點(diǎn)(根據(jù)分布式服務(wù)器訪問的次數(shù)智能開啟和關(guān)閉);
3)重復(fù)任務(wù)合并處理;
4)分布式服務(wù)節(jié)點(diǎn)展現(xiàn);
5)分布式服務(wù)節(jié)點(diǎn)任務(wù)進(jìn)行情況展現(xiàn);
本發(fā)明的關(guān)鍵點(diǎn)在于根據(jù)每臺(tái)分布式服務(wù)器提供的服務(wù)進(jìn)行服務(wù)完成時(shí)間收集,根據(jù)每種時(shí)間片,通過策略,推薦出最優(yōu)的分布式服務(wù)器,對(duì)滿足合并條件的任務(wù)合并處理統(tǒng)一返回,生成對(duì)應(yīng)的網(wǎng)絡(luò)拓?fù)鋱D和時(shí)間規(guī)劃圖。
對(duì)本領(lǐng)域的技術(shù)人員來說,可根據(jù)以上描述的技術(shù)方案以及構(gòu)思,做出其它各種相應(yīng)的改變以及形變,而所有的這些改變以及形變都應(yīng)該屬于本發(fā)明權(quán)利要求的保護(hù)范圍之內(nèi)。