jwszol-classes / isp-2020-ZekJakGynDam

Visualization of airplanes flying above Poland with use of Amazon AWS technologies.
1 stars 0 forks source link

Wybór technologii zrównoleglającej działania #6

Open Zekhire opened 3 years ago

Zekhire commented 3 years ago

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ą:

gynvael515 commented 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).

gynvael515 commented 3 years ago

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.