麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > 文庫 > 正文

建立在Tablestore的Wifi設(shè)備監(jiān)管系統(tǒng)架構(gòu)實現(xiàn)

2020-10-29 21:45:54
字體:
供稿:網(wǎng)友

Wifi設(shè)備監(jiān)管

公司通過監(jiān)管系統(tǒng)維護Wifi設(shè)備屬性、采集Wifi設(shè)備監(jiān)控數(shù)據(jù)。當(dāng)需要Wifi設(shè)備上、下線時,通過監(jiān)管系統(tǒng)操作完成設(shè)備的添加、下線,同時可通過系統(tǒng)修改、增加設(shè)備屬性信息,如:設(shè)備mac地址、設(shè)備型號、設(shè)備地理位置等。設(shè)備上線后,會定期向系統(tǒng)推送監(jiān)控數(shù)據(jù),從而完成設(shè)備監(jiān)控數(shù)據(jù)的采集。采集數(shù)據(jù)包含:cpu、內(nèi)存、連接數(shù)、Wan口流量與流速、2.4G與5G模塊的信道數(shù)據(jù)等。

通過分析監(jiān)控數(shù)據(jù)指標、分析設(shè)備運行狀態(tài),動態(tài)將問題設(shè)備的運行狀態(tài)修改為:預(yù)警、報警。借助系統(tǒng),網(wǎng)絡(luò)部門可以快速獲取問題設(shè)備列表、了解設(shè)備分布、查詢歷史監(jiān)控指標。同時,也可以精確鎖定老設(shè)備從而方便設(shè)備升級,或者為長期負載率較高的位置擴充Wifi設(shè)備提供數(shù)據(jù)依據(jù);

功能需求

1、管理Wifi設(shè)備,通過系統(tǒng)上線新設(shè)備、下線老設(shè)備;

2、系統(tǒng)擁有分組管理能力、標簽檢索能力;

3、高并發(fā)海量監(jiān)控數(shù)據(jù)采集能力;

4、管理所有設(shè)備的地理分布;

5、查詢某一區(qū)域內(nèi)所有設(shè)備的位置;

6、查詢【某設(shè)備】在【某段時間】【不同指標】的監(jiān)控數(shù)據(jù);

7、低成本持久化所有數(shù)據(jù),挖掘數(shù)據(jù)潛在價值 等等....

系統(tǒng)樣例,如下所示:官網(wǎng)控制臺地址:項目樣例

技術(shù)需求

通常,用戶在設(shè)計方案是會重點考慮以下四個主要的技術(shù)需求:

第一、需要有強大的查詢、統(tǒng)計能力,實現(xiàn)Wifi設(shè)備的管理;

第二、支撐設(shè)備高并發(fā)的監(jiān)控數(shù)據(jù)采集,數(shù)據(jù)庫需要強大的寫入性;

第三、數(shù)據(jù)持久化需求導(dǎo)致數(shù)據(jù)膨脹,但歷史監(jiān)控數(shù)據(jù)多為冷數(shù)據(jù),存儲成本需要盡可能低; 第四、監(jiān)控數(shù)據(jù)未來挖掘潛在價值較高,產(chǎn)品下游需要有較好的計算生態(tài);

表格存儲方案

表格存儲(Tablestore)在四個重要技術(shù)需求上完全滿足要求:

其一、表格存儲新商業(yè)化不久的多元索引(SearchIndex)功能支持多維檢索、GEO查詢等功能,完全滿足元數(shù)據(jù)管理需求;

其二、基于LSM tree打造的分布式NoSQL數(shù)據(jù)庫,可以輕松應(yīng)對海量高并發(fā),零運維輕松應(yīng)對數(shù)據(jù)量的不斷膨脹,理論上無上限;

其三、表格存儲按量計費,提供容量型、高性能型兩種實例類型,容量型對冷數(shù)據(jù)更適宜,提供了更低存儲成本;

其四、更重要的,表格存儲擁有較為完善的計算生態(tài),提供全、增量通道服務(wù),提供流、批一體的計算體系,對未來監(jiān)控數(shù)據(jù)價值挖掘提供渠道;

表格存儲在時序場景需求的技術(shù)點上擁有極高的匹配,而基于時序場景打造的時序模型(Timestream)更是將時序場景通用功能,封裝成易用的接口,使用戶更容易的基于表格存儲打造Wifi設(shè)備監(jiān)管系統(tǒng);

數(shù)據(jù)結(jié)構(gòu)設(shè)計

首先,我們在在表格存儲中抽象出兩類數(shù)據(jù),分別是meta類數(shù)據(jù)(設(shè)備元數(shù)據(jù))、data類數(shù)據(jù)(監(jiān)控數(shù)據(jù));下面對兩類數(shù)據(jù)做簡單介紹。

WiFi設(shè)備元數(shù)據(jù)

