999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于java多線程的實時數據庫系統

2016-02-06 09:33:42程俊波
網絡安全技術與應用 2016年10期

◆程俊波

(西安石油大學計算機學院 陜西 710065)

基于java多線程的實時數據庫系統

◆程俊波

(西安石油大學計算機學院 陜西 710065)

為了滿足實時數據庫系統中多種操作并發執行的需求,采用了多線程設計模式設計了實時數據庫系統構架,利用java語言中多線程技術特性實現了多種任務的并發處理。多線程技術提高了程序的實時響應能力,改進程序的設計結構,更有效地發揮處理器的功能,減少對系統資源的頻繁調度和切換。同時,增強了實時數據庫系統的并行處理能力,改善了客戶的交互響應時間,提高了實時數據庫系統的整體性能。

多線程;實時數據庫;并發處理;線程池

0 引言

隨著社會和計算機科學的發展,許多企業要求以“及時方式”(即按所要求的時間)處理并管理大量的共享信息。這就要求維護大量的數據和應用的實時性,應用之間及數據與應用之間帶有時間語義的彼此依賴關系。因此,產生了實時數據庫系統[1]。實時數據庫系統需要完成對實時數據的各種操作:如實時數據處理、歷史數據存儲、統計數據處理、報警處理、事件處理、數據服務請求處理等。既需要數據庫技術來支持大量數據的共享,維護其數據的一致性,又需要實時處理技術來支持其任務與數據的定時限制的實現。針對以上多種事件并發處理,多個客戶端并發訪問,實時數據庫系統的并發控制與性能問題成為需要解決的緊迫問題。多線程程序設計是指單個程序中使用多個線程,這些線程在同一時間并發運行,執行不同的任務[2]。用多個線程同時為多個客戶端提供服務是提高服務器并發性能的最常用手段。并且,java線程池技術已經越來越多地被應用到服務器中,在一定程度上緩解了系統的壓力

1 實時數據庫系統的設計

1.1 實時數據庫系統的功能需求

實時數據庫系統由1個主線程和5個線程組組成,它們分別是主控線程(MainThread)、OPC通訊線程組(OPCComThreadGroup)、Dtag計算線程組(DtagCalcThreadGroup)、事件計算線程組(EventCalcThreadGroup)、組播線程組(MultiCastThreadGroup)[3]、處理客戶端請求線程組(RequestProThreadGroup)。

主控線程負責初始化運行時的內存對象;OPC通訊線程組負責采集數據;Dtag計算線程組負責計算Dgroup中Dtag的值;事件計算線程組負責處理事件;組播線程組(MultiCastThreadGroup)負責將組播隊列中的組播包組播給客戶端;處理客戶端請求線程組負責對客戶端的請求進行響應處理。

1.2 實時數據庫系統架構

圖1 實時數據庫系統架構

路徑1:OPC通訊線程組首先建立異步通訊,然后定期輪詢實時數據,發現有數據更新就會復制tag點的實時值和時間戳,并計算報警。接下來,組播線程組從數據區取出數據和報警記錄,最后組播給客戶端。

路徑2:Dtag計算線程組首先比較每個DGroup的周期和當前時間,獲得到期的DGroup并計算Dtag點的值和報警。然后由組播線程組將其組播給客戶端。

路徑3:事件計算線程組首先比較每個Event的周期和當前時間,獲得到期的Event,然后執行Event腳本。

路徑4:處理客戶端請求線程組同步處理客戶端的請求。其中包含請求有7種:客戶端登錄、客戶端注銷、全組播、讀TIDs、寫TIDs、讀取時間范圍的報警記錄、報警確認記錄。

2 實時數據庫系統的實現

2.1 總控線程

主控線程是控制5個線程組的總控制器,它也是管理其他5個線程組的父線程組??偪鼐€程中的最大子線程額度為N,所以5個線程組的總子線程數量的和不能超過N。每個線程組也中各有一個額度(線程組中可以同時活動的最大線程數量),分別用sign1,sign2,...,sign5來表示5個線程組中的子線程額度,即(N >= sign1+sign2+sign3+sign4+sign5)。

