情境 4:裝置感應器即時異常偵測和通知 - 使用 Amazon Kinesis 串流 AWS 上的資料解決方案

情境 4:裝置感應器即時異常偵測和通知

ABC4Logistics 公司將汽油、液化丙烷 (LPG) 和石腦油等高度易燃的石油產品從港口運往各個城市。數以百計的車輛安裝了多個感應器,用於監控位置、引擎温度、容器內温度、行駛速度、停車位置、道路狀況等資料。ABC4Logistics 的其中一個要求是即時監控引擎和容器的温度,並在發生任何異常情況時向駕駛員和車隊監控團隊發送提醒。為了即時偵測此類情況並產生提醒,ABC4Logistics 在 AWS 上實作以下架構。

ABC4Logistics 的裝置感應器即時異常偵測和通知架構

ABC4Logistics 的裝置感應器即時異常偵測和通知架構

來自裝置感應器的資料由 AWS IoT 閘道擷取,AWS IoT 規則引擎將在 Amazon Kinesis Data Streams 中提供串流資料。ABC4Logistics 可以透過 Kinesis Data Analytics,對 Kinesis Data Streams 中的串流資料執行即時分析。

ABC4Logistics 可以使用 Kinesis Data Analytics,偵測感應器的温度讀數是否在十秒內偏離正常讀數,並將記錄擷取到另一個 Kinesis Data Streams 執行個體中,從而識別異常記錄。然後,Amazon Kinesis Data Streams 會叫用 Lambda 函數,這些函數可以透過 Amazon SNS,將提醒傳送給駕駛員和車隊監控團隊。

Kinesis Data Streams 的資料也被推送到 Amazon Kinesis Data Firehose。Amazon Kinesis Data Firehose 將這些資料保存在 Amazon S3 中,允許 ABC4Logistics 對感應器資料執行批次或近乎即時的分析。ABC4Logistics 使用 Amazon Athena 查詢 S3 中的資料,而 Amazon QuickSight 可用於視覺化。對於長期資料保留,S3 生命週期政策可用於將資料封存到 Amazon S3 Glacier

接下來詳細介紹了此架構的重要組件。

Amazon Kinesis Data Analytics

Amazon Kinesis Data Analytics 使您能夠轉換和分析串流資料並即時回應異常情況。其是 AWS 上的無伺服器服務,這意味着 Kinesis Data Analytics 負責佈建,並彈性地擴展基礎設施以處理任何資料輸送量。這將消除串流基礎設施設定和管理所需的所有無差別繁重工作,並使您能夠花更多時間編寫串流應用程式。

您可以藉助 Amazon Kinesis Data Analytics,使用多個選項以互動方式查詢串流資料,包括標準 SQL、Java、Python 和 Scala 中的 Apache Flink 應用程式,並使用 Java 建置 Apache Beam 應用程式來分析資料串流。

這些選項為您提供使用特定方法的靈活性,具體取決於串流應用程式和來源/目標支援的複雜程度。以下章節討論了適用於 Flink 應用程式的 Kinesis Data Analytics 選項。

Apache Flink 是一種常見的開放原始碼架構和分散式處理引擎,可用於對未限制和有限制資料串流進行狀態運算。Apache Flink 旨在以記憶體內速度和大規模執行運算,並提供精確一次語意的支援。以 Apache Flink 為基礎的應用程式以容錯方式幫助實現低延遲和高輸送量。

您可以藉助適用於 Apache Flink 的 Amazon Kinesis Data Analytics,針對串流來源編寫和執行程式碼,以執行時間序列分析、提供即時儀表板以及建立即時指標,而無需管理複雜的分散式 Apache Flink 環境。您可以使用與自行託管 Flink 基礎設施的相同方式,使用高層級的 Flink 程式設計功能。

Apache Flink 的 Kinesis Data Analytics 使您能夠在 Java、Scala、Python 或 SQL 中建立應用程式來處理和分析串流資料。典型的 Flink 應用程式從輸入串流或資料位置 (也就是來源) 讀取資料,使用運算子或函數轉換/篩選條件或連接資料,並將資料存放在輸出串流或資料位置 (也就是接收)。

