If you're seeing this message, it means we're having trouble loading external resources on our website.

Jeżeli jesteś za filtrem sieci web, prosimy, upewnij się, że domeny *.kastatic.org i *.kasandbox.org są odblokowane.

Główna zawartość

Obliczenia rozproszone

Rozwiązanie złożonego problemu może wymagać naprawdę bardzo dużych zasobów obliczeniowych. Istnieją wprawdzie superkomputery, ale nie każdy ma do nich dostęp. Alternatywą jest sposób znany jako distributed computing, obliczenia rozproszone. Dzięki temu możemy wykonywać obliczenia na wielu urządzeniach naraz, pod warunkiem, że są one podłączone do sieci.

Rozproszenie procesów równoległych

Obliczenia rozproszone często korzystają z obliczeń równoległych. Obliczenia równoległe na jednym komputerze polegają na wykorzystaniu wielu procesorów do równoległego przetwarzania zadań, natomiast rozproszone obliczenia równoległe wykorzystują wiele komputerów do przetwarzania tych zadań.
Rozważmy nasz przykładowy program, który wykrywa koty na obrazach. Komputer zarządzający obliczeniami rozproszonymi wysyłałby informacje o obrazie do każdego ze współpracujących komputerów, a każdy z nich przesyłałby z powrotem swoje wyniki.
Ilustracja rozproszonych obliczeń równoległych: komputer ze strzałkami rozchodzącymi się wachlarzowo do czterech innych komputerów, a każda strzałka jest opatrzona nazwą pliku zawierającego obraz do analizy.

Ocena wydajności

Obliczenia rozproszone mogą poprawić wydajność wielu rozwiązań, wykorzystując setki lub tysiące komputerów działających równolegle. Możemy zmierzyć zyski, obliczając współczynnik wzrostu wydajności: czas potrzebny na rozwiązanie sekwencyjne podzielony przez czas potrzebny na rozwiązanie rozproszone, równoległe. Jeśli rozwiązanie sekwencyjne zajmuje 60 minut, a rozwiązanie rozproszone 6 minut, to wydajność wzrosła 10 razy.
Wydajność rozwiązań rozproszonych może jednak również cierpieć z powodu ich rozproszonej natury. Komputery muszą komunikować się przez sieć, wysyłając wiadomości z wartościami wejściowymi i wyjściowymi. Wysłanie wiadomości tam i z powrotem zajmuje pewną ilość czasu, a czas ten dodaje się do ogólnego czasu pracy nad rozwiązaniem. Aby rozproszone rozwiązanie obliczeniowe było warte zachodu, czas zaoszczędzony przez rozproszenie operacji musi być większy niż czas dodany przez narzut komunikacyjny.
W najprostszej architekturze obliczeń rozproszonych komputer zarządzający musi komunikować się z każdym komputerem-wykonawcą:
Animacja przepływu informacji w rozproszonym systemie obliczeniowym. Komputer zarządzający wysyła wiadomość do każdego z czterech komputerów-wykonawców, a każdy komputer-wykonawca wysyła wiadomość zwrotną.
W przypadku bardziej złożonej architektury węzły robocze muszą komunikować się z innymi węzłami roboczymi. Jest to na przykład konieczne, gdy używamy rozproszonych obliczeń do trenowania głęboko uczącej się sieci.1
Animacja przepływu informacji w rozproszonym systemie obliczeniowym. Komputer zarządzający wysyła wiadomość do każdego z czterech wykonawców, wykonawcy wysyłają wiadomości do siebie nawzajem, a na koniec wysyłają wiadomości z powrotem do komputera głównego.
Jednym ze sposobów na skrócenie czasu komunikacji jest wykorzystanie klastrów komputerowych: komputerów umieszczonych w sieci lokalnej, które pracują nad podobnymi zadaniami. W klastrze komputerowym wiadomość nie musi pokonywać dużych odległości, a co ważniejsze, nie jest przesyłana przez publiczny Internet.
Zdjęcie klastra komputerowego, cztery duże wieże ze stosami procesorów.
Klaster komputerowy w Molecular Foundry, laboratorium badawczym zajmującym się nanonauką. Źródło obrazu: US Department of Energy
Technologia obliczeń klastrowych ma swoje ograniczenia; utworzenie klastra wymaga przestrzeni fizycznej, wiedzy z zakresu obsługi sprzętu i oczywiście (niemałych) nakładów finansowych na zakup wszystkich urządzeń i infrastruktury sieciowej.
Na szczęście wiele firm oferuje usługi cloud computing, czyli obliczeń w chmurze, które dają programistom na całym świecie dostęp do zarządzanych klastrów. Firmy te zarządzają operacjami sprzętowymi, dostarczają narzędzia do wgrywania programów i pobierają opłaty w zależności od wykorzystania.