主控線程基于各個線程組的歷史吞吐量(在一個整體時間內盡可能多地執行完任務,或者盡可能多地發出請求并響應)、任務隊列大小和任務對象類型,自動增減并發的子線程數量,調整線程池的容量,能夠最大化線程池的吞吐量[4]。吞吐量(TPS)是在系統運行穩定后,主控線程計算單位時間內各個線程組的完成的任務數,單位:個數/s。主控線程動態的根據時間段內各個線程組的吞吐量來調整每個線程組的額度大小。

2.2 線程組內架構的實現

實時數據庫系統服務器應用程序中經常出現單個任務處理的時間很短而請求的數目卻是巨大的。每當一個請求到達就創建一個新線程,然后在新線程中為請求服務。那么為每個請求創建一個新線程的開銷很大,在一個 JVM 里創建太多的線程可能會導致系統由于過度消耗內存而用完內存或“切換過度”。

線程池恰恰能夠解決以上問題,父線程用于創建并管理線程池,任務隊列用于存放沒有處理的任務,提供一種緩沖機制[5]。線程池在還沒有任務到來之前,預先創建一定數量的子線程,放入空閑隊列中。這些線程都是處于睡眠(Sleep)狀態,不消耗CPU,但占用較小的內存空間。

外部因素觸發產生任務,任務的創建通過new操作,動態的創建具體的任務對象,然后添加任務對象到任務隊列中,隊列頭head+1,任務隊列可以為無限大。同時,外部因素喚醒了父線程,父線程便會分配任務給一個空閑子線程,即啟動空閑子線程,把任務傳入此線程中運行,進行處理,任務隊列的頭head-1。子線程獲取到任務后,信號量sign-1。子線程執行完任務后信號量sign+1。當預先創建的線程都處于運行(Run)狀態,即預制線程不夠,線程池可以自由創建一定數量的新線程,用于處理更多的請求,但是總的子線程數不能超過線程組的額度(sign)。當系統比較空閑時,大部分線程都一直處于掛起(Suspend)狀態,線程池自動銷毀一部分線程,回收系統資源[6]。

2.3 線程組內調度算法

父線程首先初始化線程運行時的內存對象,然后處于等待狀態。當有外部因素或者其他子線程完成任務后,會喚醒父線程,父線程在分配任務給子線程之前,要檢查線程組的額度是否為0(if sign==0),如果額度不為0,則分配任務給子線程,否則,等待有空閑線程后才能分配任務,然后自己掛起,等待再次被喚醒。子線程被喚醒之后執行任務,執行完任務后喚醒其他組的父線程并掛起,等待下次喚醒。

父線程可以為子線程動態的設置優先級,保證緊急任務盡早處理完成。父線程在靜態優先級的基礎上,根據線程組的吞吐量以及某些特定條件動態的提高或者降低子線程的優先級。從而使得高優先級的子線程能夠優先得到處理器的執行[7]。

2.4 線程間的協作

OPCServer與實時數據庫系統建立異步通訊,當有實時數據更新時,OPCServer會喚醒OPC通訊線程組對數據進行及時處理,OPC通訊線程對數據進行處理之后喚醒組播線程組,同時也喚醒Dtag計算線程組,Dtag計算線程組對DGroup中的派生點進行計算后將數值給組播線程組,最后由組播線程組通過UDP協議將數據和報警記錄組播給客戶端[8]。

數據區是共享資源區,需要線程同步對數據區進行保護,Event計算線程組會定時輪詢事件,如果數據區的數據滿足事件條件表達式,就會喚醒Event計算線程組來處理事件,事件一般是往硬件物理地址讀寫數據,此時會觸發硬件物理驅動。

客戶端通過TCP協議與服務器進行互動,服務器會根據客戶端的不同請求返回不同的響應[9]。

3 結論

基于java多線程編程技術實現了實時數據庫系統,解決處理器單元內多個線程執行的問題,顯著減少處理器單元的閑置時間,增加處理器單元的吞吐能力[10]。其中,java線程池的并發執行多個任務而對線程高效的并發控制策略有效的提高了實時數據庫系統的并行處理能力,改善了交互響應時間,提高了實時數據庫系統的整體性能。接下來,要致力于整個系統中線程間的同步研究,設計出完善的同步機制。

[1]鄭阿奇,劉啟芬,顧韻華.SQL Server 2000實用教程[M].北京:電子工業出版,2002.

[2]閃四清.SQL Server 2000簡明教程[M].北京:清華大學出版社.2003.

[3]文家焱,施平安.數據庫系統原理與應用[M].北京:冶金工業出版社,2002.

