




摘 要: 為了使傳統家居設備可以進行遠程遙控,開發了在家具傳統設備上引入無線組網技術,使其達到訪問和遠程控制的效果。針對在數據存儲中,傳統云存儲系統缺少靈活性,不透明,魯棒性不強,無法有效存儲、管理和維護大數據的問題,設計并實現了面向大數據的云存儲系統,通過邏輯控制模塊對家居系統各業務請求進行智能處理,利用用戶訪問模塊為用戶提供底層實現的各項功能,采用存儲模塊為家居系統提供透明的數據存取功能,利用文件讀/寫模塊將上層邏輯處理和底層存儲進行隔離,使所設計系統更加健壯。軟件設計過程中,給出數據云存儲程序代碼,實現大數據云存儲。實驗結果表明,新一代智能家居云存儲系統具有很高的可行性和實用性。
關鍵詞: 智能家居; 大數據存儲; 云存儲; 遠程遙控
中圖分類號: TN926?34; TP242 文獻標識碼: A 文章編號: 1004?373X(2016)10?0021?04
Design and implementation of big data cloud storage system for smart home
ZHAO Yan1, HUANG Weijian2
(1. Department of Computer Technology Beijing Polytechnic, Beijing 100176, China; 2. China Electronics Engineering Design Institute, Beijing 100142, China)
Abstract: In order to achieve the access and remote control of the traditional home equipments, the wireless network technology is introduced into the traditional home equipments. However, the traditional cloud storage system lacks flexibility, transparency, strong robustness, and cannot effectively store, manage and maintain the large data, so the design and implementation schemes for a big data cloud storage system are put forward. The smart processing of each business request to smart home systems is executed through the logic control module. The access module is used to provide the users with all the functions of the underlying implementation. The storage module is adopted to provides transparent data access functions for the users. The file read?write module is taken to isolate the upper logic processing from the underlying storage to make the designed system more robust. The data cloud storage program code is given for achievement of big data cloud storage. The experimental results show that the smart home cloud storage system of new generation has the high feasibility and practicability.
Keywords: smart home; big data storage; cloud storage; remote control
近年來,隨著計算機信息技術的逐漸發展和應用,云存儲技術成為一種新型的大數據存儲解決方案,被開發者和企業廣泛應用到眾多領域,以減少大數據管理和運維成本,同時降低大數據的沖擊[1?4]。智能家居是新一代家居領域的一個重要課題,其由于高度的智能化,所涉及的數據量較大,這也限制了一般存儲技術的應用,其特點導致適用于云存儲技術[5?6]。因此,對其的研究具有重要意義,已經成為相關學者研究的重點課題,受到越來越廣泛的關注[7?9]。
但是,當前的智能家居提出一種面向智能家居的大數據云存儲技術,結合智能家居數據存儲的特點,給出了存儲系統總體結構,詳細分析了系統各模塊的硬件結構,軟件設計過程中,在對智能家居大數據進行云存儲時同步給出數據云存儲程序代碼。仿真實驗結果表明,本文設計的系統具有很高的可行性和實用性。
1 系統設計
1.1 面向智能家居大數據云存儲系統總體邏輯設計
新一代的面向智能家居大數據云存儲系統主要由邏輯控制模塊、用戶訪問模塊、存儲模塊、文件讀/寫模塊和面向智能家居的大數據云存儲模塊。
1.2 智能家居云存儲系統硬件設計
1.2.1 邏輯控制模塊
邏輯控制模塊是整個面向智能家居大數據云存儲系統的核心,是邏輯處理的樞紐,各業務類請求均在該模塊中被處理,因為加入了模糊處理特征,其也被稱為模糊處理模塊。模糊處理模塊主要包括代理模塊、JettyServer模塊和元數據存儲模塊,詳細硬件結構如圖1所示
代理模塊接收用戶訪問塊的請求,再按照請求的數據和家居相關的數據類型分別處理。針對各業務類的請求,代理模塊會將該請求發送至JettyServer模塊中,對其處理結果進行接收,同時將接收到的結果發送至前端瀏覽器,實現對用戶請求的處理。
代理模塊與JettyServer模塊在對用戶請求進行處理的過程中,都會和用戶元數據的訪問相關,但只有JettyServer模塊才會和存儲模塊進行通信。為了達到系統并發性能的要求,可將JettyServer看作是服務器引擎,在JettyServer之上建立整個系統的處理邏輯。JettyServer主要包括Connector組件、Handler組件和線程池等。元數據存儲模塊保存有整個系統的元數據信息,主要由用戶信息、bucket信息、object信息等,是系統的關鍵部分。
1.2.2 用戶訪問模塊
用戶訪問模塊是智能家居中的用戶和云存儲系統交互的紐帶,新一代智能家居設計的面向大數據云存儲系統可利用該模塊透明的為用戶提供底層實現的各項功能。該模塊硬件結構圖如圖2所示。
用戶訪問模塊主要由Web前端訪問模塊和SDK訪問模塊組成。Web前端訪問模塊以瀏覽器的形式為用戶提供注冊、登陸、上傳下載文件等功能。SDK訪問模塊為用戶提供了訪問基本的文件上傳、下載、刪除等操作。SDK訪問模塊最大的特點為能夠上傳大于瀏覽器限制的大文件。
1.2.3 存儲單元模塊
存儲模塊為新一代智能家居云存儲系統提供了透明的數據存取功能,詳細結構如圖3所示。
為了節約成本,整個家居云存儲系統采用的服務器均較廉價。為了解決廉價服務器不穩定、準確率低的問題,新一代系統采用具有良好容錯能力、良好糾錯和故障檢測恢復機制的文件系統HDFS用于底層智能家居數據的存儲。HDFS在有效解決廉價服務器產生的弊端的同時,也充分利用了各種數據云存儲設備,大大降低了成本。
1.2.4 文件讀/寫模塊
文件讀/寫模塊主要負責將上層邏輯處理和底層存儲進行隔離,使本文設計系統更加健壯。該模塊硬件接口結構如圖4所示。
為了使上層模塊的應用更加順暢,新一代智能家居云存儲系統采用HDFS進行存儲訪問,設計了文件讀/寫模塊。該模塊對底層存儲系統HDFS的讀/寫接口進行封裝,獲取HDFS Operate接口,上層模塊可利用該接口對云存儲模塊進行訪問,實現了訪問接口的統一,屏蔽了存儲的細節,使系統結構化程度大大增強。
1.2.5 云存儲邏輯結構的設計
面向智能家居的大數據云存儲的邏輯結構是整個系統的關鍵,邏輯結構設計的合理性對從用戶訪問至關重要,模塊接收到的請求進行處理后,傳輸至存儲模塊,再由存儲模塊發送到面向智能家居的大數據云存儲模塊,在該模塊中實現大數據云存儲。詳細的云存儲邏輯結構如圖5所示。
在上述面向智能家居的大數據云存儲模塊硬件結構分析的基礎上,給出智能家居大數據云存儲的存儲實現流程,如圖6所示。依據圖6描述的流程圖,給出智能家居大數據云存儲實現代碼:
#include
#include
#include
#include
#define MAX 101
void sub(int a[],int b[],int p);
//函數功能:利用字符串實現超長存儲信息的裁剪
int la,lb,ra=1,rb=1;
char c1[MAX], c2[MAX];
void input(int a1[],int a2[])
{
int i,a=1,b=1;
printf(\"請輸入第一個數:\n\");
scanf (\"%s\", c1);
printf(\"請輸入第二個數:\n\");
scanf(\"%s\",c2);
la = strlen( c1 );
lb = strlen( c2 );
if(c1[0]==′-′) { la--; ra=?1;a=0;}
if(c2[0]==′-′) { lb--; rb=?1;b=0;}
for (i=0; i for (i=0; i } void add(int a[],int b[],int p) //存儲信息的添加 { int i,c[MAX+1]={0},d; if(ra*rb>0||p) { if(la>lb) d=la; else d=lb; for(i=0;i { c[i]=a[i]+b[i]+c[i]; c[i+1]=(int)c[i]/10; c[i]=(int)c[i]%10; } if(c[d])d++; if(ra<0p||ra<0) printf(\"-\"); for(i=d-1;i>=0;i--) printf(\"%d\",c[i]); } else sub(a,b,1); } void sub(int a[],int b[],int p) //存儲信息的存儲 { int i,h=0,c[MAX+1]={0},d; if(ra*rb>0||p) { if(la>lb) d=la; else { d=lb; for(i=d;a[i]<=b[i]i>=0;i--) if(a[i] h=1; }