国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于消息總線及內(nèi)存數(shù)據(jù)庫的物聯(lián)網(wǎng)設備接入云平臺

2018-06-22 02:59:26閆佼陳建江
微型電腦應用 2018年6期
關鍵詞:線程內(nèi)存總線

閆佼, 陳建江

(上海順舟智能科技股份有限公司, 上海 201203)

0 引言

隨著物聯(lián)網(wǎng)(internet of things,簡稱IoT)[1]技術的快速發(fā)展,大量智能設備的信息需要接入到云平臺進行分析處理,而云平臺接入層的處理效率直接影響物聯(lián)網(wǎng)設備的信息上報和控制延時,特別是對于某些時延敏感設備。目前使用分布式、集群技術對于設備并發(fā)連接及數(shù)量規(guī)模有大幅提升,但仍然存在接入層效率的問題。

針對物聯(lián)網(wǎng)數(shù)據(jù)接入服務,研究人員提出了多種實現(xiàn)方案,大部分引入了基于內(nèi)存的數(shù)據(jù)存取系統(tǒng),例如Tingli Li等提出基于NoSQL的物聯(lián)網(wǎng)數(shù)據(jù)處理框架IOTMDB[2];Suna Yin等提出基于NoSQL的分布式物聯(lián)網(wǎng)數(shù)據(jù)處理框架STNoSQL[3];田野等提出基于NoSQL、REST的物聯(lián)網(wǎng)數(shù)據(jù)存儲與共享策略[4]。

為了提升云平臺接入層處理效率,本文從系統(tǒng)整體處理效率入手,重點闡述一種基于LibEvent的IO多路復用調(diào)度模型及綜合使用消息總線技術、MongoDB和Redis內(nèi)存數(shù)據(jù)庫的物聯(lián)網(wǎng)設備接入云平臺架構模型。使用本架構模型可大大提高設備接入及信息命令的處理效率,減少延時,以符合更大范圍的設備接入應用。

1 系統(tǒng)結構

基于消息總線及內(nèi)存數(shù)據(jù)庫的物聯(lián)網(wǎng)設備接入云平臺采用分層的體系架構,從上到下分別為應用層、服務層、數(shù)據(jù)層和設備接入層,如圖1所示。

應用層主要是B/S展示。可提供用戶注冊、登錄、訪問設備基本信息、對設備進行控制操作、統(tǒng)計分析應用。

圖1 系統(tǒng)結構圖

服務層包括各業(yè)務邏輯模塊、第三方平臺相互調(diào)用接口、數(shù)據(jù)查詢接口、數(shù)據(jù)挖掘模塊和數(shù)據(jù)層同步邏輯模塊。

數(shù)據(jù)層采用MongoDB、Redis和MySQL融合的方式,分別存儲設備的實時狀態(tài)信息,臨時連接信息和歷史數(shù)據(jù)及訪問記錄信息。

設備接入層主要滿足設備接入的實時處理需求,具有并發(fā)性強,數(shù)據(jù)量大的特點,采用IO多路復用技術、線程池及負載均衡技術。

云平臺引入消息總線技術作為內(nèi)部模塊或邏輯塊通信的主要途徑,解決了不同服務進程之間的通訊問題。一些服務向總線上發(fā)送消息,另一些服務從總線上獲取消息。這種設計思想保證了各個進程可以被不同類型的客戶端所接受,同時也保證了內(nèi)部進程通信接口的可擴展性和可靠性,從而解除平臺中各服務進程之間的耦合,以支持大規(guī)模的部署。

云平臺系統(tǒng)定義了統(tǒng)一的消息格式,將處理設備連接的驅(qū)動服務、WEB前端B/S服務、數(shù)據(jù)同步業(yè)務邏輯、數(shù)據(jù)分析挖掘業(yè)務邏輯、第三方平臺接口服務等模塊有機整合,同時最大化地降低了模塊間的耦合,使得整個系統(tǒng)中的不同業(yè)務邏輯可使用不同語言開發(fā),靈活部署維護,極大地提升了系統(tǒng)的組件化水平。

實時的設備連接信息使用Redis進行存取。Redis是NoSQL數(shù)據(jù)庫的一種,近年來發(fā)展日益成熟,其存取數(shù)據(jù)基于內(nèi)存,在性能和速度上相比基于磁盤存儲的傳統(tǒng)關系型數(shù)據(jù)庫具有較大的優(yōu)勢。Redis本身適用于數(shù)據(jù)變化快且數(shù)據(jù)庫大小可預見(適合內(nèi)存容量)的應用程序。例如在微博、微信等應用中已引入key-value數(shù)據(jù)庫到其服務平臺中[5]。目前國內(nèi)Redis最大的用戶是新浪,視覺中國(MongoDB)、優(yōu)酷、飛信等都在使用NoSQL數(shù)據(jù)庫對業(yè)務進行支持[6]。

