Open Zekhire opened 3 years ago
Dzisiaj przyjrzałem się trochę Amazon Kinesis. Umożliwia ono w czasie rzeczywistym (lub bardzo krótkim) zbieranie dużej ilości danych, ich przetworzenie czy analizę (na bieżąco, nie musimy czekać na zgromadzenie danych itp). W dużym skrócie dane wysyłane są przez "producentów" do strumienia, z którego "konsumenci" mogą je odczytywać oraz przetwarzać. Konsumenci mogą realizować różne zadania. Strumień można podzielić na "shardy" co zwiększa możliwości strumienia.
Wystąpiło trochę problemów z uwierzytelnianiem, ale udało mi się utworzyć strumień danych (Kinesis) oraz go przetestować. Do testu wykorzystałem przykładowe kody (LINK), które musiałem trochę zmodyfikować. Skrypty działają w oparciu o Pythona i Boto3. Przykład wrzuciłem na gita (959adf1).
EDIT: Wrzuciłem instrukcję do przygotowania środowiska oraz uruchomienia przykładu (be365e8).
Wrzuciłem skrypty (69cb6a7) wykorzystujące Kinesis, które pobierają dane z OpenSky i wykorzystują też sprawdzanie w Geoapify. Póki co to po prostu taka poglądowa wersja.
Producer co 10sek pobiera dane dla odpowiedniego bounding boxa z OpenSky, wyciąga z danych współrzędne geograficzne oraz kierunek i wysyła to na stream (póki co 1 shard, można śmiało zmieniać) wykorzystując 2 klucze do partycjonowania wiadomości. W tym czasie 2 konsumenci pobierają dane ze streama (dla odpowiadającego im klucza) i odpytują Geoapify, po czym wypisują na standardowe wyjście odebrane dane lotu i kraj uzyskany z API.
Możemy zwiększać liczbę shard'ów, klientów; modyfikować czasy odpytywania API itp. Można tam właściwie jeszcze dorzucić kilka poprawek i to rozbudować, ale miał być to tylko test wykorzystujący pozostałe API.
Z listy otrzymanych samolotów trzeba wybrać tylko te, które są w/nad Polską. Sprawdzanie musi wykonywać się równolegle dla każdego samolotu, a do tego trzeba wybrać odpowiednią technologię i je jakoś przetestować. Wstępnie do sprawdzenia są: