Budowa skalowalnych systemów o wysokim obciążeniu do przetwarzania big data — Blog Robosoft
Przetwarzanie danych na dużą skalę to inny problem inżynieryjny niż przetwarzanie ich poprawnie — potrzebujesz obu.
Przetwarzanie wsadowe kontra strumieniowe
Przetwarzanie wsadowe obsługuje duże wolumeny cyklicznie i jest prostsze do ogarnięcia; przetwarzanie strumieniowe obsługuje dane na bieżąco.
Rozkładanie pracy
Frameworki jak Spark lub architektury oparte na kolejkach pozwalają skalować przetwarzanie horyzontalnie.
Gdzie te systemy naprawdę zawodzą
Nie na ścieżce szczęśliwej — na brzegach: częściowe awarie, dane nie po kolei i ponowne przetwarzanie po awarii.
Częste błędy
Systemy budowane i testowane wyłącznie na czystych, uporządkowanych danych przykładowych zwykle pękają przy pierwszym zetknięciu z danymi produkcyjnymi — duplikaty zdarzeń, dane napływające nie po kolei, częściowe awarie w trakcie przetwarzania wsadu. Wbudowanie idempotentności i możliwości ponownego przetwarzania od początku kosztuje niewiele, a oszczędza bolesną przebudowę później.
Wybór właściwej warstwy przechowywania
Baza relacyjna to zwykle właściwy domyślny wybór, dopóki konkretny wzorzec dostępu nie udowodni inaczej — nie sięgaj po specjalistyczną bazę danych tylko dlatego, że wolumen brzmi duże. Dane czasowe, wyszukiwanie pełnotekstowe i relacje grafowe mają silniki zbudowane pod siebie, ale wdrożenie jednego z nich, zanim potwierdzisz, że faktycznie go potrzebujesz, tylko dodaje złożoność operacyjną bez korzyści.
Przetwarzasz dane na skalę, która zaczyna boleć?
Projektujemy pipeline'y budowane pod przypadki brzegowe, nie tylko demo.