設備連接信息包括TCP連接的SOCKET描述符、設備在線狀態(tài)、連接對應的設備集合、與業(yè)務邏輯相關的輪詢策略等等。這些信息通過的形式保存在內(nèi)存數(shù)據(jù)庫中,可極大地提升并發(fā)訪問的執(zhí)行處理效率。例如對于設備的在線狀態(tài),在Redis中保存格式,Key為“szsl:device:862151039692114:online”,Value為“1”。

設備的狀態(tài)信息使用MongoDB進行存取。MongoDB也是NoSQL數(shù)據(jù)庫的一種,是基于文檔的非關系性數(shù)據(jù)庫,可以為物聯(lián)網(wǎng)接入云服務平臺提供可擴展、高性能的數(shù)據(jù)存儲解決方案。

設備狀態(tài)信息包括設備的通用屬性和專有屬性,例如燈具設備的標識、所屬項目等屬于通用屬性;開關狀態(tài)、亮度狀態(tài)等屬于專有屬性。將這些信息保存在基于文檔結構的內(nèi)存數(shù)據(jù)庫中,不僅可大幅提升存取速度,提升并發(fā)訪問的執(zhí)行處理效率,同時可靈活擴展,既便于存放異構設備的不同屬性信息,又方便后續(xù)對系統(tǒng)的持續(xù)改造升級。

2 設備接入架構

設備接入部分是物聯(lián)網(wǎng)云平臺的關鍵功能模塊,它負責海量設備的連接維護、信息處理及控制執(zhí)行等核心業(yè)務。設備接入部分的效率直接決定整個物聯(lián)網(wǎng)云平臺對設備提供服務的能力和質(zhì)量。本系統(tǒng)引入基于LibEvent的IO多路復用調(diào)度模型,同時融入線程池及負載均衡技術,設計了通用接入框架,并盡最大可能發(fā)揮操作系統(tǒng)的并發(fā)處理性能。如圖2所示。

圖2 設備接入架構圖

LibEvent是基于Reactor型事件驅(qū)動模式的輕量級開源高性能網(wǎng)絡庫,其執(zhí)行效率之高得到普遍認可,目前已經(jīng)得到廣泛應用,比如Chromium、Memcached、Vomit、Nylon、Netchat等。

接入層框架模型使用IO多路復用技術,可顯著提高程序在大量并發(fā)連接中只有少量活躍的情況下的系統(tǒng)CPU利用率。IO多路復用技術復用文件描述符集合傳遞結果,同時在獲取事件時,只需要遍歷被內(nèi)核IO事件異步喚醒而加入Ready隊列的描述符集合,而無需遍歷整個集合。

接入層框架模型使用線程池技術,主要有兩種線程,分別是“主線程”和“工作線程”,主線程有一個,工作線程有多個。主線程負責監(jiān)聽網(wǎng)絡連接,并且對監(jiān)聽到的連接進行accept操作,成功后,把相應的連接描述符轉(zhuǎn)交給負載較輕的工作線程處理。工作線程接收到連接描述符后,創(chuàng)建連接資源并將其加入到自己的連接隊列,負責處理該連接的讀寫事件。

接入層框架模型按照組件化思想進行設計,對于海量異構設備進行抽象,抽取共性信息作為通用屬性,個性信息作為專有屬性。使用設備類型作為標識,區(qū)分不同的數(shù)據(jù)格式及控制命令格式,將其轉(zhuǎn)到不同的處理組件進行處理。處理的結果統(tǒng)一更新到Redis和MongoDB數(shù)據(jù)庫中。

為了保證高效使用內(nèi)存數(shù)據(jù)庫,各工作線程分別與數(shù)據(jù)庫建立訪問連接,線程之間連接信息保持獨立,更好地發(fā)揮內(nèi)存數(shù)據(jù)庫的讀寫速度優(yōu)勢,提升對設備服務的并發(fā)處理能力。

3 測試

為了獲取最佳的執(zhí)行效率,設備接入層的驅(qū)動部分使用C語言實現(xiàn),其它部分邏輯使用JAVA語言實現(xiàn),為了驗證單臺主機的連接性能,使用1臺安裝Ubuntu 14.04 64位操作系統(tǒng)的,具備單核CPU、2G內(nèi)存的阿里云服務器進行部署測試,接入設備分別為安裝于實際項目中的基于4G技術的路燈控制器、基于NB-IOT技術的路燈控制器、基于zigbee技術的集中控制器及路燈控制器。

首先驗證云平臺的設備接入層功能,設備上電后,控制指令執(zhí)行正確、心跳指令、設備響應指令正確,通信邏輯正常。然后查看前端展示,確認各菜單跳轉(zhuǎn)正確,控制操作動作正確,各模塊及數(shù)據(jù)展示表現(xiàn)正常查看前端B/S展示,關于設備管理頁的展示效果如圖3所示。

圖3 設備管理頁的展示效果圖

用戶可單獨或批量地對設備進行控制操作,同時設備信息可實時展示及存儲,大大方便了對物聯(lián)網(wǎng)設備的管理。

平臺通過對設備信息進行收集和處理,同時對比歷史數(shù)據(jù)得出能耗統(tǒng)計數(shù)據(jù),通過前端B/S進行展示,效果如圖4所示。

