Wprowadzenie

Ukończone

W tym module przyjrzymy się kolejkom komunikatów i przetwarzaniu strumieniowemu. Z powodu wzrostu liczby usług internetowych i dostępności ciągłych strumieni danych w czasie rzeczywistym pojawia się wyzwanie polegające na przetwarzaniu tych strumieni danych niemal w czasie rzeczywistym.

Strumienie należy traktować jako nieskończone sekwencje krótkich komunikatów odbieranych w sposób ciągły, bez przerw. Dane nie są przechowywane, a systemy przetwarzania strumieniowego, które odpowiadają za obsługę tych strumieni, powinny mieć możliwość ciągłego wykorzystywania i przetwarzania danych.

Zaczniemy od omówienia najważniejszych koncepcji związanych z systemami kolejek komunikatów. Przyjrzymy się również abstrakcjom dostarczanym przez systemy kolejek komunikatów, które są przydatne do rozproszonego przetwarzania strumieniowego. Platforma Apache Kafka stanowi przykład rozproszonego systemu kolejek komunikatów, który ostatnio bardzo zyskał na popularności.

Następnie przyjrzymy się systemom przetwarzania strumieniowego i poznamy przyczyny wdrażania tych systemów w celu przetwarzania strumieni danych w czasie rzeczywistym. Podstawowym problemem przetwarzania strumieniowego jest zarządzanie stanem. Niektóre obciążenia związane z przetwarzaniem strumieniowym są z założenia bezstanowe, ponieważ mogą być wykonywane na poszczególnych komunikatach strumienia i w związku z tym są dość łatwo skalowalne. Między procesorami pracującymi równolegle nie występuje koordynacja danych ani stanu.

Obciążenia stanowego przetwarzania strumieniowego wymagają zarządzania stanem, który jest aktualizowany przez komunikaty. Procesy strumienia stanowego są trudniejsze do zarządzania i skalowania w poziomie. Jest to szczególnie istotne w przypadku wzrostu częstotliwości przychodzących komunikatów w strumieniu lub liczby równoczesnych strumieni, które należy przetworzyć. Takie metody jak obsługa okien w strumieniu umożliwiają przetwarzanie wielu komunikatów strumienia w partiach.

Na koniec wszystko podsumujemy, omawiając kilka podejść do przetwarzania danych big data, o których mówi się w branży od ostatnich kilku lat. Orędownicy architektury lambda proponują podejście wielowarstwowe, w którym warstwa wsadowa aktualizuje stan danych przy użyciu systemu przetwarzania wsadowego o dużej przepływności, dużych opóźnieniach i dużej dokładności. Najnowsze dane są przetwarzane przez system przetwarzania strumieniowego, który zapewnia małe opóźnienie, jednak nie ma dużej dokładności. Alternatywnym rozwiązaniem jest architektura kappa, która w ogóle nie korzysta z przetwarzania wsadowego, a w celu uzyskania wymaganych rezultatów opiera się na systemach przetwarzania strumieniowego.

Cele szkolenia

Zawartość tego modułu:

  • Definiowanie kolejki komunikatów i przedstawienie podstawowej architektury
  • Przedstawienie charakterystyki oraz zalet i wad kolejki komunikatów
  • Objaśnienie podstawowej architektury platformy Apache Kafka
  • Omówienie ról tematów i partycji, a także sposobu uzyskiwania skalowalności i odporności na uszkodzenia
  • Omówienie ogólnych wymagań systemów przetwarzania strumieniowego
  • Przedstawienie ewolucji przetwarzania strumieniowego
  • Objaśnienie podstawowych składników środowiska Apache Samza
  • Omówienie sposobu, w jaki platforma Apache Samza uzyskuje stanowe przetwarzanie strumieniowe
  • Omówienie różnic między architekturami lambda i kappa
  • Omówienie przyczyn wdrażania kolejek komunikatów i przetwarzania strumieniowego w przypadku użycia w serwisie LinkedIn

Wymagania wstępne

  • Zrozumienie idei przetwarzania w chmurze, w tym modeli usług w chmurze, i zapoznanie się z najpopularniejszymi dostawcami usług w chmurze
  • Znajomość technologii umożliwiających przetwarzanie w chmurze
  • Zrozumienie, jak dostawcy usług w chmurze płacą za korzystanie z chmury oraz pobierają za to opłaty
  • Wiedza o tym, czym są centra danych oraz dlaczego istnieją
  • Wiedza na temat sposobu konfiguracji, zasilania i aprowizacji centrów danych
  • Wiedza na temat sposobu aprowizacji i mierzenia zasobów chmury
  • Znajomość koncepcji wirtualizacji
  • Znajomość różnych typów wirtualizacji
  • Zrozumienie wirtualizacji procesora
  • Zrozumienie wirtualizacji pamięci
  • Zrozumienie wirtualizacji we/wy
  • Znajomość różnych typów danych i sposobów ich przechowywania
  • Znajomość działania rozproszonych systemów plików
  • Znajomość działania baz danych NoSQL i magazynu obiektów
  • Znajomość programowania rozproszonego oraz wiedza o tym, dlaczego jest ono przydatne w chmurze
  • Zrozumienie działania usługi MapReduce i sposobu, w jaki umożliwia ona przetwarzanie danych big data
  • Zrozumienie sposobu działania platformy Spark i cech, którymi różni się od usługi MapReduce
  • Zrozumienie sposobu działania usługi GraphLab i cech, którymi różni się od usług MapReduce i Spark