[4]高榮芳,張曉濱,趙安科.數據庫原理[M] 西安電子科技大學出版社,2003.

[5]李國彬,趙麗娟,沈淑清.SQL Server 2000應用基礎與實訓教程[M].電子科技大學出版社,2004.

而在login.js文件中創建顯示驗證碼和刷新驗證碼的方法用于后期在網頁模板中的js函數調用。

2.2 在網頁模板中加載PHP文件輸出驗證碼

要在網頁上顯示驗證碼只需要在頁面加載過程中調用上述產生的兩個js函數即可,在頁面載入后顯示隨機驗證碼,點擊“換一張”鏈接可以實現驗證碼的刷新顯示。實現效果如圖2所示。

圖2 效果圖

網站的安全問題是網民們考慮的首要問題,因此網站應該要向用戶提供一個安全的環境,使用驗證碼技術能有效的避免網站上常見的“身份欺騙”現象,使網站用戶能享有一個公平、安全的網絡環境。因此,網站設計者在設計網站時要充分考慮到安全問題,采用多種技術提高網站的安全性,同時,用戶也要提高自己的安全意識,消除安全隱患。

參考文獻:

[1]龔莎.網頁驗證碼技術綜述[J].信息與電腦,2014.

[2]歐志敏.關于驗證碼原理與應用的探討[J].華南金融電腦,2007.

[3]明日科技.PHP從入門到精通[M].北京:清華大學出版社,2012.

[4]宋尚平,李興保.PHP模板引擎Smarty的安裝配置及應用實現[J].現代教育技術,2007.

主站蜘蛛池模板: 又爽又大又光又色的午夜视频| 国产精品欧美日本韩免费一区二区三区不卡| 波多野结衣亚洲一区| 日本精品视频| 国产乱人乱偷精品视频a人人澡| 亚洲综合片| 4虎影视国产在线观看精品| 丝袜国产一区| 国产精品熟女亚洲AV麻豆| a级毛片免费在线观看| 亚洲欧美另类专区| 欧美日韩综合网| 天天摸天天操免费播放小视频| 天天色天天综合| 国产在线视频自拍| 国产老女人精品免费视频| 毛片基地美国正在播放亚洲 | 亚洲国产无码有码| 亚洲Aⅴ无码专区在线观看q| 青青草原偷拍视频| 91青青视频| 亚洲成A人V欧美综合| 日韩无码真实干出血视频| 国产精品污污在线观看网站| 91成人免费观看在线观看| 亚洲区视频在线观看| 日韩一区二区三免费高清| 91亚洲精品国产自在现线| 97国产一区二区精品久久呦| 国产日本欧美亚洲精品视| 欧美成在线视频| 五月丁香在线视频| 国产剧情国内精品原创| 午夜天堂视频| 一级成人a做片免费| 亚洲AⅤ波多系列中文字幕 | 亚洲综合狠狠| 欧美一级夜夜爽www| 亚洲欧美另类中文字幕| 精品无码人妻一区二区| 亚洲日韩精品欧美中文字幕| 欧美日韩国产在线观看一区二区三区 | 午夜激情福利视频| 亚洲一级毛片在线观| 日韩福利视频导航| 永久在线播放| 毛片网站观看| 日韩视频福利| 色欲综合久久中文字幕网| 欧美日韩国产系列在线观看| 91网址在线播放| 毛片卡一卡二| 免费高清毛片| 欧美另类一区| 91在线一9|永久视频在线| 国内精品久久久久久久久久影视 | 色噜噜狠狠狠综合曰曰曰| AV不卡国产在线观看| 青青草国产免费国产| 国产精品片在线观看手机版| 成人午夜网址| 国产日韩欧美视频| 国产精鲁鲁网在线视频| 国产91av在线| 青草视频久久| 伊人久久大香线蕉影院| 国产人成在线视频| 成·人免费午夜无码视频在线观看 | 很黄的网站在线观看| 天堂中文在线资源| 喷潮白浆直流在线播放| 国产国产人免费视频成18| 伊人激情综合网| 国产va在线观看免费| 97超碰精品成人国产| 日本福利视频网站| 狠狠干综合| 色妞www精品视频一级下载| 四虎成人在线视频| 成人日韩欧美| 久99久热只有精品国产15| 成人字幕网视频在线观看|