亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于國產化環(huán)境的線程池模型研究與實現(xiàn)

        2020-01-07 02:45:02王韓波孫文俊
        網絡安全技術與應用 2020年1期
        關鍵詞:設計模式空閑國產化

        ◆王韓波 孫文俊 林 鵬

        基于國產化環(huán)境的線程池模型研究與實現(xiàn)

        ◆王韓波1孫文俊1林 鵬2

        (1.中國電子科技集團公司第二十八研究所 江蘇 210007;2.92020部隊 山東 266000)

        為滿足面向服務化和大數(shù)據(jù)的大型企業(yè)級信息系統(tǒng)的高并發(fā)、高吞吐、安全性需求,也為適應新形勢下國防網絡信息系統(tǒng)逐步向國產化自主平臺遷移的行業(yè)發(fā)展趨勢,本文通過對常用線程池模型的比較研究,提出了固定無優(yōu)先級領導者/跟隨者線程池和動態(tài)有優(yōu)先級半同步/半異步線程池模型,并提供基于銀河麒麟操作系統(tǒng)+飛騰CPU的國產自主環(huán)境的實現(xiàn)方案。

        線程池模型;國產化環(huán)境;領導者/跟隨者;半同步/半異步

        多線程技術主要分為兩種:在需要時進行創(chuàng)建的經典多線程處理方式和基于預創(chuàng)建的線程池處理方式[1]。經典多線程是一種按需創(chuàng)建的機制,為每個請求創(chuàng)建獨立的線程進行處理,邏輯簡單且可靠性高,適用于并發(fā)量少且不密集的應用場景。一旦系統(tǒng)出現(xiàn)并發(fā)請求峰值時,大量資源的創(chuàng)建和銷毀開銷將嚴重影響系統(tǒng)響應能力。因此在高并發(fā)服務端使用場景下,基于預創(chuàng)建的線程池解決方案更為常見。

        為滿足面向服務化和大數(shù)據(jù)的大型企業(yè)級業(yè)務信息系統(tǒng)的高并發(fā)、高吞吐需求,也為適應國防信息安全領域逐步向國產化軟硬件平臺遷移的行業(yè)發(fā)展趨勢,有必要基于國產化環(huán)境研究通用線程池技術,探索其國產化平臺的實現(xiàn)方案,為未來國產化環(huán)境下如何提高系統(tǒng)效率尋找一種切實有效的解決方法。

        1 線程池模型

        對線程池的研究主要從三個方面進行:一是線程池的大小設定;二是線程池的優(yōu)先級設定;三是線程池的設計模式。線程池大小設定影響線程池對系統(tǒng)資源的需求,按照線程池內線程數(shù)量能否增減,可將線程池劃分為固定線程池和動態(tài)線程池[2]。線程池優(yōu)先級設定通常有兩種類型,一是線程池中所有線程的優(yōu)先級別相同,即無通道模式;另一種是線程池中的線程有一定的優(yōu)先級別,即有通道的模式,線程池中不同的優(yōu)先級別對應著線程不同的數(shù)據(jù)存儲方式,同時也影響者線程池大小[2]。線程池的常見設計模式則主要包括:半同步/半異步(Half-Sync/Half-Async)和領導者/跟隨者(Leader/Follower)兩種。文獻[3]深入分析了并發(fā)用戶數(shù)、請求處理時間和線程池中線程數(shù)對Half-Sync/Half-Async和Leader/Follower這兩種線程池設計模式對系統(tǒng)性能的影響,并在不同場景下對兩種設計模式的線程池性能表現(xiàn)做了比較。

        通過分析常見大型業(yè)務信息系統(tǒng)多線程并發(fā)需求的特點,文章選擇不同的線程池設計策略組合,提出以下兩種通用線程池模型:(1)固定無優(yōu)先級領導者/跟隨者線程池(本文簡稱簡單LF線程池);(2)動態(tài)有優(yōu)先級半同步/半異步線程池(本文簡稱動態(tài)HH線程池)。

        1.1 簡單LF線程池模型

        為了在簡單多任務并發(fā)處理的場景下,更好地利用多線程的并發(fā)優(yōu)勢,降低程序的復雜度,提高產品的穩(wěn)定性,提出簡單LF線程池模型,如圖1所示。

        簡單LF線程池的簡單主要指對線程池內線程數(shù)量做固定設計,線程間不區(qū)分優(yōu)先級按照先到先執(zhí)行原則進行調度作業(yè)。LF是指線程池采用領導者/跟隨者(Leader/Follower)的設計模式,由領導者(leader)線程負責線程池請求事件監(jiān)聽和消息分離,并從跟隨者(follower)中遴選新的領導者線程,然后自己以執(zhí)行線程(processor)的身份去處理相關事件,直到本次請求處理完畢后恢復為follower線程并等待重新被遴選為leader線程。其中l(wèi)eader線程的挑選方式,可根據(jù)實際情況決定,通常采用先進先出、隨機指定等簡單原則。

        圖1 簡單LF線程池模型

        簡單LF線程池模型設計簡單、成熟度高、運行穩(wěn)定,但在大量負載動態(tài)變化或線程任務存在不同實時性要求的情況下并不適用。由于空閑線程不會被銷毀,在用戶的并發(fā)需求較低時,線程池仍維持著為正常運行設計的線程數(shù),將會造成大量的系統(tǒng)資源浪費;而當用戶請求峰值出現(xiàn)時,線程池無法提供更多的工作線程,使得用戶請求大量積壓甚至超時失效,從而造成系統(tǒng)響應能力的進一步惡化。此外線程池中的線程優(yōu)先級全部相同,高負載環(huán)境下大量普通非實時任務會搶占過多的處理器資源,實時任務卻無法得到及時處理。

        1.2 動態(tài)HH線程池模型

        簡單LF線程池模型由于缺乏靈活性和優(yōu)先級考慮,難以滿足強實時數(shù)據(jù)處理和復雜多任務調度的實際要求,如實時情報處理軟件和高并發(fā)服務網關等。為滿足高并發(fā)場景下的使用需求,在常規(guī)線程池的基礎上對線程池的線程數(shù)量、優(yōu)先級、調度機制等進行設計優(yōu)化,提出動態(tài)HH線程池模型,如圖2所示。

        圖2 動態(tài)HH線程池模型

        動態(tài)HH線程池模型的動態(tài)性體現(xiàn)在兩個方面:(1)支持線程數(shù)量的動態(tài)調整,通過初始化線程池為一個預先設定的固定大小,再根據(jù)實際需求動態(tài)增減臨時線程的數(shù)量,提供動態(tài)伸縮的線程池并發(fā)處理能力。(2)支持線程優(yōu)先級的動態(tài)設定,通過等待處理的任務優(yōu)先級動態(tài)指定處理線程的優(yōu)先級,支持實時任務獲得更多處理能力。

        動態(tài)HH線程池模型參考CORBA標準(簡稱RT-CORBA),RT-CORBA提供了半同步/半異步(Half-Sync/Half-Async)線程池的設計模式。Half-Sync/Half-Async將同步模式與異步模式相結合,異步層完成數(shù)據(jù)的I/O操作,提高系統(tǒng)整體I/O效率,同步層進行業(yè)務的請求處理,降低線程池復雜度,通過優(yōu)先級消息隊列來完成數(shù)據(jù)交互。

        2 線程池實現(xiàn)

        目前常見的國產化基礎軟件環(huán)境包括以中標、銀河麒麟操作系統(tǒng)為代表的國產操作系統(tǒng),以武漢達夢、人大金倉為代表的國產數(shù)據(jù)庫管理系統(tǒng),國產化基礎硬件環(huán)境包括基于龍芯、飛騰CPU解決方案的各類終端和服務器設備[4]。本文僅以“銀河麒麟操作系統(tǒng)+飛騰CPU”的國產化解決方案為例,討論簡單LF線程池模型和動態(tài)HH線程池模型的實現(xiàn)方案。但實際上以指揮信息系統(tǒng)為例,今后將會相當長的一段時期內,同時在Windows、Unix、銀河麒麟等多種操作系統(tǒng)上運行。盡管各操作系統(tǒng)的實現(xiàn)方案會存在種種細節(jié)方面的不同(如:pthread和solaris thread,epoll、kqueue和iocp等),但是簡單LF線程池模型和動態(tài)HH線程池模型的運作機理不會改變。

        2.1 簡單LF線程池實現(xiàn)

        簡單LF線程池使用Reactor設計模式來實現(xiàn)事件的多路分離,很多高性能網絡應用如Netty、Redis均在使用類似的IO方式。其中事件源和分離機制采用銀河麒麟操作系統(tǒng)中最常用的fd_set 和select 系統(tǒng)調用。簡單LF線程池模型的實現(xiàn)類圖如圖3 所示。

        簡單LF線程池模型將請求的I/O處理部分封裝為統(tǒng)一的事件回調接口,任意時刻只有l(wèi)eader線程負責響應I/O句柄事件,不再是一對一的經典I/O響應機制,其他follower線程將處于靜默等待狀態(tài)。線程間使用信號量作為同步機制,所有follower 線程阻塞在同一個LF選主信號量上等待,直到當前l(fā)eader線程釋放出下一輪選主通知。

        2.2 動態(tài)HH線程池實現(xiàn)

        動態(tài)HH線程池的異步層負責I/O層事件監(jiān)聽,使用Reactor 模式實現(xiàn)異步層事件派分,在完成消息提取后放入到線程池消息隊列等待處理??紤]到銀河麒麟操作系統(tǒng)是基于Linux內核實現(xiàn),選用更高效的epoll系統(tǒng)調用實現(xiàn)高效的事件通知機制,使用fd_set 數(shù)據(jù)結構來標識事件源。線程池的同步層和消息隊列使用主動對象(Active-Object)設計模式來實現(xiàn),主動對象模式抽象并發(fā)任務為邏輯請求對象,通過異步編程的方法調用(Method Invocation)和方法執(zhí)行(Method Execution)的分離設計,實現(xiàn)動態(tài)HH線程池請求提取和請求處理在不同的線程中執(zhí)行,最終完成同步層和異步層的分離。動態(tài)HH線程池的實現(xiàn)類圖如圖4所示。

        常見的動態(tài)線程池大小調整方案有兩種:一是閾值觸發(fā)式調整,二是公式預測式調整。閾值觸發(fā)式指按照預先設定的線程池參數(shù)來控制線程池的擴展和收縮行為,簡單易實現(xiàn)且維護性開銷小,但線程池參數(shù)需要精確地校正,否則會導致系統(tǒng)性能下降;公式預測式指通過經驗公式來預測未來線程池的最優(yōu)大小,往往更能反映業(yè)務系統(tǒng)運行中資源消耗的真實情況,并根據(jù)統(tǒng)計學原理快速調整線程池規(guī)模,但通用性較差,需要較大的資源狀態(tài)采集、統(tǒng)計和預測動作的開銷。

        圖3 簡單LF線程池實現(xiàn)類圖

        圖4 動態(tài)HH線程池實現(xiàn)類圖

        為保證動態(tài)HH線程池在不同使用場景下的適用性,文中采用了第一種調整方案,并支持閾值參數(shù)的可調整。假設線程池最大線程數(shù)量為T_MAX,最小為T_MIN,單次可調整線程數(shù)為T_NUM,最小空閑數(shù)量為T_IMIN,最大為T_IMAX。動態(tài)HH線程池的線程池大小動態(tài)調整策略如下:

        (1)首先建立線程池,創(chuàng)建T_MIN個初始線程;

        (2)當線程池中空閑線程數(shù)低于T_IMIN時,觸發(fā)線程池動態(tài)擴張機制,創(chuàng)建并添加T_NUM個空閑線程;

        (3)當線程池中空閑線程數(shù)高于T_IMAX時,觸發(fā)線程池動態(tài)收縮機制,回收并刪除T_NUM個空閑線程;

        (4)線程池動態(tài)調整過程中,保證線程池中線程數(shù)量不超過T_MAX也不低于T_MIN;

        (5)若線程池已達最大限制且無空閑線程可用時,任務請求將被存入緩沖隊列,等待空閑線程出現(xiàn)并處理。

        以上參數(shù)的合理設置可以保證任意時刻系統(tǒng)均具有一定的并發(fā)請求響應能力,緩沖區(qū)的存在也在一定程度上降低了動態(tài)調整或瞬間峰值過程中任務丟失的可能性。

        3 結束語

        為滿足面向服務化和大數(shù)據(jù)的大型企業(yè)級信息系統(tǒng)的高并發(fā)、高吞吐需求,以及國產化發(fā)展趨勢,本文提出一組適用于常見的業(yè)務信息系統(tǒng)需求的線程池模型,并提供了基于銀河麒麟操作系統(tǒng)+飛騰CPU國產化自主環(huán)境的實現(xiàn)方案。通過實際的項目試用過程中發(fā)現(xiàn),簡單LF線程池和動態(tài)HH線程池能夠很好解決常見的信息系統(tǒng)并發(fā)需求。后續(xù)在此研究基礎上封裝跨平臺的多線程開發(fā)基礎支撐庫,以達到減少開發(fā)人員日后遷移工作量、提高代碼復用率、提升程序魯棒性和降低軟件維護成本的目的。

        [1]唐富強,于鴻洋,張萍.Linux下通用線程池的改進與實現(xiàn)[J].計算機工程與應用,2012.

        [2]聶蘭蘭.考慮外界影響因子的動態(tài)線程池優(yōu)化設計與實現(xiàn)[D].武漢:華中科技大學,2014.

        [3]李剛,金蓓弘.兩種線程池的實現(xiàn)和性能評價[J].計算機工程與設計,2007.

        [4]陳奡,王超,張永等.國產化Web信息系統(tǒng)性能評估模型與優(yōu)化方法[J].指揮信息系統(tǒng)與技術,2015.

        [5]趙海,李志蜀,韓學為等.線程池的優(yōu)化設計[J].四川大學學報(自然科學版),2005.

        [6]劉云生,王剛,王衛(wèi)國.實時線程池性能研究與動態(tài)優(yōu)化[J].計算機工程與科學,2007.

        [7]謝宙宇,臧飛.基于國產軟硬件的信息系統(tǒng)性能優(yōu)化技術[J].指揮信息系統(tǒng)與技術,2014.

        猜你喜歡
        設計模式空閑國產化
        仿生設計模式的創(chuàng)新應用探索
        玩具世界(2023年6期)2024-01-29 12:14:36
        特大型橋梁供電系統(tǒng)國產化改造探討
        恩賜
        詩選刊(2023年7期)2023-07-21 07:03:38
        元器件國產化推進工作實踐探索
        “1+1”作業(yè)設計模式的實踐探索
        ASM-600油站換熱器的國產化改進
        能源工程(2021年3期)2021-08-05 07:26:14
        基于國產化ITCS的衛(wèi)星導航仿真研究
        “鳥”字謎
        小讀者之友(2019年9期)2019-09-10 07:22:44
        交通機電工程設計模式創(chuàng)新探討
        彪悍的“寵”生,不需要解釋
        日本精品αv中文字幕| 久久精品国产9久久综合| 五月激情综合婷婷六月久久| 国模丽丽啪啪一区二区| 午夜一级韩国欧美日本国产| 国产精品白浆免费观看| 99久久精品一区二区国产| 又色又爽又黄高潮的免费视频| 国产精品美女久久久浪潮av| 极品av在线播放| 亚洲自拍偷拍一区二区三区| 国产成人无码综合亚洲日韩| 国产精品香蕉在线观看| 欧美一级鲁丝片免费一区| 一区二区三区视频亚洲| 亚洲国产精品成人综合色| 国产91中文| 日本在线一区二区三区观看| 国产日产韩国av在线| 欧美极品jizzhd欧美| 亚洲 日韩 在线精品| 亚洲国产大胸一区二区三区| 秋霞在线视频| 丰满女人又爽又紧又丰满| 4hu44四虎www在线影院麻豆 | 国产福利视频在线观看| 国产精在线| 青春草在线观看免费视频| 日本在线精品一区二区三区| 国产真实夫妇视频| 99精品欧美一区二区三区美图| 亚洲综合中文日韩字幕| 人人人妻人人澡人人爽欧美一区 | 极品新娘高清在线观看| 久久99亚洲精品久久久久| 国产肉丝袜在线观看| 无码成人AV在线一区二区| 一区二区三区日韩亚洲中文视频| 中文字幕天天躁日日躁狠狠躁免费| 国产AⅤ无码久久丝袜美腿| 亚洲一区二区三区在线高清中文|