望的移動高清用戶體驗??膳c支持技術(shù)的 IT基礎(chǔ)架構(gòu)協(xié)同運(yùn)行,通過任何設(shè)備為員工提供豐富、一致而安全的內(nèi)容接入體驗,而不增 加 IT部門的管理復(fù)雜性。
[0052] 在虛擬化桌面的實現(xiàn)過程中,內(nèi)部需要使用大量的線程處理請求,而單次請求響 應(yīng)時間通常比較短,基于操作系統(tǒng)的本地調(diào)用方式大量的創(chuàng)建和銷毀線程本身會成為系統(tǒng) 的一個性能瓶頸和資源浪費(fèi)。若使用線程池技術(shù)可以實現(xiàn)工作線程的復(fù)用,即一個工作線 程創(chuàng)建和銷毀的生命周期期間內(nèi)可以執(zhí)行處理多個任務(wù),從而總體上降低線程創(chuàng)建和銷毀 的頻率和時間,提升了系統(tǒng)性能。本發(fā)明通過使用有界阻塞數(shù)組隊列的線程池技術(shù)進(jìn)行虛 擬化桌面的實現(xiàn),從微觀方面優(yōu)化請求調(diào)度,從而有效的降低服務(wù)器負(fù)載壓力,提升服務(wù)性 能,提升請求響應(yīng)效率,從而改善用戶體驗。
[0053] 如圖1所示為本發(fā)明基于有界阻塞數(shù)組隊列的線程池調(diào)度模型,基于該模型的虛 擬桌面實現(xiàn)方法是使用了 HashSet來存儲工作者workers,通過可重入鎖ReentrantLock對 其進(jìn)行并發(fā)保護(hù)。每個worker都是一個Runnable接口。使用了實現(xiàn)接口 BlockingQueue 的阻塞隊列來存儲待處理工作Job,并把隊列作為構(gòu)造函數(shù)參數(shù),從而實現(xiàn)業(yè)務(wù)可以靈活 的擴(kuò)展定制線程池的隊列。業(yè)務(wù)使用JDK自身的有界阻塞數(shù)組隊列Synchronous Array Blocking Queue 來實現(xiàn)。
[0054] 具體實現(xiàn)是基于多個構(gòu)造參數(shù)實現(xiàn)靈活初始化,幾個核心參數(shù)如下: CorePoolSize :核心工作者數(shù)。MaximumPoolSize :最大工作者數(shù)。keepAliveTime :超過核 心工作者數(shù)時閑置工作者的存活時間。WorkQueue :待處理Job隊列,BlockingQueue接口。 默認(rèn)初始化后不啟動工作者,等待有請求時才啟動??梢酝ㄟ^調(diào)用線程池接口提前啟動核 心工作數(shù)個工作者線程,也可以啟動業(yè)務(wù)期望的多個工作者線程。
[0055] (1)工作者Workers數(shù)量低于核心工作者數(shù)CorePoolSize時會優(yōu)先創(chuàng)建一個工作 者Worker處理Job,處理成功則返回。
[0056] (2)工作者Workers數(shù)量高于核心工作者數(shù)時會優(yōu)先把Job放入到待處理隊列,放 入隊列成功時處理結(jié)束。
[0057] (3)步驟2中入隊失敗會識別工作者數(shù)是否還小于最大工作者數(shù) MaximumPoolSize,小于的話也會新創(chuàng)建一個工作者Worker處理Job。
[0058] 具體實現(xiàn)如下步驟:
[0059] 首先定義阻塞隊列,創(chuàng)建鏈表安全線程隊列。
[0060] Public class Blocking queue | Private LinkedList elements = new LinkedListO; Privater boolean closed = false; Public class closed extends RuntimeException { Private Ciosed(); Superi^try to sccess closed Bl〇cking_queueM); } :}
[0061] 其次,將一個工作任務(wù)入隊列。
[0062] Public synchronized final void enqueue(Object new_element) throws Blocking-queue.Closed { If (closed) throws new Qoscd(); Elements.addLast(new_elernent); NotifyO; :}
[0063] 第三、將一個元素出隊,如果隊列為空,則阻塞,直到有對象入隊。
[0064] Public sychronized final Object dequeue() Th tows TnterruptedException, Blocking_queue.Ciosed{ Tryf While( e!emeiits.size() 0 ) { Wait(); If(closed) throw new Closed():, Return elements.reinoveFirst(); I catc h(N o S ucli FI ementF ?< cepii on e) { TtocJ寶.iiew.E_f("In.ternal enOr(com,wangx'u,asyiich'.:Bl0_ing_quewe)");: } } Public sychronized final boolean is emj3ty(){ Return elements.size{) >0; Piiblic synchronized void ci〇sedQ{ Closed = true; .notify Al 1(); }
[0065] 在實際的應(yīng)用中,線程池的啟動時的各項參數(shù)由指定的配置文件config. xml讀 入,包括線程池中核心線程數(shù)的大小,最大線程數(shù)的大小,空閑線程生命周期等,面對不同 的應(yīng)用,需要對線程池做出相應(yīng)的改進(jìn)、擴(kuò)展,使得線程池的應(yīng)用情況能夠更好的滿足系統(tǒng) 的實際需求。
[0066] 如圖2所示為本發(fā)明的一種虛擬桌面系統(tǒng)部署架構(gòu)圖,該系統(tǒng)包括:虛擬化服務(wù) 器模塊、域控管理模塊、虛擬桌面管理模塊、虛擬桌面模塊、控制中心模塊、PC瀏覽器虛擬桌 面客戶端模塊。
[0067] 虛擬化服務(wù)器模塊,提供物理服務(wù)器hypervisor層服務(wù)。
[0068] 域控管理模塊,提供權(quán)限管理,賬號管理服務(wù)。
[0069] 虛擬桌面管理模塊,提供對虛擬機(jī)和用戶之間對應(yīng)管理,以及桌面策略管理等。
[0070] 虛擬桌面模塊,提供虛擬機(jī)的調(diào)度管理。
[0071] 控制中心模塊,提供虛擬化資源池管理。
[0072] PC瀏覽器虛擬桌面客戶端模塊,提供客戶連接服務(wù)。
[0073] 以上對本發(fā)明實施例所提供的一種虛擬桌面的實現(xiàn)方法及系統(tǒng)進(jìn)行了詳細(xì)介紹, 本文中應(yīng)用了具體個例對本發(fā)明的原理及實施方式進(jìn)行了闡述,以上實施例的說明只是用 于幫助理解本發(fā)明的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的 思想,在【具體實施方式】及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為 對本發(fā)明的限制。
【主權(quán)項】
1. 一種虛擬桌面的實現(xiàn)方法,其特征在于,該方法是基于有界阻塞數(shù)組隊列的線程池 進(jìn)行虛擬桌面的實現(xiàn),其流程如下:構(gòu)建域控管理,構(gòu)建虛擬化服務(wù)器資源池,構(gòu)建資源池 管理中心,構(gòu)建虛擬桌面管理系統(tǒng),構(gòu)建虛擬機(jī)桌面VDI,通過客戶端連接VDI;在上述虛 擬桌面的實現(xiàn)過程中,還需要線程處理請求,使用了HashSet來存儲工作者workers,通過 可重入鎖ReentrantLock對其進(jìn)行并發(fā)保護(hù),每個worker都是一個Runnable接口,使用 了實現(xiàn)接口BlockingQueue的阻塞隊列來存儲待處理工作Job,并把隊列作為構(gòu)造函數(shù)參 數(shù),從而實現(xiàn)業(yè)務(wù)靈活的擴(kuò)展定制線程池的隊列,業(yè)務(wù)使用JDK自身的有界阻塞數(shù)組隊列 SynchronousArrayBlockingQueue來實現(xiàn);通過有界阻塞數(shù)組隊列的線程池和各個構(gòu)建 流程相結(jié)合實現(xiàn)虛擬桌面。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法的具體實現(xiàn)是基于多個構(gòu)造參 數(shù)實現(xiàn)靈活初始化,核心參數(shù)如下:CorePoolSize,核心工作者數(shù);MaximumPoolSize,最大 工作者數(shù);ke印AliveTime,超過核心工作者數(shù)時閑置工作者的存活時間;WorkQueue,待處 理Job隊列,BlockingQueue接口;默認(rèn)初始化后不啟動工作者,等待有請求時才啟動;通過 調(diào)用線程池接口提前啟動核心工作數(shù)個工作者線程,或啟動業(yè)務(wù)期望的多個工作者線程。3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,工作者Workers數(shù)量低于核心工作者 數(shù)CorePoolSize時會優(yōu)先創(chuàng)建一個工作者Worker處理Job,處理成功則返回;工作者 Workers數(shù)量高于核心工作者數(shù)時會優(yōu)先把Job放入到待處理隊列,放入隊列成功時處理 結(jié)束;入隊失敗會識別工作者數(shù)是否還小于最大工作者數(shù)MaximumPoolSize,小于的話也 會新創(chuàng)建一個工作者Worker處理Job。4. 根據(jù)權(quán)利要求1或2或3所述的方法,其特征在于,線程池啟動時的各項參數(shù)由指定 的配置文件config.xml讀入,包括線程池中核心線程數(shù)的大小,最大線程數(shù)的大小,空閑 線程生命周期,面對不同的應(yīng)用,線程池做出相應(yīng)的改進(jìn)、擴(kuò)展,使得線程池的應(yīng)用情況能 夠滿足系統(tǒng)的實際需求。5. -種虛擬桌面系統(tǒng),其特征在于,該系統(tǒng)包括:虛擬化服務(wù)器模塊、域控管理模塊、 虛擬桌面管理模塊、虛擬桌面模塊、控制中心模塊、PC瀏覽器虛擬桌面客戶端模塊; 虛擬化服務(wù)器模塊,提供物理服務(wù)器hypervisor層服務(wù); 域控管理模塊,提供權(quán)限管理,賬號管理服務(wù); 虛擬桌面管理模塊,提供對虛擬機(jī)和用戶之間對應(yīng)管理,以及桌面策略管理等; 虛擬桌面模塊,提供虛擬機(jī)的調(diào)度管理; 控制中心模塊,提供虛擬化資源池管理; PC瀏覽器虛擬桌面客戶端模塊,提供客戶連接服務(wù)。
【專利摘要】本發(fā)明公開了一種虛擬桌面的實現(xiàn)方法,該方法在虛擬桌面的實現(xiàn)過程中使用了HashSet來存儲工作者workers,通過可重入鎖ReentrantLock對其進(jìn)行并發(fā)保護(hù),每個worker都是一個Runnable接口,使用了實現(xiàn)接口BlockingQueue的阻塞隊列來存儲待處理工作Job,并把隊列作為構(gòu)造函數(shù)參數(shù),從而實現(xiàn)業(yè)務(wù)可以靈活的擴(kuò)展定制線程池的隊列,從而實現(xiàn)了基于有界阻塞數(shù)組隊列虛擬桌面的。業(yè)務(wù)使用JDK自身的有界阻塞數(shù)組隊列Synchronous?Array?Blocking?Queue來實現(xiàn)。通過本發(fā)明提高虛擬桌面部署分發(fā)效率,優(yōu)化請求調(diào)度,從而有效的降低服務(wù)器負(fù)載壓力,提升服務(wù)性能,提升請求響應(yīng)效率,從而改善用戶體驗。
【IPC分類】H04L29/08
【公開號】CN105208123
【申請?zhí)枴緾N201510621809
【發(fā)明人】吳傳武, 陳東明, 王旭
【申請人】廣東億迅科技有限公司
【公開日】2015年12月30日
【申請日】2015年9月24日