IoT Kaa平台學習(二)

2022-09-13 10:30:11 字數 3273 閱讀 4327

在這片文章中,主要討論在kaa架構和邏輯設計下的功能性概念。

kaa iot平台由kaa server,kaa擴充套件和端點sdks組成。

kaa伺服器節點使用apache的zookeeper來與服務合作。互相連線的節點和特別的kaa例項組成了乙個kaa集群。kaa集群需要nosql和sql資料庫例項來儲存端點資料和原語。

位於集群中的kaa節點執行了control,operation和bootstrap服務的組合。

control服務

kaa控**務管理所有的系統資料,處理來自web ui和外部整合系統的api請求,並且向operaion服務傳送通知。控**務通過持續的接收來自zookeeper的資訊來維持乙個最新的可操作服務列表。除此之外,控**務執行嵌入的使用控**務api的管理web ui元件,來想使用者提供方便的基於web的介面來管理租戶,使用者賬戶,應用資料等。

為了支援高可用性,乙個kaa集群至少有兩個節點是使能控**務的。在高可用性模式中,其中的乙個控**務是活動的,另外乙個是待機模式。一旦活動的控**務失效了,zookeeper會喚醒其中乙個待機控**務並且將它公升級成為活動控**務。

操作服務

操作服務最基礎的角色就是與當前多個端點進行通訊。操作服務處理端點請求並且把資料傳送給他們。

為了橫向擴充套件,你可以設定乙個kaa集群的每乙個幾點都是操作服務使能的。在這個情況下,所有的操作服務的例項當前都是在執行的。如果乙個操作服務意外終止了,之前連線端點自動轉換到其他可用的操作服務中去。kaa伺服器在執行時可以重新負載均衡,所以在集群中路由端點到低負載的節點中的效率是非常高的。

引導程式服務

kaa bootstrap服務傳送關於操作服務連線引數的資訊到端點中。取決於配置的協議棧,連線引數可能包括ip位址,tcp埠,安全證書等。kaa sdk包含乙個在集群中預生成的bootstrao可用列表,他被用於生成sdk庫。在這個列表中的端點查詢bootstrap服務為當前可用操作服務取回連線。bootstrap服務通過和zookeeper服務合作來維持他們的可用操作服務的列表。

zookeeper

apache zookeeper使能在kaa集群節點之間高可靠性分布式合作。每乙個kaa節點持續的推送關於連線引數,使能的服務和回應的服務負載的資訊,其他kaa節點使用這個資訊去獲取他們兄弟的列表並且與他們進行通訊。活動的控**務在sdk生成期間使用關於可用bootstrap服務和他們連線引數的資訊。

sql database

sql資料庫例項被用於儲存租戶,應用,端點組合其他原語,他們不隨著端點的增加而增長。

乙個kaa集群的高可用性通過在ha模式下部署sql資料庫被實現了。kaa現在官方支援mariadb和postgresql最為嵌入的sql資料庫。

nosql database

nosql資料庫例項被用於儲存端點關係資料,這些資料隨著端點的增加成線性增長。

nosql資料庫節點可以和kaa節點一樣放在相同的為或虛擬機器上,並且為了這個系統的高可用性,他應該在ha模式下被部署。kaa官方支援apache cassandra和mongodb作為嵌入的nosql資料庫。

internode communications

kaa服務使用apache thirft來進行程序和節點之間的通訊。每乙個服務使用zookeeper包含關於他的兄弟的元資料。這個元資料報含關於thrift主機和埠的資訊。

kaa集群可以橫向和線性擴充套件;在kaa集群架構中沒有單一故障點。kaa操作和bootstrap服務是獨一無二的並且工作在主動-主動的ha模式下。其中乙個集群節點包含乙個活動的控**務。一旦節點發生故障,位於另外乙個節點的待機控**務被提公升變成活動的。kaa集群的高可用性也依賴於sql和nosql資料庫的ha。

kaa sdk在初始化期間偽隨機選擇bootstrap和操作服務例項。依賴於對kaa集群的請求發起者兩個負載均衡的方法被使用:kaa端點sdk或者是rest api。

端點sdk請求