meta數(shù)據(jù)管理著用戶時間線的屬性信息,支持指標、標簽、屬性、地理位置、更新時間等參數(shù),模型會為所有屬性創(chuàng)建相應(yīng)的索引,提供多維度條件組合查詢(包含GEO查詢)。其中Identifier是時間線的標識,包含兩部分:name部分(監(jiān)控指標標識)、tags部分(固有不可變參數(shù)集合)。

在本樣例中,我們將“wifi”作為指標分類,mac地址作為不可變tag,而將其他屬性作為可變Attributes存放為屬性信息;

設(shè)備監(jiān)控數(shù)據(jù)

data數(shù)據(jù)管理著各個時間線的監(jiān)控狀態(tài)數(shù)據(jù),可以為量化數(shù)據(jù)、地理位置、文字表述任意類型。data數(shù)據(jù)按照+有序排列,因而同一時間線的所有數(shù)據(jù)基于時間有序,這種數(shù)據(jù)存儲方式,極大的提升了時間線的查詢效率。

我們將設(shè)備的十幾個監(jiān)控數(shù)據(jù)某一時間點的監(jiān)控數(shù)據(jù)存放為一行數(shù)據(jù),不同屬性對應(yīng)不同列;依據(jù)不同測監(jiān)控維度,用戶只需提供不同的columnToGet字段,獲取不同監(jiān)控維度的部分指標數(shù)據(jù),即可對應(yīng)不同監(jiān)控指標,如:WAN口流量:對應(yīng)wan_total_in與wan_total_out兩個字段;

讀、寫接口

寫數(shù)據(jù)

寫數(shù)據(jù)提供兩類接口:Wifi設(shè)備添加、監(jiān)控數(shù)據(jù)寫入

  • Wifi設(shè)備添加:如果新增一個Wifi設(shè)備,需要首先向meta表中插入一條設(shè)備meta數(shù)據(jù),通過metaTable.put(Meta)創(chuàng)建或修改meta信息;
  • 監(jiān)控數(shù)據(jù)寫入:創(chuàng)建完meta后,wifi設(shè)備端就可以定時、周期性地采集監(jiān)控數(shù)據(jù),并將數(shù)據(jù)推送、寫入到data表;模型設(shè)計上可支持多精度表管理,用戶可以根據(jù)自身需求管理多個精度的data數(shù)據(jù)

讀數(shù)據(jù)

與寫數(shù)據(jù)一樣,針對兩類數(shù)據(jù)提供了兩類讀接口:Wifi設(shè)備查詢、監(jiān)控數(shù)據(jù)讀取

  • Wifi設(shè)備查詢:根據(jù)設(shè)備分組、設(shè)備狀態(tài)、地理位置等多維度條件組合,獲取對應(yīng)wifi設(shè)備列表,掌握設(shè)備的最新狀態(tài);
  • 監(jiān)控數(shù)據(jù)讀取:基于單個meta的Identifier,獲取該設(shè)備某段時間內(nèi)、某一指標的監(jiān)控數(shù)據(jù)

核心代碼

SDK與樣例代碼

SDK:時序模型Timestream模型集成于表格存儲的SDK中,已在4.11.0版本中支持:

<dependency> <groupId>com.aliyun.openservices</groupId> <artifactId>tablestore</artifactId> <version>4.11.0</version></dependency>

代碼開源:https://github.com/aliyun/tablestore-examples/tree/master/demos/WifiMonitor

創(chuàng)建數(shù)據(jù)表

在創(chuàng)建完成實例后,用戶需要通過時序模型的sdk創(chuàng)建相應(yīng)的meta表、data表: 不同精度監(jiān)控數(shù)據(jù)存放不同表,用表名作區(qū)分,根據(jù)不同range的查詢,需要不同精度的監(jiān)控數(shù)據(jù),實例中僅用了一個精度,用戶可根據(jù)自身需求設(shè)計多個表;

private void init() { AsyncClient asyncClient = new AsyncClient(endpoint, accessKeyId, accessKeySecret, instance); TimestreamDBConfiguration conf = new TimestreamDBConfiguration("metaTableName"); TimestreamDBClient db = new TimestreamDBClient(asyncClient, conf);}public void createTable() { db.createMetaTable(Arrays.asList( new AttributeIndexSchema("group", AttributeIndexSchema.Type.KEYWORD), new AttributeIndexSchema("id", AttributeIndexSchema.Type.KEYWORD), new AttributeIndexSchema("status", AttributeIndexSchema.Type.KEYWORD), new AttributeIndexSchema("version", AttributeIndexSchema.Type.KEYWORD), new AttributeIndexSchema("location", AttributeIndexSchema.Type.GEO_POINT) )); db.createDataTable("dataTableName");}

數(shù)據(jù)寫入

數(shù)據(jù)寫入主要分兩部分,meta表添加新Wifi設(shè)備、data表采集設(shè)備監(jiān)控數(shù)據(jù)

