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

        ?

        計算密集型大流量數(shù)據(jù)的接力計算與動態(tài)分流處理

        2021-09-18 06:22:16包秋蘭廖雪花朱洲森
        計算機應(yīng)用 2021年9期
        關(guān)鍵詞:服務(wù)

        廖 佳,陳 揚,包秋蘭,廖雪花,朱洲森*

        (1.四川師范大學(xué)物理與電子工程學(xué)院,成都 610101;2.四川師范大學(xué)計算機科學(xué)學(xué)院,成都 610101)

        (*通信作者電子郵箱992827658@qq.com)

        0 引言

        隨著社會的數(shù)字化轉(zhuǎn)型、互聯(lián)網(wǎng)的蓬勃發(fā)展以及國民經(jīng)濟的快速崛起,世界各個領(lǐng)域的數(shù)據(jù)呈爆炸式增長,大流量數(shù)據(jù)的處理問題引起了世界各國專家的廣泛關(guān)注[1-2]。數(shù)據(jù)作為信息的載體,已經(jīng)成為包括互聯(lián)網(wǎng)經(jīng)濟、交通物流和社會生活等各個領(lǐng)域中最核心的資源[3]。在這些領(lǐng)域中,高效的計算能力是必不可少的條件之一。

        我國在大數(shù)據(jù)計算應(yīng)用領(lǐng)域發(fā)展迅速,主要集中在I/O密集型[4]和計算密集型[5]。目前I/O 密集型數(shù)據(jù)處理在我國應(yīng)用領(lǐng)域先進而成熟,典型應(yīng)用場景如春運期間搶購火車票、購物網(wǎng)站的“雙十一”搶購商品、電商平臺的秒殺搶購等。對于這些I/O 密集型應(yīng)用,通過技術(shù)的不斷革新和架構(gòu)的不斷優(yōu)化,得到了進一步的提升和完善。但是計算密集型數(shù)據(jù)處理仍然處在發(fā)展階段,對于大型應(yīng)用的開發(fā)存在困難,主要集中在大型科學(xué)計算、省市級的社保醫(yī)保數(shù)據(jù)的計算與服務(wù)、稅務(wù)數(shù)據(jù)的計算與優(yōu)化等方面。

        對于計算密集型的應(yīng)用,國內(nèi)外學(xué)者在任務(wù)調(diào)度、資源分配等方面有一些相關(guān)研究。張楠等[6]提出了一種面向計算密集型任務(wù)的分布式任務(wù)調(diào)度平臺,有效地提高了系統(tǒng)的資源利用率和穩(wěn)定性。楊志豪等[7]研究了一種面向數(shù)據(jù)和計算雙重密集型任務(wù)的私有云計算系統(tǒng)實現(xiàn)方案,通過對文件和并行處理模塊的簡化和優(yōu)化,使得系統(tǒng)結(jié)構(gòu)變得簡單且方便使用。郝永生等[8]分析研究了計算密集型和數(shù)據(jù)密集型混合作業(yè)情況下的調(diào)度問題,對傳統(tǒng)的網(wǎng)格作業(yè)調(diào)度算法進行了擴展,提出了三種調(diào)度算法:Emin-min、Ebest、Esufferage。Kolici等[9]從高計算需求的角度出發(fā),介紹了利用現(xiàn)代高性能體系結(jié)構(gòu)模擬調(diào)度和資源分配的計算密集型應(yīng)用的一些研究成果。

        對于計算密集型的應(yīng)用,在我國目前還處于發(fā)展階段。因此,本文提出一套計算密集型大流量數(shù)據(jù)的接力計算與動態(tài)分流處理模型。通過內(nèi)存型數(shù)據(jù)存儲模塊中預(yù)存儲信息確定計算任務(wù)的復(fù)雜等級,同時利用接力計算模塊中計算節(jié)點的資源能力作為排序標準,將計算任務(wù)動態(tài)分配至指定接力計算節(jié)點并行處理,最終在數(shù)據(jù)分流模塊整合計算結(jié)果,返回客戶端展示,有效減輕了單服務(wù)器端的計算壓力。

        本文主要工作:1)采用內(nèi)存型數(shù)據(jù)庫預(yù)存計算參量,減少數(shù)據(jù)庫對頻繁使用參量的讀寫成本,同時內(nèi)存數(shù)據(jù)庫動態(tài)記錄計算量與復(fù)雜度,供動態(tài)計算調(diào)節(jié)器使用;2)調(diào)節(jié)器動態(tài)調(diào)用數(shù)據(jù)存儲資源(分布式數(shù)據(jù)庫),將大流量的計算任務(wù)拆解為若干小任務(wù)由存儲資源并行運算,并將并行運算的初步結(jié)果送往下一級處理層;3)后續(xù)兩級到三級的接力處理層將復(fù)雜的計算任務(wù)并行地分層處理,將最后的計算結(jié)果以數(shù)據(jù)流的方式合并輸出。

        1 關(guān)鍵技術(shù)

        1.1 微服務(wù)架構(gòu)

        微服務(wù)架構(gòu)[10]是一種體系結(jié)構(gòu)模式,它采用一組服務(wù)來構(gòu)建一個應(yīng)用程序,服務(wù)獨立地部署在不同的進程中,可獨立擴展伸縮,并且每個服務(wù)可采用不同的編程語言來實現(xiàn)。相較于傳統(tǒng)的單體應(yīng)用架構(gòu),微服務(wù)架構(gòu)具有以下優(yōu)勢:

        ①獨立部署。

        由于微服務(wù)具有獨立的運行進程,所以每個微服務(wù)可以獨立進行部署。當某個微服務(wù)發(fā)生變化時,不需要重新編譯和部署整個應(yīng)用程序,大大縮短了應(yīng)用的交付周期。

        ②降低復(fù)雜度。

        微服務(wù)架構(gòu)將單個模塊應(yīng)用程序分解為多個微服務(wù),同時保持總體功能不變。每個服務(wù)都集中在一個單一的功能上,并通過接口清楚地表示服務(wù)邊界。由于功能單一、復(fù)雜度低,小規(guī)模開發(fā)團隊可以充分掌握,易于維護,開發(fā)效率高。

        ③技術(shù)選型多元化。

        在微服務(wù)架構(gòu)下,應(yīng)用程序的技術(shù)選擇是去中心化的,各個開發(fā)團隊可以根據(jù)自身應(yīng)用的業(yè)務(wù)需求開發(fā),選擇合適的架構(gòu)和技術(shù)。

        ④容錯性。

        在微服務(wù)架構(gòu)中,由于微服務(wù)之間彼此獨立的特點,故障被隔離在單個服務(wù)中,系統(tǒng)的其他微服務(wù)模塊可以通過重試、降級等機制在應(yīng)用層實現(xiàn)容錯,從而提高系統(tǒng)應(yīng)用的容錯性。

        ⑤可擴展性。

        微服務(wù)架構(gòu)中的每一個服務(wù)可以根據(jù)實際需要獨立地進行擴展[11],充分體現(xiàn)了微服務(wù)架構(gòu)的靈活性。

        本文采用微服務(wù)架構(gòu)搭建接力計算與動態(tài)分流處理模型。

        1.2 非阻塞客戶端WebClient

        WebClient 是一個非阻塞、響應(yīng)式的HTTP(HyperText Transfer Protocol)客戶端工具,它以響應(yīng)式流、背壓的方式執(zhí)行HTTP 請求。對于高并發(fā)的情況,可以利用非阻塞和響應(yīng)式的特性使用少量的線程數(shù)進行處理[12]。本文利用這兩個特性處理微服務(wù)各模塊之間通信的問題。

        采用微服務(wù)架構(gòu)搭建整體框架,各個微服務(wù)模塊之間如何遠程進行訪問服務(wù)資源是需要考慮的問題。目前,一般微服務(wù)中各個模塊之間的調(diào)用有兩種方式:RestTemplate 和Feign,都是采用HTTP 協(xié)議調(diào)取Restful API 的方式。但這兩種方式都具有阻塞的缺點,當系統(tǒng)應(yīng)用收到大量請求時,會造成請求堆積,響應(yīng)時長增加。非阻塞客戶端WebClient 的出現(xiàn),可以完美解決上述問題。

        本文在接力計算和數(shù)據(jù)同步過程中,各層接力計算節(jié)點利用WebClient 的非阻塞特性進行通信,傳遞計算和同步任務(wù),獲取處理結(jié)果。接力計算節(jié)點調(diào)用圖如圖1所示。

        2 接力計算與動態(tài)分流處理模型

        為解決現(xiàn)有大流量數(shù)據(jù)計算緩慢、響應(yīng)時間長等問題,本文研究了一種計算密集型大流量數(shù)據(jù)的接力計算與動態(tài)分流處理模型,具有響應(yīng)迅速、計算效率高、可擴展性好等優(yōu)點。整個模型主要由數(shù)據(jù)分流模塊、內(nèi)存型數(shù)據(jù)存儲模塊、接力計算模塊和數(shù)據(jù)存儲模塊四部分組成,模型圖如圖2所示。

        圖2 計算密集型大流量數(shù)據(jù)處理模型Fig.2 Computing-intensive large flow data processing model

        2.1 接力計算與動態(tài)分流處理運行流程

        由圖2 可知,接力計算與動態(tài)分流處理模型通過四大模塊之間的相互配合,共同完成大流量數(shù)據(jù)的快速計算。該模型的具體運行流程與各大模塊的功能如下:

        1)數(shù)據(jù)分流模塊實現(xiàn)大流量數(shù)據(jù)的動態(tài)分流與合并。

        該模塊主要利用均衡算法將大流量數(shù)據(jù)均分至多個計算節(jié)點同時進行計算,計算完成后,將結(jié)果進行整合,返回至客戶端進行展示。

        2)接力計算模塊完成大部分計算任務(wù)。

        接力計算模塊根據(jù)計算任務(wù)的分解方式,確定接力層數(shù)以及各層的節(jié)點數(shù),通過各層各節(jié)點之間相互配合,完成大部分的計算任務(wù)。

        3)內(nèi)存型數(shù)據(jù)存儲模塊:微計算處理單元。

        內(nèi)存型數(shù)據(jù)存儲模塊具有讀寫速度快、性能好、易于擴展等優(yōu)點[13],本文將具有使用頻率較高、相對固定不變、已進行簡單計算等特點的數(shù)據(jù)預(yù)存儲在內(nèi)存型數(shù)據(jù)存儲模塊中,方便其余三大模塊在計算過程中快速讀取所需數(shù)據(jù)。

        4)數(shù)據(jù)存儲模塊:讀寫分離。

        數(shù)據(jù)存儲模塊是克隆數(shù)據(jù)存儲集群,采用讀寫分離,能有效減輕數(shù)據(jù)存儲模塊的負載壓力[14]。其中,讀取數(shù)據(jù)集中在(N-1)個數(shù)據(jù)存儲端,而寫入數(shù)據(jù)在N個數(shù)據(jù)存儲端中并行執(zhí)行。當寫入數(shù)據(jù)出現(xiàn)錯誤時,進行回滾,保證存儲端集群中的數(shù)據(jù)一致。

        2.2 接力計算與動態(tài)分流處理模型優(yōu)勢

        傳統(tǒng)的大流量計算模式多為增加或升級硬件資源,譬如大型互聯(lián)網(wǎng)企業(yè)雙十一期間需要增加幾千或上萬臺服務(wù)器,或人為拆解大流量為若干小任務(wù),需要較長的時間完成大量的計算任務(wù)。

        相較于傳統(tǒng)大流量數(shù)據(jù)的計算方式,本文所提出的接力計算與動態(tài)分流處理模型有以下優(yōu)勢:

        1)緩解硬件資源節(jié)點的計算壓力。數(shù)據(jù)分流模塊通過內(nèi)存型存儲模塊中的數(shù)據(jù)快速確定計算任務(wù)的復(fù)雜等級X,利用均衡算法將計算任務(wù)分配至X個接力計算節(jié)點完成,有效緩解單一架構(gòu)的計算壓力。

        2)易于擴展。本文的接力計算模塊為集群式,體現(xiàn)為多層接力節(jié)點共同參與任務(wù)計算。上層接力節(jié)點的計算結(jié)果傳遞到下層接力節(jié)點繼續(xù)參與計算。大流量數(shù)據(jù)的復(fù)雜運算可以利用多層接力節(jié)點異步處理計算任務(wù),減輕傳統(tǒng)單服務(wù)器端的計算壓力。

        3)數(shù)據(jù)同步。數(shù)據(jù)存儲端集群采用讀寫分離的方式存儲數(shù)據(jù),有效減輕存儲模塊的負載壓力;并且,通過執(zhí)行SQL 捕獲器的結(jié)果和引發(fā)錯誤后回滾的方式保證數(shù)據(jù)同步。

        4)讀寫快速。利用內(nèi)存型數(shù)據(jù)存儲模塊中讀寫數(shù)據(jù)快速的優(yōu)點,將使用頻率較高的數(shù)據(jù)預(yù)存儲在內(nèi)存型數(shù)據(jù)存儲端中。

        3 接力計算與動態(tài)分流處理模型設(shè)計與實現(xiàn)

        根據(jù)接力計算與動態(tài)分流處理模型的說明,可以得到接力計算與動態(tài)分流處理模型的總體運行流程如圖3所示。

        圖3 接力計算與動態(tài)分流處理模型流程Fig.3 Flowchart of relay computation and dynamic diversion processing model

        具體技術(shù)實現(xiàn)闡述如下:

        1)數(shù)據(jù)分流模塊對數(shù)據(jù)進行動態(tài)分流。

        數(shù)據(jù)分流模塊接收客戶端原始任務(wù)請求,利用SQL 捕獲器的結(jié)果判斷任務(wù)類型。其中,增加、刪除和更新操作屬于數(shù)據(jù)同步任務(wù),而讀取操作屬于計算任務(wù)。

        SQL 捕獲器的結(jié)果判定是計算任務(wù)時,先確定計算任務(wù)的復(fù)雜等級。本文將第一次請求數(shù)據(jù)的時間Tm預(yù)存儲在內(nèi)存型數(shù)據(jù)存儲模塊中,后續(xù)計算請求任務(wù)將Tm與自定義閾值時間T作對比,得到計算任務(wù)的復(fù)雜等級X:

        其中:N為數(shù)據(jù)存儲端的個數(shù);Tm表示第一次請求數(shù)據(jù)時間;T表示自定義閾值時間;X表示參與計算節(jié)點數(shù)和計算任務(wù)的復(fù)雜等級;[]表示取整。

        當Tm/T≤1 時,表示接力計算模塊中的1 個接力計算節(jié)點得到全部計算任務(wù)Y。當Tm/T∈(1,N-2]時,使用式(2)計算每個接力計算節(jié)點獲取的計算任務(wù)量R:

        其中:n代表計算節(jié)點的編號;Y表示計算任務(wù)量。

        當Tm/T>N-2,并且Y%X=0 時,使用式(3)計算每個接力計算節(jié)點獲取的計算任務(wù)量R:

        當Tm/T>N-2,并且Y%X≠0 時,使用式(4)計算每個接力計算節(jié)點獲取的計算任務(wù)量R:

        接力計算節(jié)點完成計算任務(wù)的分配時,需要先對接力計算節(jié)點進行編號。利用微服務(wù)架構(gòu)中的服務(wù)發(fā)現(xiàn)功能獲取第一層接力計算節(jié)點所在服務(wù)器端的IP 地址,通過IP 地址讀取CPU 和內(nèi)存使用率等信息,對節(jié)點資源能力按照從低到高進行排序,對各個節(jié)點進行編號(編號值n:1 →N-1)。每個接力計算節(jié)點分配的計算任務(wù)量R由式(2)~(4)可得。

        SQL 捕獲器結(jié)果判斷是數(shù)據(jù)同步任務(wù)時,將SQL 捕獲器結(jié)果和任務(wù)標識作為請求參數(shù),直接轉(zhuǎn)發(fā)到接力計算模塊進一步處理。

        2)數(shù)據(jù)存儲模塊實現(xiàn)數(shù)據(jù)提取、簡單運算和數(shù)據(jù)同步的功能。

        數(shù)據(jù)存儲模塊根據(jù)任務(wù)標識執(zhí)行不同的任務(wù),分別為計算任務(wù)和數(shù)據(jù)同步任務(wù),以下將分為兩方面進行介紹。

        ①計算任務(wù)。

        數(shù)據(jù)存儲模塊執(zhí)行計算任務(wù)時,將數(shù)據(jù)提取和簡單運算放在該模塊完成,例如查詢計算人員的姓名、年齡等基本信息,可以從數(shù)據(jù)存儲模塊提取多位人員姓名、出生日期基本信息,通過編寫的數(shù)據(jù)庫函數(shù)實時計算年齡等信息。而在X個數(shù)據(jù)存儲端完成計算任務(wù)時,先判斷內(nèi)存型數(shù)據(jù)存儲模塊是否存有當前所需數(shù)據(jù),如果未保存,將數(shù)據(jù)寫入內(nèi)存型數(shù)據(jù)存儲模塊,方便后續(xù)請求從內(nèi)存型數(shù)據(jù)存儲模塊中直接提取。計算完成后將半成品結(jié)果返回至接力計算模塊進一步處理。

        ②數(shù)據(jù)同步任務(wù)。

        數(shù)據(jù)存儲模塊執(zhí)行數(shù)據(jù)同步任務(wù)時,N個數(shù)據(jù)存儲端執(zhí)行SQL 捕獲器的結(jié)果(增加、刪除和更新),N個接力計算節(jié)點記錄執(zhí)行情況并使用WebClient 相互通信。如果當前數(shù)據(jù)存儲端執(zhí)行成功,同時收到其余(N-1)個數(shù)據(jù)存儲端執(zhí)行成功的信息,接力計算節(jié)點向上一層接力處理模塊返回執(zhí)行成功的信息。

        如果N個數(shù)據(jù)存儲端中出現(xiàn)執(zhí)行失敗的情況,出錯的接力計算節(jié)點使用WebClient向其余節(jié)點發(fā)送執(zhí)行失敗的信息,利用數(shù)據(jù)庫ACID 特性[15]的原子性(ACID特性即原子性Atomic、一致性Consistency、隔離性Isolation和持久性Durability),對執(zhí)行成功的模塊進行事務(wù)回滾,恢復(fù)至執(zhí)行前的數(shù)據(jù)狀態(tài),同時接力計算節(jié)點向上一層計算終端返回執(zhí)行失敗的信息,這樣可以保證N個數(shù)據(jù)存儲端中的數(shù)據(jù)完全相同。數(shù)據(jù)存儲模塊功能流程如圖4所示。

        圖4 數(shù)據(jù)存儲模塊功能流程Fig.4 Function flowchart of data storage module

        3)接力計算模塊完成數(shù)據(jù)的大部分計算。

        接力計算模塊主要完成大部分的計算任務(wù),可以自定義接力計算層數(shù)F,其中每層接力節(jié)點數(shù)m需要大于等于數(shù)據(jù)存儲端數(shù)量N。

        本文在確定最佳接力計算層數(shù)F時,需要對復(fù)雜計算任務(wù)完成分解。任務(wù)分解的思想在于將一個復(fù)雜計算任務(wù)通過某種方式分解為多個不同的、簡單的子任務(wù),可以將這些分解后的子任務(wù)交給多個接力計算模塊完成,最終將多個模塊計算完成的結(jié)果返回數(shù)據(jù)分流模塊,進行整合規(guī)范。

        本文在完成計算任務(wù)分解時,需先測量單機完成該任務(wù)所花費的時長。接著,將任務(wù)分解為多個無關(guān)聯(lián)的計算子任務(wù),分配至多層接力計算節(jié)點完成,記錄任務(wù)完成時間。同時,考慮各模塊的關(guān)聯(lián)和依賴作用,將多個計算子任務(wù)合并在同一個接力節(jié)點完成,記錄最終任務(wù)的完成時間。比較多種任務(wù)分解方式,得出最合理的任務(wù)分解方式,計算完成所花費的時間最短。

        本文使用3層接力節(jié)點,每層接力節(jié)點包含3個接力計算節(jié)點,3 個數(shù)據(jù)存儲端為例進行具體詳述。接力計算模塊結(jié)構(gòu)如圖5所示。

        圖5 接力計算模塊結(jié)構(gòu)圖Fig.5 Structure diagram of relay computation module

        數(shù)據(jù)分流模塊對數(shù)據(jù)進行分流,根據(jù)式(1)確定復(fù)雜等級X的值,比如計算完成X的值為2,代表將計算任務(wù)分配至兩個接力計算節(jié)點同時完成。將計算任務(wù)量劃分成2 份,對第一層接力節(jié)點中3 個計算節(jié)點資源能力從高到低進行排序編號,將計算任務(wù)分配至編號1 和2 的接力計算節(jié)點完成,根據(jù)式(3)或式(4)得到每個接力計算節(jié)點分配的計算任務(wù)量R。節(jié)點資源能力計算公式如下:

        其中:NodeAbility代表計算節(jié)點的資源能力;Rate代表CPU 剩余利用率;idle_cores代表空閑CPU 核數(shù);MainFrequency代表CPU主頻。

        處理數(shù)據(jù)完成后,對第二層接力計算節(jié)點資源能力按照式(5)計算后進行排序編號,轉(zhuǎn)發(fā)對應(yīng)編號節(jié)點的計算任務(wù)請求,比如第一層接力節(jié)點編號為1 的計算節(jié)點向第二層接力節(jié)點中編號為1 的計算節(jié)點轉(zhuǎn)發(fā)請求,以此類推,第二層接力節(jié)點向第三層節(jié)點請求轉(zhuǎn)發(fā)的規(guī)則也相同。節(jié)點計算結(jié)構(gòu)如圖6所示。

        圖6 節(jié)點計算結(jié)構(gòu)圖Fig.6 Node computation structure diagram

        如上所述,請求到達第三層接力節(jié)點時,數(shù)據(jù)提取和簡單運算放在數(shù)據(jù)存儲模塊完成,每個接力計算節(jié)點對應(yīng)一個數(shù)據(jù)存儲端,在計算過程中可以直接獲取內(nèi)存型數(shù)據(jù)存儲模塊中所需數(shù)據(jù),計算完成的半成品結(jié)果在第三層、第二層和第一層接力節(jié)點中特制的計算模塊進行進一步處理。第一層接力節(jié)點得到最終計算結(jié)果后,返回到數(shù)據(jù)分流模塊,進行合并2個接力節(jié)點的計算結(jié)果,轉(zhuǎn)換為客戶端能夠解析的數(shù)據(jù)類型,將整合規(guī)范后的結(jié)果返回客戶端展示。接力計算模塊中的各層節(jié)點之間的通信采用異步非阻塞的WebClient方式,不會阻塞后續(xù)程序運行。

        接力計算模塊處理數(shù)據(jù)同步任務(wù)時,計算結(jié)構(gòu)圖和處理計算任務(wù)時相同,如圖6所示。

        數(shù)據(jù)分流模塊將SQL捕獲器的結(jié)果和數(shù)據(jù)同步任務(wù)標識作為請求參數(shù),轉(zhuǎn)發(fā)至第一層接力節(jié)點中資源能力按照式(5)計算后進行排序編號為1 的計算節(jié)點,在解析請求參數(shù)中任務(wù)標識為數(shù)據(jù)同步任務(wù)時,將請求直接轉(zhuǎn)發(fā)至第二層接力節(jié)點中資源能力也按照式(5)計算后進行排序編號為1 的計算節(jié)點,該節(jié)點接收請求后,轉(zhuǎn)發(fā)至第三層中所有計算節(jié)點,在數(shù)據(jù)存儲模塊中并行執(zhí)行SQL 捕獲器結(jié)果。如前面所述,出現(xiàn)執(zhí)行失敗的情況時,3 個接力計算節(jié)點使用WebClient 相互通信,數(shù)據(jù)存儲模塊進行事務(wù)回滾,恢復(fù)至未執(zhí)行前的數(shù)據(jù)狀態(tài)。3 個接力計算節(jié)點將執(zhí)行失敗情況原路返回,在數(shù)據(jù)分流模塊對執(zhí)行情況進行整合,最終將任務(wù)完成情況返回給客戶端。數(shù)據(jù)同步失敗結(jié)構(gòu)如圖7所示。

        圖7 數(shù)據(jù)同步失敗結(jié)構(gòu)圖Fig.7 Data synchronization failure structure diagram

        4 測試與結(jié)果分析

        本文通過計算保存在數(shù)據(jù)存儲模塊中的學(xué)生成績數(shù)據(jù),獲取指定數(shù)據(jù)量的計算任務(wù),完成對應(yīng)學(xué)生總分、平均分等計算。將第一次多個計算節(jié)點請求數(shù)據(jù)的響應(yīng)時間小于單個計算節(jié)點時的數(shù)據(jù)量預(yù)存儲在內(nèi)存型數(shù)據(jù)存儲模塊,后續(xù)請求數(shù)據(jù)量與內(nèi)存型數(shù)據(jù)存儲模塊中作對比:如果超過該數(shù)據(jù)量,對數(shù)據(jù)進行分流;如果未超過該數(shù)據(jù)量,由單個計算節(jié)點完成,利用當前節(jié)點的資源能力判斷任務(wù)分配至各層節(jié)點計算。

        本文測試計算中,主要使用單個計算節(jié)點和兩個計算節(jié)點(2 層接力節(jié)點,每層接力節(jié)點包含2 個接力計算節(jié)點和2個數(shù)據(jù)存儲端)進行測試。模擬接力計算時,為簡單處理只將提取學(xué)生成績放在數(shù)據(jù)存儲端完成,平均分放在第一層節(jié)點,總分放在第二層節(jié)點計算。

        客戶端將計算任務(wù)分配至數(shù)據(jù)分流模塊,通過內(nèi)存型數(shù)據(jù)存儲模塊中的數(shù)據(jù)判斷是否進行分流,將分流請求數(shù)據(jù)量傳送至第二層計算節(jié)點,提取學(xué)生多門成績放在數(shù)據(jù)存儲模塊完成,將半成品計算結(jié)果以流的形式返回接力計算模塊,分別計算學(xué)生的總分和平均分。計算完成,將結(jié)果返回數(shù)據(jù)分流模塊進行整合,最終在客戶端展示。每次客戶端發(fā)送計算請求時,記錄每次請求完成的響應(yīng)時間。

        需要說明的是,為了測試的真實性,測試在正式的生產(chǎn)環(huán)境進行,所以沒有讓計算進行同步回寫存儲,但不影響對模型與框架的驗證與相應(yīng)結(jié)論。

        4.1 測試的物理環(huán)境

        本文使用的物理環(huán)境包括如下:

        數(shù)據(jù)分流模塊運行環(huán)境:1 臺Linux 服務(wù)器,操作系統(tǒng)CentOS-7.6 64 bit,運行內(nèi)存8 GB,帶寬10 Mb/s,Java 開發(fā)工具包jdk-1.8.0_181。

        接力計算模塊運行環(huán)境:2 臺Linux 服務(wù)器,操作系統(tǒng)CentOS 7.6 64 bit,運行內(nèi)存8 GB,帶寬5 Mb/s,Java 開發(fā)工具包jdk-1.8.0_181。

        數(shù)據(jù)存儲模塊運行環(huán)境:1 臺Linux 服務(wù)器,關(guān)系型數(shù)據(jù)庫管理系統(tǒng)MySQL 8.0.20,操作系統(tǒng)CentOS 7.6 64 bit,運行內(nèi)存16 GB,帶寬5 Mb/s,Java 開發(fā)工具包jdk-1.8.0_181。

        4.2 測試結(jié)果和分析

        4.2.1 運行結(jié)果

        通過對不同數(shù)量級數(shù)據(jù)的多次測試,去除波動較大的測試結(jié)果后取平均值。學(xué)生成績在單個節(jié)點和多個節(jié)點的計算完成時間的對比測試結(jié)果如表1所示。

        表1 單個節(jié)點與兩個節(jié)點耗時對比Tab.1 Time consumption comparison between single node and two nodes

        表2~3 展示的當計算請求數(shù)據(jù)量較大(30 000 條)和較?。?00條)時,數(shù)據(jù)分流模塊接收10次計算請求后,每次單個節(jié)點和多個節(jié)點分別從請求開始到返回計算結(jié)果的完成時間對比。需要注意的是,由于實驗中服務(wù)器存在實時網(wǎng)絡(luò)狀態(tài)不同等原因,每次計算請求的完成時間是不相同的,所以表2~3展示的數(shù)據(jù)中,后續(xù)請求的完成時間可能會小于開始請求的完成時間。

        表2 請求數(shù)據(jù)量大(30 000條)時的完成時間對比Tab.2 Comparison of completion time for requests with large amount of data(30 000 items)

        表3 請求數(shù)據(jù)量?。?00條)時的完成時間對比Tab.3 Comparison of completion time for requests with small amount of data(100 items)

        4.2.2 運行結(jié)果分析

        根據(jù)運行的結(jié)果,分析表1~3 可知:在計算請求數(shù)據(jù)量較小的情況下,單個計算節(jié)點完成相同計算任務(wù)的時間會小于多個計算節(jié)點的完成時間;而計算請求數(shù)據(jù)量較大的情況,則剛好相反。這說明該模型的計算調(diào)節(jié)器可以通過判斷請求數(shù)據(jù)量的大小來決定是否進行分流,避免在計算過程中過多資源的浪費。對于大流量數(shù)據(jù)的密集計算使用該模型可以降低運行時間,并且隨著計算請求數(shù)據(jù)量的增大和計算復(fù)雜度的增加,模型的優(yōu)勢就越明顯。并且,該模型通過三層(內(nèi)存型數(shù)據(jù)存儲模塊、接力計算模塊和數(shù)據(jù)存儲模塊)的接力計算,可以解決一般數(shù)據(jù)計算軟件可能出現(xiàn)的運算速度緩慢、計算阻塞堆積等問題,也大幅減少了其中一層的運算和處理接近滿負荷或積壓,而另外兩層出現(xiàn)等待或閑置的狀況。通過不同數(shù)量級計算數(shù)據(jù)的測試,記錄了單個節(jié)點和多個節(jié)點計算完成時間等指標,對指標數(shù)據(jù)的整理分析,說明了該模型能夠顯著提升數(shù)據(jù)計算的效率,對超高并發(fā)數(shù)據(jù)的處理、計算密集性數(shù)據(jù)的計算方法及類似應(yīng)用場景,具有借鑒與參考性的價值。

        5 結(jié)語

        本文構(gòu)建一種利用內(nèi)存式數(shù)據(jù)存儲技術(shù)為過渡,通過預(yù)存儲、一體化轉(zhuǎn)換、讀寫分離等構(gòu)架與算法,探索快速處理存儲模塊數(shù)據(jù)的模型與構(gòu)架,并著眼于通過內(nèi)存式數(shù)據(jù)存儲技術(shù)為樞紐,將大流量數(shù)據(jù)的計算任務(wù),通過預(yù)加載、解耦、緩存機制等,銜接來自于動態(tài)分流進一步處理的數(shù)據(jù),完成大流量數(shù)據(jù)的快速計算。該模型及其實現(xiàn)已經(jīng)在實際的密集計算型的應(yīng)用場景得到運用,在計算速度和資源成本方面都取得理想的結(jié)果[16]。該方案和相關(guān)技術(shù)對于計算密集型的應(yīng)用領(lǐng)域和相關(guān)研究,都具有建設(shè)性的意義,也可降低信息化系統(tǒng)建設(shè)成本,實現(xiàn)資源充分利用。

        猜你喜歡
        服務(wù)
        自助取卡服務(wù)
        服務(wù)在身邊 健康每一天
        服務(wù)在身邊 健康每一天
        服務(wù)在身邊 健康每一天
        服務(wù)在身邊 健康每一天
        服務(wù)在身邊 健康每一天
        服務(wù)在身邊 健康每一天
        服務(wù)在身邊 健康每一天
        高等教育為誰服務(wù):演變與啟示
        招行30年:從“滿意服務(wù)”到“感動服務(wù)”
        商周刊(2017年9期)2017-08-22 02:57:56
        国产亚洲一区二区精品| 国产精品 视频一区 二区三区 | 国产精品av网站在线| 东京热日本av在线观看| 国产精品亚洲а∨无码播放不卡| 亚洲欧美精品伊人久久| 国产在线h视频| 侵犯了美丽丰满人妻中文字幕| 亚洲中文字幕久久精品蜜桃| 乱人伦视频中文字幕| 亚洲区偷拍自拍29p| 国产优质av一区二区三区| 肉色丝袜足j视频国产| 国产suv精品一区二区883| 中文字幕无码专区一VA亚洲V专 | 亚洲免费黄色| 国产麻豆放荡av激情演绎| 国产麻豆精品传媒av在线| 男ji大巴进入女人的视频小说| 久草视频国产| 国产黄色看三级三级三级| 精品一二三四区中文字幕| 亚洲丁香五月天缴情综合| 久久精品国产亚洲5555| 久久人妻精品免费二区| 国产精品天干天干| 男女肉粗暴进来120秒动态图| 3亚洲日韩在线精品区| 少妇被爽到高潮喷水免费福利 | 99久久免费国产精品2017| 丰满少妇又爽又紧又丰满动态视频 | 精品亚洲一区二区三区在线观看 | 国产护士一区二区三区| 蜜桃日本免费观看mv| 无码人妻丰满熟妇精品区| 99久久无色码中文字幕鲁信| 亚洲av毛片在线免费观看| 国产一区二区三精品久久久无广告| 中文字幕久热精品视频免费| 在线不卡精品免费视频| 男女做爰高清免费视频网站|