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

基于MongoDB和Asio的傳感器數(shù)據(jù)存儲系統(tǒng)設(shè)計

2016-07-10 08:41:11李曉
電子技術(shù)與軟件工程 2016年8期

摘 要:本文設(shè)計了一種海量傳感器數(shù)據(jù)存儲系統(tǒng),使用MongoDB作為數(shù)據(jù)庫,同時使用Boos.Asio網(wǎng)絡(luò)庫應(yīng)對終端高并發(fā)請求。

【關(guān)鍵詞】MongoDB Asio 傳感器數(shù)據(jù) 存儲系統(tǒng)

1 引言

在物聯(lián)網(wǎng)當中,每個終端節(jié)點每隔幾秒鐘就會將多個傳感器采集的數(shù)據(jù)傳輸?shù)椒?wù)器中,在大量終端節(jié)點的情況下會產(chǎn)生海量的數(shù)據(jù)。傳統(tǒng)關(guān)系型數(shù)據(jù)庫已經(jīng)無法滿足海量數(shù)據(jù)的存儲和管理,MongoDB是專門為解決海量數(shù)據(jù)而產(chǎn)生的,本系統(tǒng)使用MongoDB存儲海量傳感器數(shù)據(jù)。服務(wù)器端必須能夠處理大量終端節(jié)點的高并發(fā)請求,本系統(tǒng)使用Boost.Asio網(wǎng)絡(luò)庫應(yīng)對終端海量高并發(fā)請求。

2 MongoDB及其部署

2.1 MongoDB簡介

MongoDB的文檔、集合相當于關(guān)系型數(shù)據(jù)庫中的行和表,其文檔使用BSON格式存儲,其典型格式如:{ id:123,temperature:23, humidity: 60}。可見其非常適合物聯(lián)網(wǎng)終端節(jié)點的傳感器數(shù)據(jù)的存儲。

MongoDB通過分片(Shard)和副本集(replica set)實現(xiàn)對數(shù)據(jù)的備份和高性能處理。分片,就是將一份數(shù)據(jù)分成多個片段,每個分片儲存不同的部分,分片不僅分擔了數(shù)據(jù)在硬盤的存儲,還分擔了數(shù)據(jù)操作對機器內(nèi)存、CPU、網(wǎng)絡(luò)的IO和硬盤的讀寫壓力。如圖1所示。

2.2 MongoDB集群部署

典型的MongoDB集群部署模型如圖1所示。每個分片就是mongod程序的實例,在進行數(shù)據(jù)的增刪查改操作時需要通過mongos程序?qū)⒄埱蠓职l(fā)到對應(yīng)的分片上,mongos起到了路由的功能,它需要從配置服務(wù)器(config server)讀分片和路由等元數(shù)據(jù)信息。replica set就是數(shù)據(jù)的備份,也是mongod程序的實例。在生產(chǎn)環(huán)境下根據(jù)業(yè)務(wù)的需求來確定服務(wù)器的數(shù)量和mongos、mongod以及config server的數(shù)量。在程序連接數(shù)據(jù)庫時,只要連接mongos的地址和端口即可。

3 程序設(shè)計

本程序的主要功能是處理終端海量的高并發(fā)請求,將數(shù)據(jù)解析后寫入MongoDB數(shù)據(jù)庫。

3.1 Boost.Asio簡介

Boost.Asio是一款非常優(yōu)秀的C++開源網(wǎng)絡(luò)庫,支持同步編程和異步編程,能夠構(gòu)建出能夠承受數(shù)千并發(fā)連接的應(yīng)用程序,并且不必涉及顯式鎖定和線程并發(fā)模型,從而避免使用多線程編程帶來的死鎖、條件競爭等。

3.2 配置模塊和日志模塊設(shè)計

在程序中,服務(wù)器端口號、MongoDB集群地址、程序并發(fā)執(zhí)行線程數(shù)等配置信息采用JSON格式文件存儲。使用Boost庫中的property_tree作為程序解析JSON文件的工具。日志可以幫助程序員在開發(fā)中快速定位bug,本程序使用boost::log記錄日志。

3.3 MongoDB模塊設(shè)計

在高并發(fā)請求下,為避免每次請求到來頻繁連接和關(guān)閉數(shù)據(jù)庫,MongoDB的C++驅(qū)動提供了線程安全的連接池。本模塊設(shè)計了Mymongo類,內(nèi)部封裝了mongo::ScopedDBConnection類,實例化該類,便獲得一個數(shù)據(jù)庫連接。在Mymongo類的構(gòu)造函數(shù)中完成對數(shù)據(jù)庫的連接認證等,在析構(gòu)函數(shù)中釋放連接到連接池。本程序只需要將終端數(shù)據(jù)插入到數(shù)據(jù)庫中,因此Mymongo類只實現(xiàn)了數(shù)據(jù)的插入功能。

3.4 請求處理模塊

