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

        ?

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

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

        閆佼, 陳建江

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

        0 引言

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

        針對物聯(lián)網(wǎng)數(shù)據(jù)接入服務(wù),研究人員提出了多種實現(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多路復(fù)用調(diào)度模型及綜合使用消息總線技術(shù)、MongoDB和Redis內(nèi)存數(shù)據(jù)庫的物聯(lián)網(wǎng)設(shè)備接入云平臺架構(gòu)模型。使用本架構(gòu)模型可大大提高設(shè)備接入及信息命令的處理效率,減少延時,以符合更大范圍的設(shè)備接入應(yīng)用。

        1 系統(tǒng)結(jié)構(gòu)

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

        應(yīng)用層主要是B/S展示??商峁┯脩糇?、登錄、訪問設(shè)備基本信息、對設(shè)備進行控制操作、統(tǒng)計分析應(yīng)用。

        圖1 系統(tǒng)結(jié)構(gòu)圖

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

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

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

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

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

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

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

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

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

        2 設(shè)備接入架構(gòu)

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

        圖2 設(shè)備接入架構(gòu)圖

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

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

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

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

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

        3 測試

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

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

        圖3 設(shè)備管理頁的展示效果圖

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

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

        圖4 前端展示效果圖

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

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

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

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

        表1 設(shè)備通信性能測試結(jié)果

        4 總結(jié)

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

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

        [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)海量異構(gòu)數(shù)據(jù)存儲與共享策略研究[J]. 電子學(xué)報,2016,44(2):247-257.

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

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

        猜你喜歡
        線程內(nèi)存總線
        “春夏秋冬”的內(nèi)存
        當代陜西(2019年13期)2019-08-20 03:54:22
        基于PCI Express總線的xHC與FPGA的直接通信
        機載飛控1553B總線轉(zhuǎn)以太網(wǎng)總線設(shè)計
        淺談linux多線程協(xié)作
        多通道ARINC429總線檢查儀
        基于EtherCAT總線的ROV控制系統(tǒng)設(shè)計
        河南科技(2014年16期)2014-02-27 14:13:22
        基于內(nèi)存的地理信息訪問技術(shù)
        Linux線程實現(xiàn)技術(shù)研究
        么移動中間件線程池并發(fā)機制優(yōu)化改進
        上網(wǎng)本為什么只有1GB?
        国产精品毛片av毛片一区二区| 国产精品短视频| 青草青草久热精品视频国产4| av一区二区三区观看| 国产 精品 自在 线免费| 青青草97国产精品免费观看| 国产 中文 制服丝袜 另类| 亚洲一区二区三区新视频| 国产一级内射视频在线观看| 久久精品国产精品国产精品污| 日韩精品国产自在久久现线拍| 久久国产精品国产精品久久| 久久久免费看少妇高潮| 日本高清h色视频在线观看| 99久久免费国产精品2017| 亚洲av一区二区三区网站| 国产亚洲视频在线播放| 无码毛片视频一区二区本码| 97人妻视频妓女网| 国产精品国产三级国产不卡| 色噜噜亚洲男人的天堂 | 人与嘼交av免费| 日韩av中出在线免费播放网站| 亚洲中文中文字幕乱码| 全黄性性激高免费视频| 亚洲的天堂av无码| 国产一区二区精品网站看黄| 中文字幕国产亚洲一区| 丰满少妇a级毛片野外| 久久久久亚洲AV无码专| 亚洲一区二区三区精彩视频| 亚洲第一狼人天堂网亚洲av| 国产95在线 | 欧美| 日韩av无码午夜福利电影| 亚洲天堂av福利在线| 人妻少妇精品无码专区动漫| 国产精品青草视频免费播放| 国产麻豆极品高清另类| 欧美成人秋霞久久aa片 | 长腿丝袜在线观看国产| 熟女无套高潮内谢吼叫免费|