kaa sdk在初始化過程中偽隨機選擇bootstrap和操作服務。然而,如果集群負載太重,端點的隨機分發可能是效率不高的。當乙個新的節點加入集群的時候,他在更新拓撲的時候,為了更好的效能,被要求重新均衡負載。

kaa服務使用主動負載均衡方法來構建一些端點來重新連線乙個不同的操作服務,因此平衡了節點之間的負載。使用演算法來使伺服器載入資料(連線的端點的數量,載入平均值等),該演算法被kaa節點公布作為輸入,並且定期的重新計算每乙個節點的權重值。然後,超負荷的節點被要求重定向到乙個不同的節點,一些端點被要求連線。

乙個相似的方法可以被採用,通過預定服務的方式來載入進乙個節點中,或者是在物理或虛擬機器上逐漸的移植集群。為了實現,你需要通過實現重新均衡負載藉口來設定乙個自定義的負載均衡策略。

rest api請求

對於rest api負載均衡,你可以使用現成的http負載均衡解決方案,例如nginx,aws elastic負載均衡,google cloud lb。

kaa例項是kaa平台乙個特殊的安裝,特也可以是單節點的,也可以是集群部署。

在kaa中的乙個應用定義了一系列資料模型,端點和kaa服務之間的通訊的型別和執行規則。kaa應用對特定的平台,作業系統或客戶端軟體實現是不具體的。例如,針對乙個壓力感測器的兩個韌體實現在arduino和stm32平台上是不一樣的,但是在kaa中可以被看做是相同的應用,只要他們報告相同結構的遙測資料。

kaa平台是多租戶的。乙個單一的kaa例項可以支援多個獨立的商務實體。應用屬於租戶,但是端點註冊在應用中。(看下圖)

乙個端點(ep)是乙個抽象,他代表著在乙個kaa部署中乙個分離的管理實體。通俗的將,乙個端點是在乙個kaa例項中的特別註冊的kaa客戶端。基於使用者例項,不同層的物理例項被認為是端點。在乙個個人設定中,乙個位於船隊追蹤應用中的單一的空氣質素感測器,乙個火車(儘管寫到這多個報告資料的感測器)可能只是乙個實體被認為是乙個端點。

為了通過不同的屬性區分端點,而不是使用乙個id,kaa使用端點配置檔案。

端點配置檔案是乙個自定義的結構化的資料集合,他描述了位於乙個應用中的乙個特定端點的特徵。每乙個端點配置檔案包括客戶端,服務端和系統部分。客戶端部分的初始化值是被客戶端開發者使用資料模式指定的。接著,客戶端端點配置檔案在乙個新的端點被註冊的時候生成。端點配置檔案的伺服器和系統部分資料是由kaa服務管理的。

配置檔案資料被用於將端點放到端點組中 - 由配置檔案介面卡定義的獨立的管理實體。配置檔案符合配置檔案介面卡的端點被自動變成這個組的成員。乙個端點可以同時位於無限個組中。

端點也與擁有者相關。基於應用,應有著可以是人,組或者是組織。

伯禹學習平台 深度學習筆記(二)

1.訓練誤差和泛化誤差 訓練誤差 模型在訓練資料集上表現出的誤差。泛化誤差 模型在任意乙個測試資料樣本上表現出的誤差的期望,並常常通過測試資料集上的誤差來近似。機器學習模型應關注降低泛化誤差。2.模型選擇 1 驗證資料集 測試資料集 訓練資料集之外的資料集,用於調參。2 k折交叉驗證 一種常用方法,...

監控平台(二)

cacti cacti 在英文中的意思是仙人掌的意思,cacti 是一套基於 php mysql snmp 及 rrdtool 開發的網路流量監測圖形分析工具。它通過 snmpget 來獲取資料,使用 rrdtool 繪畫圖形,而且你完全可以不需要了解 rrdtool 複雜的引數。它提供了非常強大的...

微信公眾平台開發學習筆記 二

經過上次的搭建後,自己嘗試做了乙個天氣的應答程式。目的主要是測試實時資訊的應答。主要用到了json和呼叫其餘 介面的知識,而在除錯的時候,主要用到了log4j的知識。將返回的輸入流轉換成字串 釋放資源 需要注意的是這裡呼叫的國家氣象局的介面獲取天氣資料,返回的其實是乙個json的陣列,要通過json...