Przetwarzanie w czasie rzeczywistym dotyczy strumieni danych przechwytywanych w czasie rzeczywistym i przetwarzanych z minimalnym opóźnieniem w celu generowania raportów w czasie rzeczywistym (lub niemal w czasie rzeczywistym) lub automatycznych odpowiedzi. Na przykład rozwiązanie do monitorowania ruchu w czasie rzeczywistym może używać danych czujników do wykrywania dużych ilości ruchu. Te dane mogą służyć do dynamicznego aktualizowania mapy w celu pokazania przeciążenia lub automatycznego inicjowania pasów o wysokim zajętości lub innych systemów zarządzania ruchem.
Przetwarzanie w czasie rzeczywistym jest definiowane jako przetwarzanie nieprzewiązanego strumienia danych wejściowych, z bardzo krótkimi wymaganiami dotyczącymi opóźnienia przetwarzania — mierzonymi w milisekundach lub sekundach. Te dane przychodzące są zwykle dostarczane w formacie nieustrukturyzowanym lub częściowo ustrukturyzowanym, takim jak JSON, i mają te same wymagania dotyczące przetwarzania wsadowego, ale z krótszymi okresami zwrotu w celu obsługi zużycia w czasie rzeczywistym.
Przetworzone dane są często zapisywane w analitycznym magazynie danych, który jest zoptymalizowany pod kątem analizy i wizualizacji. Przetworzone dane można również pozyskiwać bezpośrednio do warstwy analizy i raportowania na potrzeby analizy, analizy biznesowej i wizualizacji pulpitu nawigacyjnego w czasie rzeczywistym.
Wyzwania
Jednym z największych wyzwań związanych z przetwarzaniem w czasie rzeczywistym jest pozyskiwanie, przetwarzanie i przechowywanie komunikatów w czasie rzeczywistym, szczególnie w przypadku dużych woluminów. Przetwarzanie musi odbywać się w taki sposób, aby nie blokował potoku pozyskiwania. Magazyn danych musi obsługiwać zapisy o dużej ilości. Innym wyzwaniem jest możliwość szybkiego działania na danych, takich jak generowanie alertów w czasie rzeczywistym lub prezentowanie danych na pulpicie nawigacyjnym w czasie rzeczywistym (lub niemal w czasie rzeczywistym).
Architektura
Architektura przetwarzania w czasie rzeczywistym ma następujące składniki logiczne.
Pozyskiwanie komunikatów w czasie rzeczywistym. Architektura musi zawierać sposób przechwytywania i przechowywania komunikatów w czasie rzeczywistym, które mają być używane przez użytkownika przetwarzania strumieniowego. W prostych przypadkach tę usługę można zaimplementować jako prosty magazyn danych, w którym nowe komunikaty są deponowane w folderze. Jednak często rozwiązanie wymaga brokera komunikatów, takiego jak Azure Event Hubs, który działa jako bufor komunikatów. Broker komunikatów powinien obsługiwać przetwarzanie skalowane w poziomie i niezawodne dostarczanie.
Przetwarzanie strumienia. Po przechwyceniu komunikatów w czasie rzeczywistym rozwiązanie musi je przetworzyć, filtrując, agregując i przygotowując w inny sposób dane do analizy.
Magazyny danych analitycznych. Wiele rozwiązań do obsługi danych big data jest przeznaczonych do przygotowywania danych do analizy, a następnie obsługi przetworzonych danych w formacie ustrukturyzowanym, który można wykonywać zapytania przy użyciu narzędzi analitycznych.
Analiza i raportowanie. Celem większości rozwiązań typu big data jest udostępnienie szczegółowych informacji na temat danych przy użyciu analizy i raportowania.
Wybór technologi
Poniższe technologie są zalecane do wyboru w przypadku rozwiązań przetwarzania w czasie rzeczywistym na platformie Azure.
Wprowadzanie komunikatów w czasie rzeczywistym
- Azure Event Hubs. Azure Event Hubs to rozwiązanie do obsługi komunikatów służące do pozyskiwania milionów komunikatów o zdarzeniach na sekundę. Przechwycone dane zdarzenia mogą być przetwarzane równolegle przez wielu użytkowników. Usługa Event Hubs natywnie obsługuje protokół AMQP (Advanced Message Queuing Protocol 1.0), ale zapewnia również warstwę zgodności binarnej, która umożliwia aplikacjom używanie protokołu Kafka (Kafka 1.0 i nowszych) do przetwarzania zdarzeń przy użyciu usługi Event Hubs bez zmian aplikacji.
- Azure IoT Hub. Azure IoT Hub zapewnia dwukierunkową komunikację między urządzeniami połączonymi z Internetem i skalowalną kolejką komunikatów, która może obsługiwać miliony jednocześnie połączonych urządzeń.
- Apache Kafka. Kafka to open source aplikacja do kolejkowania komunikatów i przetwarzania strumieniowego, która może być skalowana w celu obsługi milionów komunikatów na sekundę od wielu producentów komunikatów i kierowania ich do wielu użytkowników. Platforma Kafka jest dostępna na platformie Azure jako typ klastra usługi HDInsight z zdarzeniami platformy Azure dla platformy Kafka, a także dostępna za pośrednictwem usługi ConfluentCloud za pośrednictwem naszego partnerstwa z platformą Confluent.
Aby uzyskać więcej informacji, zobacz Pozyskiwanie komunikatów w czasie rzeczywistym.
Magazyn danych
- Kontenery obiektów blob usługi Azure Storage lub Usługa Azure Data Lake Store. Przychodzące dane w czasie rzeczywistym są zwykle przechwytywane w brokerze komunikatów (patrz powyżej), ale w niektórych scenariuszach warto monitorować folder dla nowych plików i przetwarzać je podczas ich tworzenia lub aktualizowania. Ponadto wiele rozwiązań do przetwarzania w czasie rzeczywistym łączy dane przesyłane strumieniowo ze statycznymi danymi referencyjnymi, które mogą być przechowywane w magazynie plików. Na koniec magazyn plików może służyć jako miejsce docelowe danych wyjściowych przechwyconych w czasie rzeczywistym na potrzeby archiwizacji lub dalszego przetwarzania wsadowego w architekturze lambda.
Aby uzyskać więcej informacji, zobacz Magazyn danych.
Przetwarzanie strumienia
- Azure Stream Analytics. Usługa Azure Stream Analytics może uruchamiać zapytania bezterminowe względem nieowiązanego strumienia danych. Te zapytania wykorzystują strumienie danych z magazynu lub brokerów komunikatów, filtrują i agregują dane w oparciu o okna czasowe oraz zapisują wyniki w ujściach, takich jak magazyn, bazy danych lub bezpośrednio do raportów w usłudze Power BI. Usługa Stream Analytics używa języka zapytań opartego na języku SQL, który obsługuje konstrukcje czasowe i geoprzestrzenne i można je rozszerzyć przy użyciu języka JavaScript.
- Przesyłanie strumieniowe platformy Spark. Apache Spark to platforma rozproszona open source do ogólnego przetwarzania danych. Platforma Spark udostępnia interfejs API przesyłania strumieniowego spark, w którym można napisać kod w dowolnym obsługiwanym języku Spark, w tym Java, Scala i Python. Platforma Spark 2.0 wprowadziła interfejs API przesyłania strumieniowego ze strukturą platformy Spark, który zapewnia prostszy i bardziej spójny model programowania. Platforma Spark 2.0 jest dostępna w klastrze usługi Azure HDInsight.
Aby uzyskać więcej informacji, zobacz Przetwarzanie strumienia.
Magazyn danych analitycznych
- Azure Synapse Analytics, Azure Data Explorer, HBase, Spark lub Hive. Przetworzone dane w czasie rzeczywistym mogą być przechowywane w relacyjnej bazie danych przez usługę Synapse Analytics, usługę Azure Data Explorer, magazyn NoSQL, taki jak HBase lub pliki w rozproszonym magazynie, w którym można zdefiniować tabele Spark lub Hive i wykonywać zapytania.
Aby uzyskać więcej informacji, zobacz Magazyny danych analitycznych.
Analiza i raportowanie
- Azure Analysis Services, Power BI i Microsoft Excel. Przetworzone dane w czasie rzeczywistym przechowywane w analitycznym magazynie danych mogą być używane do raportowania historycznego i analizy w taki sam sposób, jak dane przetwarzane wsadowo. Ponadto usługa Power BI może służyć do publikowania raportów w czasie rzeczywistym (lub niemal w czasie rzeczywistym) oraz wizualizacji ze źródeł danych analitycznych, w których opóźnienie jest wystarczająco niskie, lub w niektórych przypadkach bezpośrednio z danych wyjściowych przetwarzania strumienia.
Aby uzyskać więcej informacji, zobacz Analiza i raportowanie.
W czysto rzeczywistym rozwiązaniu większość orkiestracji przetwarzania jest zarządzana przez składniki pozyskiwania komunikatów i przetwarzania strumienia. Jednak w architekturze lambda, która łączy przetwarzanie wsadowe i przetwarzanie w czasie rzeczywistym, może być konieczne użycie struktury aranżacji, takiej jak Azure Data Factory lub Apache Oozie i Sqoop, aby zarządzać przepływami pracy wsadowych dla przechwyconych danych w czasie rzeczywistym.
Współautorzy
Ten artykuł jest obsługiwany przez firmę Microsoft. Pierwotnie został napisany przez następujących współautorów.
Główny autor:
- Zoiner Tejada | Dyrektor generalny i architekt
Następne kroki
- Przetwarzanie zdarzeń w czasie rzeczywistym za pomocą usługi Azure Stream Analytics
- Wybieranie technologii analizy i przetwarzania strumieniowego w czasie rzeczywistym na platformie Azure
- Poznaj podstawy analizy w czasie rzeczywistym
- Przetwarzanie strumienia bez kodu za pośrednictwem usługi Azure Stream Analytics