Algorytm rozproszony

Algorytm rozproszony to algorytm przeznaczony do działania na sprzęcie komputerowym zbudowanym z połączonych ze sobą procesorów . Algorytmy rozproszone są wykorzystywane w różnych obszarach zastosowań przetwarzania rozproszonego , takich jak telekomunikacja , obliczenia naukowe , rozproszone przetwarzanie informacji i sterowanie procesami w czasie rzeczywistym . Standardowe problemy rozwiązywane przez algorytmy rozproszone obejmują wybór lidera , konsensus , wyszukiwanie rozproszone , generowanie drzewa opinającego , wzajemne wykluczanie i alokację zasobów .

Algorytmy rozproszone są podtypem algorytmu równoległego , zwykle wykonywanego współbieżnie , z oddzielnymi częściami algorytmu uruchamianymi jednocześnie na niezależnych procesorach i posiadającymi ograniczone informacje o tym, co robią inne części algorytmu. Jednym z głównych wyzwań przy opracowywaniu i wdrażaniu algorytmów rozproszonych jest skuteczna koordynacja zachowania niezależnych części algorytmu w obliczu awarii procesora i zawodnych łączy komunikacyjnych. Wybór odpowiedniego algorytmu rozproszonego do rozwiązania danego problemu zależy zarówno od charakterystyki problemu, jak i cech systemu, na którym algorytm będzie działał, takich jak rodzaj i prawdopodobieństwo awarii procesora lub łącza, rodzaj komunikacji między procesami które można wykonać, oraz poziom synchronizacji taktowania między oddzielnymi procesami.

Standardowe problemy

Zatwierdzenie atomowe
Zatwierdzenie atomowe to operacja, w której zestaw odrębnych zmian jest stosowany jako pojedyncza operacja. Jeśli zatwierdzenie atomowe powiedzie się, oznacza to, że wszystkie zmiany zostały zastosowane. Jeśli wystąpi błąd przed ukończeniem zatwierdzenia atomowego, „zatwierdzenie” zostanie przerwane i żadne zmiany nie zostaną zastosowane.
Algorytmy rozwiązywania problemu zatwierdzania atomowego obejmują protokół zatwierdzania dwufazowego i protokół zatwierdzania trójfazowego . Algorytmy
konsensusu
próbują rozwiązać problem uzgadniania się wielu procesów w sprawie wspólnej decyzji.
Dokładniej, protokół konsensusu musi spełniać cztery poniższe właściwości formalne.
  • Zakończenie : każdy poprawny proces decyduje o jakiejś wartości.
  • Ważność jeśli wszystkie procesy proponują tę samą wartość każdy poprawny proces .
  • Integralność : decyduje co najwyżej o jednej wartości, a jeśli decyduje , to musiał zostać zaproponowany przez jakiś proces
  • Zgoda proces , to każdy prawidłowy proces .
Powszechnymi algorytmami rozwiązywania konsensusu są algorytm Paxos i algorytm Raft .
Wyszukiwanie rozproszone
Wybór lidera
Wybór lidera to proces wyznaczania pojedynczego procesu jako organizatora jakiegoś zadania rozłożonego na kilka komputerów (węzłów). Przed rozpoczęciem zadania wszystkie węzły sieci nie wiedzą, który węzeł będzie pełnił rolę „lidera” lub koordynatora zadania. Jednak po uruchomieniu algorytmu wyboru lidera każdy węzeł w sieci rozpoznaje konkretny, unikalny węzeł jako lidera zadania.
Wzajemne wykluczanie
Nieblokujące struktury danych
Niezawodna transmisja
Niezawodna transmisja jest prymitywną komunikacją w systemach rozproszonych. Niezawodna transmisja jest definiowana przez następujące właściwości:
  • Ważność - jeśli poprawny proces wysyła wiadomość, to jakiś poprawny proces ostatecznie dostarczy tę wiadomość.
  • Umowa — jeśli prawidłowy proces dostarcza komunikat, wszystkie poprawne procesy ostatecznie dostarczają ten komunikat.
  • Integralność - każdy poprawny proces dostarcza ten sam komunikat co najwyżej raz i tylko wtedy, gdy ten komunikat został wysłany przez proces.
Niezawodna transmisja może mieć uporządkowanie sekwencyjne, przyczynowe lub całkowite.
Replikacja
Alokacja zasobów
Generowanie drzewa
rozpinającego Łamanie symetrii, np. kolorowanie wierzchołków

Dalsza lektura

Linki zewnętrzne