本模塊實現(xiàn)了Service類,包含start()、accept_handler()、read_handler()三個成員函數(shù)。使用該類時,其執(zhí)行流程如圖2所示:首先執(zhí)行其start成員函數(shù),在函數(shù)中采用異步accept方式等待連接到來,其回調(diào)函數(shù)為accept_handler,當連接到來后,執(zhí)行回調(diào)函數(shù),在其中采用異步方式讀取套接字,并注冊回調(diào)函數(shù)read_handler,因為是異步讀取,不等待讀取完畢,再次調(diào)用start函數(shù),等待下一個連接到來。當套接字讀取完畢后,會調(diào)用read_handler,在函數(shù)中會解析終端發(fā)來的請求,并使用Mymongo類將數(shù)據(jù)寫入MongoDB數(shù)據(jù)庫。如圖2所示。

3.5 io_service模型選擇

io_service類是Boost.Asio的核心,相當于前攝器模式中的Proactor角色,asio的任何操作都需要其參與。在主函數(shù)中首先實例化一個io_service對象,在實例化Service對象時作為其參數(shù),啟動Service對象的start()函數(shù)后,在多個線程中調(diào)用這個io_service對象的run()函數(shù)。這相當于在多個線程中同時阻塞等待異步操作的完成,當有異步操作完成時,便會調(diào)用相應(yīng)的回調(diào)函數(shù)。這是其最為常用的模型,可以編寫出非常健壯的應(yīng)用程序,本程序選擇一個io_service實例多個線程的模型。

4 結(jié)語

本文所設(shè)計的傳感器數(shù)據(jù)存儲系統(tǒng),使用了MongoDB數(shù)據(jù)庫存儲管理海量數(shù)據(jù),并使用Boost.Asio網(wǎng)絡(luò)庫的異步編程方式,配合多線程技術(shù),編寫了能夠接收海量高并發(fā)請求的服務(wù)器端程序,在程序中使用MongoDB連接池來連接數(shù)據(jù)庫,避免資源的浪費。

參考文獻

[1]郭匡宇.基于MongoDB的傳感器數(shù)據(jù)分布式存儲的研究與應(yīng)用[D].南京郵電大學,2013.

[2]MongoDB.sharding. https://docs.mongodb.org/manual/core/sharding-introduction/.

[3]Boost.Asio. http://www.boost.org/doc/libs/1_57_0/doc/html/boost_asio.html.

作者簡介

李曉(1989-),男,現(xiàn)為中國海洋大學信息科學與工程學院信號與信息處理專業(yè)在讀研究生。

作者單位

中國海洋大學信息科學與工程學院 山東省青島市 266100

主站蜘蛛池模板: 久久国产精品电影| 波多野结衣一区二区三视频| 精品夜恋影院亚洲欧洲| 日韩欧美国产三级| 亚洲精品自拍区在线观看| 日本午夜在线视频| 亚洲美女视频一区| 99精品视频在线观看免费播放| 亚洲精品视频在线观看视频| 91亚洲影院| 中国美女**毛片录像在线| 免费jizz在线播放| AV无码国产在线看岛国岛| 亚洲 日韩 激情 无码 中出| www.91中文字幕| 国产欧美精品一区二区| 国产理论最新国产精品视频| 在线国产欧美| 天堂成人在线视频| 亚洲国语自产一区第二页| 国产va在线观看| 91精品国产一区自在线拍| 天天综合网亚洲网站| 激情六月丁香婷婷| 久草视频精品| 97国产精品视频人人做人人爱| 国内精品视频| 国产成人一二三| 九九热免费在线视频| 亚洲AV一二三区无码AV蜜桃| 色妞永久免费视频| 58av国产精品| 久久午夜影院| 国产成人AV男人的天堂| 精品乱码久久久久久久| 国产白浆视频| 国产亚洲精品自在久久不卡 | 欧美亚洲国产精品久久蜜芽| 色AV色 综合网站| 亚洲乱伦视频| 国产精品亚洲精品爽爽| 日韩人妻少妇一区二区| 亚洲日本中文综合在线| 精品国产电影久久九九| 色爽网免费视频| 一级成人a做片免费| 亚洲AⅤ无码国产精品| 国产精品熟女亚洲AV麻豆| 成人一级免费视频| 亚洲午夜天堂| 99视频精品在线观看| 自拍偷拍欧美日韩| 在线人成精品免费视频| 在线精品亚洲一区二区古装| 午夜视频免费试看| 免费a级毛片视频| 国产精品粉嫩| 欧美翘臀一区二区三区| 最新国产在线| 一级全免费视频播放| 国产美女人喷水在线观看| 亚洲欧美不卡中文字幕| 97se亚洲综合不卡| 午夜在线不卡| 性欧美久久| 亚洲无码37.| 国产精品无码一区二区桃花视频| 亚洲成人手机在线| 在线观看91精品国产剧情免费| 成年看免费观看视频拍拍| 久久久91人妻无码精品蜜桃HD| 久久午夜夜伦鲁鲁片不卡| 亚洲国产日韩一区| 伊人久综合| 亚洲福利视频一区二区| 婷婷久久综合九色综合88| 伊人久综合| 国产精品99在线观看| 美女内射视频WWW网站午夜 | 精品国产免费观看| 全裸无码专区| 婷婷色狠狠干|