下面的架構圖表顯示 Kinesis Data Analytics Flink 應用程式支援的一些來源和接收。除了用於來源/接收的預先搭售連接器之外,您還可以將自訂連接器導入 Kinesis Data Analytics 上 Flink 應用程式的各種其他來源/接收。

Apache Flink 應用程式在 Kinesis Data Analytics 中實現即時串流處理

Apache Flink 應用程式在 Kinesis Data Analytics 中實現即時串流處理

開發人員可以使用他們偏好的 IDE 開發 Flink 應用程式,並透過 AWS Management Console 或 DevOps 工具,在 Kinesis Data Analytics 上部署這些應用程式。

Amazon Kinesis Data Analytics Studio

作為 Kinesis Data Analytics 服務的一部分, Kinesis Data Analytics Studio 可供客户以互動方式即時查詢資料串流,並使用 SQL、Python 和 Scala 輕鬆建置和執行串流應用程式。Studio 筆記本是由 Apache Zeppelin 提供支援。

您可以使用 Studio 筆記本,在筆記本環境中開發 Flink 應用程式程式碼,即時檢視程式碼的結果,並在筆記本中進行視覺化。您可以透過在 Kinesis Data Streams 和 Amazon MSK 主控台點擊,來建立由 Apache Zeppelin 和 Apache Flink 提供支援的 Studio 筆記本,也可以從 Kinesis Data Analytics 主控台進行啟動。

作為 Kinesis Data Analytics Studio 的一部分反覆開發程式碼後,您可以將筆記本作為 Kinesis Data Analytics 應用程式進行部署,在串流模式下連續執行,從來源讀取資料,寫入目的地,維護長時間執行的應用程式狀態,和根據來源串流的輸送量來自動擴展。稍早,客户將 Kinesis Data Analytics 用於 SQL 應用程式,對 AWS 上的即時串流資料進行此類互動式分析。

SQL 應用程式的 Kinesis Data Analytics 仍然可用,但若是新專案,AWS 建議您使用新的 Kinesis Data Analytics Studio。Kinesis Data Analytics Studio 兼具易用與進階分析功能,讓您幾分鐘內即可建置出複雜的串流處理應用程式。

為了使 Kinesis Data Analytics Flink 應用程式具有容錯能力,您可以使用檢查點和快照,如對 Apache Flink 的 Kinesis Data Analytics 實作容錯中所述。

Kinesis Data Analytics Flink 應用程式可用於編寫複雜的串流分析應用程式,例如具有資料處理精確一次語意的應用程式、檢查點功能,以及處理來自資料來源的資料,如 Kinesis Data Streams、Kinesis Data Firehose、Amazon MSK、Rabbit MQ 和包括自訂連接器的 Apache Cassandra。

在 Flink 應用程式中處理串流資料後,您就可以將資料保存到各種接收或目的地,如 Amazon Kinesis Data Streams、Amazon Kinesis Data Firehose、Amazon DynamoDB、Amazon OpenSearch Service、Amazon Timestream、Amazon S3 等。Kinesis Data Analytics Flink 應用程式還提供低於毫秒級的效能保證。

用於 Kinesis Data Analytics 的 Apache Beam 應用程式

Apache Beam 是一個用於處理串流資料的程式設計模型。Apache Beam 提供的可攜式 API 層,可用於建置複雜的資料並行處理管道;這些管道可以在各種引擎或 Flink、Spark Streaming、Apache Samza 等執行程式執行。

您可以將 Apache Beam 架構與 Kinesis Data Analytics 應用程式結合使用,以處理串流資料。使用 Apache Beam 的 Kinesis Data Analytics 應用程式使用 Apache Flink 執行程式來執行 Beam 管道。

總結

透過使用 AWS 串流服務 Amazon Kinesis Data Streams、Amazon Kinesis Data Analytics 和 Amazon Kinesis Data Firehose,

ABC4Logistics 可以偵測温度讀數中的異常模式,並即時通知駕駛員和車隊管理團隊,防止車輛完全故障或火災等重大事故。