最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2019年05月20日 10:34:11   作者:潭潭  
一般大公司會有許多園區(qū),園區(qū)內(nèi)會有不同部門的同事在一起辦公。每個(gè)園區(qū)內(nèi)都要配備大量的Wifi設(shè)備從而為園區(qū)同事提供方便的上網(wǎng)服務(wù)。因此,集團(tuán)需要一套完善的監(jiān)管系統(tǒng)維護(hù)所有的Wifi設(shè)備。需要的朋友來一起學(xué)習(xí)下吧

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

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

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

功能需求

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

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

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

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

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

6、查詢【某設(shè)備】在【某段時(shí)間】【不同指標(biāo)】的監(jiān)控?cái)?shù)據(jù);

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

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

技術(shù)需求

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

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

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

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

表格存儲方案

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

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

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

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

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

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

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

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

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

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

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

設(shè)備監(jiān)控?cái)?shù)據(jù)

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

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

讀、寫接口

寫數(shù)據(jù)

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

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

讀數(shù)據(jù)

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

  • Wifi設(shè)備查詢:根據(jù)設(shè)備分組、設(shè)備狀態(tài)、地理位置等多維度條件組合,獲取對應(yīng)wifi設(shè)備列表,掌握設(shè)備的最新狀態(tài);
  • 監(jiān)控?cái)?shù)據(jù)讀?。夯趩蝹€(gè)meta的Identifier,獲取該設(shè)備某段時(shí)間內(nèi)、某一指標(biāo)的監(jiān)控?cái)?shù)據(jù)

核心代碼

SDK與樣例代碼

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

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)控?cái)?shù)據(jù)

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

//metaWriter對應(yīng)meta表,提供讀、寫接口
TimestreamMetaTable metaWriter = db.metaTable();

//identifier作為時(shí)間線的身份標(biāo)識(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)建新的時(shí)間線,然后寫入監(jiān)控?cái)?shù)據(jù)
metaWriter.put(meta);

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

//dataWriter分別對應(yīng)data表,提供讀、寫接口
TimestreamDataTable dataWriter = db.dataTable("dataTableName");
TimestreamMeta meta;//meta上一步已經(jīng)構(gòu)建

//創(chuàng)建新的時(shí)間線,然后寫入監(jiān)控?cái)?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)控?cái)?shù)據(jù)查詢

查詢Wifi設(shè)備列表(meta表讀?。?/strong>

//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)控?cái)?shù)據(jù)(data表讀?。?/strong>

//dataWriter分別對應(yīng)data表,提供讀、寫接口
TimestreamDataTable dataReader = db.dataTable("dataTableName");
TimestreamMeta meta;//基于已獲取的meta列表,分別獲取每個(gè)時(shí)間線的有序監(jiān)控?cái)?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);//毫秒單位時(shí)間戳
 long flashUsed = point.getField("flash_used").asLong();//獲取該點(diǎn)long類型的數(shù)據(jù)大小監(jiān)控
 long flashUotal = point.getField("flash_total").asLong();//獲取該點(diǎn)long類型的數(shù)據(jù)大小監(jiān)控
}

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