圖4 前端展示效果圖

用戶可通過條件查詢各個地區(qū)、各個項目的能耗情況,為城市總體規(guī)劃及能源調(diào)配提供真實數(shù)據(jù)參考。

以智能燈為例,從B/S端對其進行狀態(tài)信息讀取和控制操作,統(tǒng)計平均響應時間,如表1所示。

從表1可以看出,在用戶執(zhí)行對設備操作后,平均響應

時間小于500 ms,在實際的操作過程中,可達到較好的用戶體驗。根據(jù)應用邏輯,對設備的操作及響應數(shù)據(jù)的處理都需要進行MongoDB和Redis數(shù)據(jù)庫的操作及多次網(wǎng)絡通信,但仍達到了理想的響應效果,基本可體現(xiàn)出基于內(nèi)存數(shù)據(jù)庫的控制云在時延方面的優(yōu)勢。

表1 設備通信性能測試結果

4 總結

為接入海量物聯(lián)網(wǎng)智能設備,處理設備信息,對設備進行控制操作,設計了一種基于消息總線及內(nèi)存數(shù)據(jù)庫的物聯(lián)網(wǎng)設備接入云平臺。該平臺為智能設備接入及應用層展示、分析提供相應服務,將數(shù)據(jù)按照使用率進行分類,分別存入MongoDB、Redis及MySQL數(shù)據(jù)庫,同時設計了數(shù)據(jù)庫同步組件,將內(nèi)存數(shù)據(jù)按日志存入MySQL,便于后臺數(shù)據(jù)分析及處理。平臺使用消息總線技術,整合不同的業(yè)務邏輯模塊,使得不同語言實現(xiàn)的功能模塊可完美融合。云平臺接入層使用基于LibEvent的IO復用技術,大幅提升單機的連接數(shù)及并發(fā)能力。

通過系統(tǒng)的長期運行及實際項目應用表明,云平臺系統(tǒng)能夠?qū)崟r反映設備的狀態(tài)信息及設備的使用和運行情況,分析設備數(shù)據(jù)得到有用價值數(shù)據(jù),為用戶提供數(shù)據(jù)支撐。下一步將繼續(xù)優(yōu)化系統(tǒng),進一步挖掘單機設備的最大連接能力及并發(fā)能力,將系統(tǒng)組件分布式部署,同時開發(fā)更多數(shù)據(jù)挖掘應用,為用戶提供更多更有價值的信息。

[1] CONTIP. The Internet of Things[J]. Communications Engineer, 2006,4(6):20-25.

[2] Tingli Li, Yang Liu, Ye Tian, et al. A Storage Solution for Massive IoT Data Based on NoSQL[M]//Proceedings of the IEEE International Conference on Internet of Things, 2012:50-57.

[3] Suna Yin, Dehua Chen, Jiajin Le. STNoSQL: Creating NoSQL database on the Sensible Things platform[C]//IEEE Ieee/acis International Conference on Software Engineering, Artificial Intelligence, Networking and Parallel/Distributed Computing, 2016:669-674.

[4] 田野,袁博,李廷力. 物聯(lián)網(wǎng)海量異構數(shù)據(jù)存儲與共享策略研究[J]. 電子學報,2016,44(2):247-257.

[5] 申德榮,于戈,王習特,等. 支持大數(shù)據(jù)管理的NoSQL系統(tǒng)研究綜述[J]. 軟件學報,2013(8):1786-1803.

[6] 閆密巧,王占宏,王志宇. 基于Redis的海量軌跡數(shù)據(jù)存儲模型研究[J]. 微型電腦應用,2017,33(4):9-11.

猜你喜歡
線程內(nèi)存總線
“春夏秋冬”的內(nèi)存
當代陜西(2019年13期)2019-08-20 03:54:22
基于PCI Express總線的xHC與FPGA的直接通信
測控技術(2018年6期)2018-11-25 09:50:12
機載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設計
測控技術(2018年8期)2018-11-25 07:42:08
淺談linux多線程協(xié)作
多通道ARINC429總線檢查儀
基于EtherCAT總線的ROV控制系統(tǒng)設計
河南科技(2014年16期)2014-02-27 14:13:22
基于內(nèi)存的地理信息訪問技術
Linux線程實現(xiàn)技術研究
么移動中間件線程池并發(fā)機制優(yōu)化改進
上網(wǎng)本為什么只有1GB?
新蔡县| 四会市| 南漳县| 镇平县| 曲靖市| 克东县| 建始县| 宣武区| 河北区| 湖北省| 泸州市| 鄯善县| 邵阳市| 新沂市| 宁都县| 台山市| 仁布县| 梧州市| 惠来县| 龙门县| 利津县| 阿尔山市| 陈巴尔虎旗| 盖州市| 罗平县| 阿城市| 元谋县| 中阳县| 武邑县| 台安县| 尚志市| 托克逊县| 安塞县| 闽侯县| 固安县| 大竹县| 洛浦县| 福泉市| 赣州市| 龙陵县| 左云县|