添加新Wifi設(shè)備(meta表寫入)

//metaWriter對應(yīng)meta表,提供讀、寫接口TimestreamMetaTable metaWriter = db.metaTable();//identifier作為時間線的身份標識(unique),含:Name、Tags,TimestreamIdentifier identifier = new TimestreamIdentifier.Builder("wifi") .addTag("mac", "mock:mac:1:1") .build();//基于identifier創(chuàng)建meta對象,并為meta設(shè)置更多屬性,Attributes為屬性參數(shù)TimestreamMeta meta = new TimestreamMeta(identifier) .addAttribute("group", "group-1") .addAttribute("id", "id-1") .addAttribute("version", "v1.0") .addAttribute("status", "normal") .addAttribute("location", "30,120");//創(chuàng)建新的時間線,然后寫入監(jiān)控數(shù)據(jù)metaWriter.put(meta);

采集Wifi設(shè)備監(jiān)控數(shù)據(jù)(data表寫入)

//dataWriter分別對應(yīng)data表,提供讀、寫接口TimestreamDataTable dataWriter = db.dataTable("dataTableName");TimestreamMeta meta;//meta上一步已經(jīng)構(gòu)建//創(chuàng)建新的時間線,然后寫入監(jiān)控數(shù)據(jù)dataWriter.asyncWrite( meta.getIdentifier(),//Identifier identifier new Point.Builder(i, TimeUnit.SECONDS) .addField("cpu", 30) .addField("ram", 29) .addField("flash_used", 20) .addField("flash_total", 1048576) .build());

數(shù)據(jù)讀取

數(shù)據(jù)讀取分為兩類:Wifi設(shè)備列表查詢與設(shè)備監(jiān)控數(shù)據(jù)查詢

查詢Wifi設(shè)備列表(meta表讀取)

//reader對應(yīng)meta表,提供讀、寫接口,此處名字為突出讀功能TimestreamMetaTable metaReader = db.metaTable();//構(gòu)建篩選條件Filter filter = new AndFilter(Arrays.asList( Name.equal("wifi"), Tag.equal("mac", "mock:mac:1:1"), Attribute.inGeoDistance("location", "30,120", 100000)));Iterator<TimestreamMeta> iterator = metaReader .filter(filter) .fetchAll();while (iterator.hasNext()) { TimestreamMeta meta = iterator.next();//deal with metas}

獲取Wifi設(shè)備的監(jiān)控數(shù)據(jù)(data表讀取)

//dataWriter分別對應(yīng)data表,提供讀、寫接口TimestreamDataTable dataReader = db.dataTable("dataTableName");TimestreamMeta meta;//基于已獲取的meta列表,分別獲取每個時間線的有序監(jiān)控數(shù)據(jù)Iterator<Point> iterator = reader.get(meta.getIdentifier()) .select("flash_used", "flash_total")//設(shè)置返回的列 .timeRange(TimeRange.range(0, Long.MAX_VALUE, TimeUnit.SECONDS)) .fetchAll();while (iterator.hasNext()) { Point point = iterator.next();//deal with points long timestamp = point.getTimestamp(TimeUnit.MILLISECONDS);//毫秒單位時間戳 long flashUsed = point.getField("flash_used").asLong();//獲取該點long類型的數(shù)據(jù)大小監(jiān)控 long flashUotal = point.getField("flash_total").asLong();//獲取該點long類型的數(shù)據(jù)大小監(jiān)控}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产无遮挡一级毛片 | 国产午夜免费视频 | chinesehd天美原创xxxx | cosplay裸体福利写真 | 欧美性猛交一区二区三区精品 | 性少妇videosexfreexx入片 | 一区二区三区在线观看国产 | 黑人日比 | 久草视频2 | 宅男视频在线观看免费 | 91精品国产综合久久婷婷香 | 久色精品 | 91精品视频网址 | 国产亚洲欧美日韩高清 | 一区二区久久电影 | 羞羞视频免费视频欧美 | 91久久国产露脸精品国产 | 日韩av影片在线观看 | 久久久久久久久亚洲精品 | 亚洲精品欧美二区三区中文字幕 | 国产精品一区久久久久 | 成年人在线免费播放视频 | 欧美 国产 综合 | 懂色av懂色aⅴ精彩av | 精品国产乱码一区二区 | 在线播放黄色网址 | 最新国产毛片 | 久久免费视频7 | 欧美日韩国产中文字幕 | 一级免费毛片 | 黄色网址在线免费播放 | 免费国产在线视频 | 中文字幕一区二区三区四区 | 色戒在线版 | 99精品视频在线观看免费 | av在线影片| 黄色大片在线观看 | 久久视讯| 国产精品视频久久久 | 性欧美xxxx极品摘花 | 亚洲精品自在在线观看 |