相關(guān)文章

  • 只有兩個(gè)字段用一個(gè)sql語句查詢出某個(gè)學(xué)生的姓名、成績以及在表中的排名

    只有兩個(gè)字段用一個(gè)sql語句查詢出某個(gè)學(xué)生的姓名、成績以及在表中的排名

    這篇文章主要介紹了只有兩個(gè)字段用一個(gè)sql語句查詢出某個(gè)學(xué)生的姓名、成績以及在表中的排名,需要的朋友可以參考下
    2014-08-08
  • Navicat11全系列激活教程圖文詳解(Navicat注冊機(jī))

    Navicat11全系列激活教程圖文詳解(Navicat注冊機(jī))

    這篇文章主要介紹了Navicat11全系列激活教程圖文詳解(注冊機(jī)),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Hadoop2.X/YARN環(huán)境搭建--CentOS7.0系統(tǒng)配置

    Hadoop2.X/YARN環(huán)境搭建--CentOS7.0系統(tǒng)配置

    Hadoop原本來自于谷歌一款名為MapReduce的編程模型包。谷歌的MapReduce框架可以把一個(gè)應(yīng)用程序分解為許多并行計(jì)算指令,跨大量的計(jì)算節(jié)點(diǎn)運(yùn)行非常巨大的數(shù)據(jù)集。使用該框架的一個(gè)典型例子就是在網(wǎng)絡(luò)數(shù)據(jù)上運(yùn)行的搜索算法。
    2014-08-08
  • SQL數(shù)據(jù)庫的所有命令(函數(shù)、運(yùn)算符)匯總大全

    SQL數(shù)據(jù)庫的所有命令(函數(shù)、運(yùn)算符)匯總大全

    結(jié)構(gòu)化查詢語言(Structured?Query?Language)簡稱SQL,結(jié)構(gòu)化查詢語言是一種數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。sql語句就是對數(shù)據(jù)庫進(jìn)行操作的一種語言。
    2023-01-01
  • C#表格開發(fā)之DataGridView控件詳解

    C#表格開發(fā)之DataGridView控件詳解

    本文主要介紹了DataGridView控件的使用方法,包括手動填充數(shù)據(jù)、插入行、修改單元格值以及綁定數(shù)據(jù)源,通過DataGridView控件,可以方便地顯示和編輯表格數(shù)據(jù),適用于各種類型的數(shù)據(jù)源
    2024-12-12
  • 時(shí)序數(shù)據(jù)庫TDengine寫入查詢的問題分析

    時(shí)序數(shù)據(jù)庫TDengine寫入查詢的問題分析

    最近TDengine很火,本人也一直很早就有關(guān)注,其官方給出的測試性能結(jié)果很喜人,所以一開源,本人就進(jìn)行了相關(guān)調(diào)研,最終發(fā)現(xiàn)還是存在著一定的問題,期待后續(xù)的完善吧
    2022-03-03
  • 聚合函數(shù)和group by的關(guān)系詳解

    聚合函數(shù)和group by的關(guān)系詳解

    大家好,本篇文章主要講的是聚合函數(shù)和group by的關(guān)系詳解,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • mysql、mssql及oracle分頁查詢方法詳解

    mysql、mssql及oracle分頁查詢方法詳解

    這篇文章主要介紹了mysql、mssql及oracle分頁查詢方法,實(shí)例分析了數(shù)據(jù)庫分頁的實(shí)現(xiàn)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • 用計(jì)算列實(shí)現(xiàn)移動加權(quán)平均算法

    用計(jì)算列實(shí)現(xiàn)移動加權(quán)平均算法

    昨天有人讓我?guī)兔憘€(gè)算移動加權(quán)平均的SQL語句,我想了半天終于寫出來正確的了?,F(xiàn)在發(fā)出來供大家參考、討論。
    2009-09-09
  • SQL注入詳解(掃盲篇)

    SQL注入詳解(掃盲篇)

    剛進(jìn)公司的時(shí)候,研究的主要是SQL注入,因?yàn)橹皼]有搞過安全,所有費(fèi)了好長一段時(shí)間對SQL注入基本知識進(jìn)行了解。所以這篇文章并不是什么很深入的技術(shù)博客,或許應(yīng)該叫它‘ SQL注入掃盲 ’有需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。
    2017-01-01

最新評論

民丰县| 阆中市| 林周县| 赞皇县| 喀喇沁旗| 天长市| 德令哈市| 丁青县| 南城县| 钦州市| 石城县| 陈巴尔虎旗| 靖安县| 长垣县| 张家港市| 辽阳县| 沅江市| 阜新市| 海城市| 即墨市| 栾城县| 金坛市| 虹口区| 县级市| 贵定县| 台山市| 新巴尔虎左旗| 济源市| 且末县| 普安县| 武清区| 秭归县| 雷山县| 桑日县| 陇南市| 余姚市| 沙雅县| 长沙市| 县级市| 揭东县| 松阳县|