一種基于物聯(lián)網(wǎng)的海量存儲系統(tǒng)及存儲方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及物聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別涉及一種基于物聯(lián)網(wǎng)的海量存儲系統(tǒng)及存儲方法。
【背景技術(shù)】
[0002]物聯(lián)網(wǎng)是一個基于互聯(lián)網(wǎng)、傳統(tǒng)電信網(wǎng)等信息承載體,讓所有能夠被獨立尋址的普通物理對象實現(xiàn)互聯(lián)互通的網(wǎng)絡(luò)。
[0003]網(wǎng)關(guān)又稱網(wǎng)間連接器、協(xié)議轉(zhuǎn)換器。網(wǎng)關(guān)在傳輸層上以實現(xiàn)網(wǎng)絡(luò)互連,是最復雜的網(wǎng)絡(luò)互連設(shè)備,僅用于兩個高層協(xié)議不同的網(wǎng)絡(luò)互連。物聯(lián)網(wǎng)網(wǎng)關(guān)通常用于物聯(lián)網(wǎng)與互聯(lián)網(wǎng)之間的協(xié)議轉(zhuǎn)換。在10萬臺網(wǎng)關(guān)和10萬App用戶場景下,每秒鐘網(wǎng)關(guān)上報1167次狀態(tài)更新,每秒鐘觸發(fā)3333次聯(lián)動。在10萬網(wǎng)關(guān)情況下,一年就有36T的數(shù)據(jù),數(shù)據(jù)量非常龐大,并且隨著業(yè)務(wù)的發(fā)展,還在不斷壯大,數(shù)據(jù)處理量非常大?,F(xiàn)有的數(shù)據(jù)存儲系統(tǒng)不支持數(shù)據(jù)的水平擴展,不支持數(shù)據(jù)處理的水平擴展,處理能力非常有限,處理速度慢。
【發(fā)明內(nèi)容】
[0004]針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明的目的是提供一種基于物聯(lián)網(wǎng)的海量存儲系統(tǒng)及存儲方法。
[0005]本發(fā)明是通過以下技術(shù)方案實現(xiàn)的:
[0006]本發(fā)明提供一種基于物聯(lián)網(wǎng)的海量存儲系統(tǒng),其包括:多個高速緩存節(jié)點,用于存儲熱點數(shù)據(jù);
[0007]多個數(shù)據(jù)庫節(jié)點,每個所述數(shù)據(jù)庫節(jié)點包括一個主服務(wù)器和多個備服務(wù)器,用于存儲溫和數(shù)據(jù);
[0008]分布式文件系統(tǒng),用于存儲冷數(shù)據(jù)。
[0009]較佳地,所述高速緩存節(jié)點為Redis節(jié)點。
[0010]較佳地,所述數(shù)據(jù)庫節(jié)點為MySQL節(jié)點。
[0011]較佳地,所述分布式計算節(jié)點為HDinsight節(jié)點。
[0012]本發(fā)明還提供一種基于物聯(lián)網(wǎng)的海量存儲方法,其包括以下流程:
[0013]Fll:熱點數(shù)據(jù)存儲于高速緩存節(jié)點中;
[0014]F12:溫和數(shù)據(jù)通過網(wǎng)關(guān)Id進行水平切分,分別存儲于每個數(shù)據(jù)庫節(jié)點中的一個主服務(wù)器和多個備服務(wù)器中;
[0015]F13:冷數(shù)據(jù)存儲于分布式文件系統(tǒng)中;
[0016]上述流程不分先后順序,也可以同時進行。
[0017]較佳地,所述流程FlI具體為:熱點數(shù)據(jù)通過一致性hash算法存儲于Redis節(jié)點。
[0018]較佳地,所述流程F12具體為:溫和數(shù)據(jù)通過網(wǎng)關(guān)Id進行水平切分,和網(wǎng)關(guān)相關(guān)的設(shè)備也按照網(wǎng)關(guān)Id水平切分,用戶和App不進行切分,在每個數(shù)據(jù)庫節(jié)點中的一個主服務(wù)器和多個備服務(wù)器中分別存儲一份。
[0019]較佳地,所述流程F12還包括:數(shù)據(jù)庫節(jié)點按照每預(yù)定時間進行分區(qū)存放。
[0020]較佳地,所述流程F13具體為:冷數(shù)據(jù)通過HDinsight實現(xiàn)MapReduce算法,存儲于 Azure 的 blockblob 里。
[0021]相較于現(xiàn)有技術(shù),本發(fā)明具有以下優(yōu)點:
[0022]本發(fā)明提供的基于物聯(lián)網(wǎng)的海量存儲系統(tǒng)存儲方法,結(jié)合Redis高速緩存,Mysql數(shù)據(jù)庫水平切分,以及HDinsight實現(xiàn)分布式計算,從而解決物聯(lián)網(wǎng)的海量存儲問題;
[0023](I) ,Redis高速緩存節(jié)點可以不停機線性擴展,新增或減少節(jié)點,不影響已經(jīng)緩存的數(shù)據(jù);
[0024](2)、由于流水數(shù)據(jù)都和網(wǎng)關(guān)相關(guān),既保證了切分的有效性,也實現(xiàn)了切分的簡單性;
[0025]3)、冷數(shù)據(jù)分布式統(tǒng)計算法和實時系統(tǒng)分開,從而保障實時系統(tǒng)性能。
[0026]當然,實施本發(fā)明的任一產(chǎn)品并不一定需要同時達到以上所述的所有優(yōu)點。
【附圖說明】
[0027]下面結(jié)合附圖對本發(fā)明的實施方式作進一步說明:
[0028]圖1為本發(fā)明的Redis節(jié)點的架構(gòu)圖;
[0029]圖2為本發(fā)明的數(shù)據(jù)庫節(jié)點的架構(gòu)圖;
[0030]圖3為本發(fā)明的分布式統(tǒng)計算法的流程圖。
[0031]符號說明:
[0032]1-Redis節(jié)點,2-數(shù)據(jù)庫節(jié)點;
[0033]11-第一 Redis 節(jié)點,12-第二 Redis 節(jié)點;
[0034]21-第一數(shù)據(jù)庫節(jié)點,22-第二數(shù)據(jù)庫節(jié)點,23-第三數(shù)據(jù)庫節(jié)點;
[0035]111-第一主 Redis 節(jié)點,112-第一備 Redis 節(jié)點,121-第二主 Redis 節(jié)點,122-第二備Redis節(jié)點;
[0036]211-第一主服務(wù)器,212-第一備服務(wù)器,221-第二主服務(wù)器,222-第二備服務(wù)器,231-第三主服務(wù)器,232-第三備服務(wù)器。
【具體實施方式】
[0037]下面對本發(fā)明的實施例作詳細說明,本實施例在以本發(fā)明技術(shù)方案為前提下進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
[0038]實施例1:
[0039]結(jié)合圖1-圖2,本實施例詳細描述本發(fā)明的基于物聯(lián)網(wǎng)的海量存儲系統(tǒng),其包括:多個Redis節(jié)點,每個Redis節(jié)點實現(xiàn)主機存儲key-value,用于熱點數(shù)據(jù)存儲;客戶端通過一致性hash算法,把緩存數(shù)據(jù)分布到不同的節(jié)點上,并保證新增或減少節(jié)點,不影響已經(jīng)緩存的數(shù)據(jù)。當主機宕機時,備機自動起來,其結(jié)構(gòu)如圖1所示,此處以兩個Redis節(jié)點I為例,分別為第一 Redis節(jié)點11和第二 Redis節(jié)點12,其中:第一 Redis節(jié)點11包括第一 Redis主節(jié)點111和第一 Redis備節(jié)點112 ;第二 Redis節(jié)點12包括第二 Redis主節(jié)點121和第二 Redis備節(jié)點122。APP對key做一致性hash算法,定位到具體的Redis節(jié)點,然后就可以存儲數(shù)據(jù)。同時Redis主節(jié)點會同步一份數(shù)據(jù)到備節(jié)點。
[0040]多個數(shù)據(jù)庫節(jié)點2,每個數(shù)據(jù)庫節(jié)點包括一個主服務(wù)器和多個備服務(wù)器,用于存儲溫和數(shù)據(jù);所有的流水數(shù)據(jù)都是和網(wǎng)關(guān)相關(guān)的,所以按照網(wǎng)關(guān)ID對所有的流水數(shù)據(jù)進行切分,其他元數(shù)據(jù),保證每個數(shù)據(jù)庫都有一份,極大的減少查詢聚合的復雜性;主服務(wù)器和備服務(wù)器之間即解決的單點問題,讀數(shù)據(jù)從備服務(wù)器讀,其結(jié)構(gòu)如圖2所示,此處以三個數(shù)據(jù)庫節(jié)點2為例,分別為第一數(shù)據(jù)庫節(jié)點21、第二數(shù)據(jù)庫節(jié)點22和第三數(shù)據(jù)庫節(jié)點,第一數(shù)據(jù)庫節(jié)點21包括一第一主服務(wù)器211和三個第一備服務(wù)器212,第二數(shù)據(jù)庫節(jié)點22包括一第二主服務(wù)器221和三個第二備服務(wù)器222,第三數(shù)據(jù)庫節(jié)點23包括一第三主服務(wù)器231和三個第三備服務(wù)器232。APP根據(jù)網(wǎng)關(guān)ID,Hash到具體某一節(jié)點數(shù)據(jù)庫。節(jié)點內(nèi)的主備數(shù)據(jù)庫通過數(shù)據(jù)庫自己的備份方案實現(xiàn)數(shù)據(jù)同步,數(shù)據(jù)查詢和一些聚合運算通過開源工具“變形蟲”實現(xiàn)。
[0041]分布式文件系統(tǒng),用于存儲冷數(shù)據(jù);通過HDinsight實現(xiàn)MapReduce算法。
[0042]實施例2:
[0043]結(jié)合圖1-圖3的存儲方案,本實施例詳細描述本發(fā)明的基于物聯(lián)網(wǎng)的海量存儲方法,其包括以下流程:
[0044]Fll:熱點數(shù)據(jù)存儲于高速緩存節(jié)點中。
[0045]F12:溫和數(shù)據(jù)通過網(wǎng)關(guān)Id進行水平切分,分別存儲于每個數(shù)據(jù)庫節(jié)點中的一個主服務(wù)器和多個備服務(wù)器中;
[0046]F13:冷數(shù)據(jù)存儲于分布式文件系統(tǒng)中;
[0047]上述流程不分先后順序,也可以同時進行。
[0048]其中:
[0049]Fll:緩存每個設(shè)備的最新狀態(tài),緩存每個設(shè)備用戶的元數(shù)據(jù);
[0050]F12:連接主服務(wù)器讀取二進制日志,提取發(fā)生在所述主服務(wù)器上的行插入事件、解碼事件,提取數(shù)據(jù),并將其追加到分布式文件系統(tǒng)中的一個文本文件中;
[0051]F13:把前一段時間內(nèi)的數(shù)據(jù)分配到不同的作業(yè)點,按產(chǎn)品需求進行不同的MapReduce計算,得到輸出結(jié)果,包括:設(shè)備運行時段分析、用戶使用設(shè)備分析等大數(shù)據(jù)。
[0052]以上對本發(fā)明的具體實施例進行了描述。需要理解的是,本發(fā)明并不局限于上述特定實施方式,本領(lǐng)域技術(shù)人員可以在權(quán)利要求的范圍內(nèi)做出各種變形或修改,這并不影響本發(fā)明的實質(zhì)內(nèi)容。
【主權(quán)項】
1.一種基于物聯(lián)網(wǎng)的海量存儲系統(tǒng),其特征在于,包括:多個高速緩存節(jié)點,用于存儲熱點數(shù)據(jù); 多個數(shù)據(jù)庫節(jié)點,每個所述數(shù)據(jù)庫節(jié)點包括一個主服務(wù)器和多個備服務(wù)器,用于存儲溫和數(shù)據(jù); 分布式文件系統(tǒng),用于存儲冷數(shù)據(jù)。2.根據(jù)權(quán)利要求1所述的海量存儲系統(tǒng),其特征在于,所述高速緩存節(jié)點為Redis節(jié)點。3.根據(jù)權(quán)利要求1所述的海量存儲系統(tǒng),其特征在于,所述數(shù)據(jù)庫節(jié)點為MySQL節(jié)點。4.根據(jù)權(quán)利要求1所述的海量存儲系統(tǒng),其特征在于,所述分布式文件系統(tǒng)為AzureBlock Blob05.一種基于物聯(lián)網(wǎng)的海量存儲方法,其特征在于,包括以下流程: Fll:熱點數(shù)據(jù)存儲于高速緩存節(jié)點中; F12:溫和數(shù)據(jù)通過網(wǎng)關(guān)Id進行水平切分,分別存儲于每個數(shù)據(jù)庫節(jié)點中的一個主服務(wù)器和多個備服務(wù)器中; F13:冷數(shù)據(jù)存儲于分布式文件系統(tǒng)中; 上述流程不分先后順序,也可以同時進行。6.根據(jù)權(quán)利要求5所述的海量存儲方法,其特征在于,所述流程Fll具體為:熱點數(shù)據(jù)通過一致性hash算法存儲于Redis節(jié)點。7.根據(jù)權(quán)利要求5所述的海量存儲方法,其特征在于,所述流程F12具體為:溫和數(shù)據(jù)通過網(wǎng)關(guān)Id進行水平切分,和網(wǎng)關(guān)相關(guān)的設(shè)備也按照網(wǎng)關(guān)Id水平切分,用戶和App不進行切分,在每個數(shù)據(jù)庫節(jié)點中的一個主服務(wù)器和多個備服務(wù)器中分別存儲一份。8.根據(jù)權(quán)利要求7所述的海量存儲方法,其特征在于,所述流程F12還包括:數(shù)據(jù)庫節(jié)點按照每預(yù)定時間進行分區(qū)存放。9.根據(jù)權(quán)利要求5所述的海量存儲方法,其特征在于,所述流程F13具體為:冷數(shù)據(jù)通過 HDinsight 實現(xiàn) MapReduce 算法,存儲于 Azure 的 blockblob 里。
【專利摘要】本發(fā)明提供了一種基于物聯(lián)網(wǎng)的海量存儲系統(tǒng)及存儲方法,該系統(tǒng)包括:多個高速緩存節(jié)點,用于存儲熱點數(shù)據(jù);多個數(shù)據(jù)庫節(jié)點,每個所述數(shù)據(jù)庫節(jié)點包括一個主服務(wù)器和多個備服務(wù)器,用于存儲溫和數(shù)據(jù);分布式文件系統(tǒng),用于存儲冷數(shù)據(jù)。該方法包括:熱點數(shù)據(jù)存儲于高速緩存節(jié)點中;溫和數(shù)據(jù)通過網(wǎng)關(guān)Id進行水平切分,分別存儲于每個數(shù)據(jù)庫節(jié)點中的一個主服務(wù)器和多個備服務(wù)器中;冷數(shù)據(jù)存儲于分布式文件系統(tǒng)中;上述流程不分先后順序,也可以同時進行。本發(fā)明的海量存儲系統(tǒng)及方法支持海量數(shù)據(jù)的水平擴展,且支持數(shù)據(jù)處理的水平擴展,存儲及處理速度非??臁?br>【IPC分類】G06F17/30
【公開號】CN105138673
【申請?zhí)枴緾N201510566048
【發(fā)明人】馬延文
【申請人】浙江風向標科技有限公司
【公開日】2015年12月9日
【申請日】2015年9月8日