Rozproszenie funkcjonalności

Inną formą obliczeń rozproszonych jest wykorzystanie różnych urządzeń do realizacji różnych funkcji niezbędnych do rozwiązania postawionego problemu.
Na przykład, wyobraź sobie ogród zoologiczny z szeregiem kamer bezpieczeństwa. Każda kamera rejestruje materiał wideo w formacie cyfrowym. Kamery wysyłają swoje dane wideo do klastra komputerowego znajdującego się w siedzibie zoo, a ten uruchamia algorytmy analizy wideo w celu wykrycia uciekających zwierząt. Klaster wysyła również dane wideo do serwera w chmurze obliczeniowej, który analizuje terabajty danych wideo, aby odkryć trendy w czasie.
Ilustracja rozproszonej sieci komputerowej. Po lewej stronie znajdują się cztery kamery bezpieczeństwa ze strzałkami skierowanymi do trzech komputerów. Te trzy komputery pokazują na wyjściu obrazek lisa z czerwonym prostokątem wokół niego. Kolejne strzałki prowadzą od tych trzech komputerów do chmury 12 komputerów po prawej stronie. Chmura komputerów tworzy wykres.
Każde urządzenie obliczeniowe w tej rozproszonej sieci pracuje nad inną częścią problemu, na podstawie swoich mocnych i słabych stron. Same kamery bezpieczeństwa nie mają wystarczającej mocy obliczeniowej, aby wykryć uciekające zwierzęta, ani wystarczającej przestrzeni dyskowej na nagrania obrazów z innych kamer (co mogłoby pomóc algorytmowi w śledzeniu ruchu). Lokalny klaster dysponuje przyzwoitą mocą obliczeniową i dodatkową pamięcią, może więc wykonać pilne zadanie wykrywania uciekających zwierząt. Jednak klaster odracza zadanie, które wymaga największego przetwarzania i przechowywania (ale niekoniecznie musi być zrealizowane w czasie rzeczywistym), do serwera obliczeniowego w chmurze.
Ta forma przetwarzania rozproszonego oparta jest o uznanie, że świat jest wypełniony szeregiem urządzeń komputerowych o różnych możliwościach, a ostatecznie niektóre problemy są najlepiej rozwiązywane przez wykorzystanie sieci tych urządzeń.
W rzeczywistości Ty też bierzesz udział w gigantycznym przykładzie przetwarzania rozproszonego: w sieci. Twój komputer wykonuje wiele czynności, aby przeczytać tę witrynę: wysyła żądania HTTP, aby uzyskać dane witryny, interpretuje JavaScript, który ładuje witryna, i stale aktualizuje ekran, gdy przewijasz stronę. Równolegle, nasze serwery również wykonują wiele zadań, odpowiadając na Twoje żądania HTTP, a także wysyłają dane do zaawansowanych serwerów analitycznych w celu dalszego przetwarzania.
Ilustracja sieci jako rozproszonego systemu obliczeniowego. Przeglądarka internetowa ładuje stronę khanacademy.org po lewej stronie, strzałki idą od przeglądarki do trzech komputerów oznaczonych jako „khanacademy.org”, a inne strzałki idą od nich do chmury 12 komputerów po prawej stronie.
Każda aplikacja, która korzysta z Internetu, jest przykładem przetwarzania rozproszonego, ale każda aplikacja podejmuje różne decyzje dotyczące sposobu dystrybucji przetwarzania. Inny przykład: inteligentni asystenci domowi wykonują lokalnie niewielką ilość przetwarzania języka, aby stwierdzić, że użytkownik poprosił ich o pomoc, ale następnie wysyłają dźwięk do serwerów o dużej mocy, aby przetworzyć pełne pytanie.
Internet umożliwia obliczenia rozproszone na wielką, światową skalę, zarówno w celu dystrybucji obliczeń równoległych, jak i dystrybucji funkcjonalności. Informatycy, programiści i przedsiębiorcy stale odkrywają nowe sposoby wykorzystania obliczeń rozproszonych, aby lepiej wykorzystywać tę ogromną sieć komputerów.

🙋🏽🙋🏻‍♀️🙋🏿‍♂️Masz pytania związane z tym zagadnieniem? Możesz zadać swoje pytanie poniżej!

Chcesz dołączyć do dyskusji?

Na razie brak głosów w dyskusji
Rozumiesz angielski? Kliknij tutaj, aby zobaczyć więcej dyskusji na angielskiej wersji strony Khan Academy.