Co dokładnie stanowi przetwarzanie rozproszone?
Przetwarzanie rozproszone to z natury równoległy zbiór elementów przetwarzania, które komunikują się ze sobą w celu rozwiązania jednego lub więcej problemów. Te elementy przetwarzające są wystarczająco oddzielone od siebie, aby zbudowanie między nimi niezawodnej i terminowej struktury przesyłania wiadomości nie było praktyczne, a zatem niemożliwa jest globalna znajomość stanu systemu. Szczególne cechy Messaging z systemów rozproszonych na to, że komunikaty będą się zgubić, będzie się nieczytelny, będzie się opóźnia - rozwiązania w tej przestrzeni muszą uwzględniać to. Zatem programowanie rozproszone polega na radzeniu sobie z sieciami i komunikatami, równoległości i braku globalnych informacji.
Najłatwiejszą metodą obejścia problemów jest uczynienie pojedynczego elementu przetwarzania specjalnym, tzn. Autorytatywnym dla określonej informacji. Następnie pozostałe elementy mogą albo odwoływać się do nich za każdym razem, albo buforować informacje i mieć nadzieję, że nie przestaną być aktualne (ponieważ nie mogą liczyć na informację o zmianach). Jest to klasyczna architektura klient / serwer.
Obliczenia internetowe to obliczenia rozproszone, ale bez możliwości kontrolowania, co tak naprawdę robi większość rozproszonych węzłów.
Czy wiele równoległych wątków próbujących zsynchronizować się w celu uzyskania dostępu do zasobu stanowi problem w dziedzinie przetwarzania rozproszonego?
Stanowią one możliwe rozwiązanie, które jest przydatne podczas budowania modelu klient / serwer, ale kosztem potencjalnie dramatycznego wzrostu rywalizacji o zasoby. W przypadku odczytów nie jest to wielka sprawa (pod warunkiem, że jest wystarczająca ilość sprzętu), ale w przypadku zapisów jest to naprawdę duży problem.
To, czego starasz się unikać, to rozproszone zamki. Brak niezawodnego przesyłania wiadomości w odpowiednim czasie całkowicie eliminuje rozproszone protokoły decyzyjne, chyba że użyjesz czegoś takiego jak protokół Paxos , ale ma to wiele zastrzeżeń. Podstawowym problemem związanym z przetwarzaniem rozproszonym jest to, że „złe wiadomości przytrafiają się komunikatom”. Protokoły relatywnie niskiego poziomu, takie jak TCP, zmniejszają problemy, ale nadal możesz się poważnie nie utknąć.
Przetwarzanie rozproszone to system obliczeniowy, którego przetwarzanie odbywa się na różnych komputerach (tj. W systemie rozproszonym). Poszczególne programy komunikują się ze sobą poprzez szereg kanałów komunikacji. Kanały te są zwykle połączeniami sieciowymi (na przykład gniazdami TCP), ale często używają innych protokołów komunikacyjnych i urządzeń (takich jak DeviceNET, BACNet, SECS-2, Modbus itp.) Lub nawet protokołów, które są wykonane na zamówienie dla konkretnego urządzenia.
Systemy rozproszone są zwykle znacznie bardziej skomplikowane niż systemy zaprojektowane do działania na jednym komputerze. Oprócz problemów z współbieżnością i blokowaniem zasobów, z którymi muszą zmagać się aplikacje wielowątkowe, systemy rozproszone muszą obsługiwać awarie komunikacji i awarie węzłów przetwarzania. Transakcje (i wycofywanie), które wymagają przeprowadzenia wielu procesorów, mogą być trudne.
Systemy rozproszone przyjmują wiele form i są obecnie używane w wielu aplikacjach. Aplikacje internetowe to systemy rozproszone. System N-warstwowy zwykle ma co najmniej N różnych procesorów (z różnymi aplikacjami). Systemy rozproszone są również stosowane w wielu systemach automatyki przemysłowej.
Write-up na Distributed Computing w Wikipedii jest warta przeczytania.
W odpowiedzi na pytanie, czy aplikacja wielowątkowa stanowi aplikację rozproszoną - jeśli wątki działają na jednym komputerze, system nie jest dystrybuowany. Musi rozwiązać niektóre problemy związane z systemami rozproszonymi, ale nie wszystkie.
źródło
Ściśle mówiąc „przetwarzanie rozproszone” to każde rozwiązanie, które wymaga przetworzenia pojedynczej transakcji / żądania / obliczenia na więcej niż jednym komputerze.
Spotkasz się również z terminem „Systemy rozproszone”, który jest uniwersalnym pojęciem dla serwerów Windows, Unix i innych małych systemów, które pierwotnie byłyby wdrażane poza centralnym centrum danych. Chociaż obecnie jest to bardziej normalne w przypadku wdrażania tych systemów w centrum danych, termin ten utknął.
źródło
Aby odpowiedzieć na twoje ogólne pytanie dotyczące tego, co stanowi przetwarzanie rozproszone, poleciłbym artykuł A Note on Distributed Computing autorstwa Ann Wollrath, Geoff Wyant, Jim Waldo i Samuel C. Kendall . Obejmuje najnowszą historię systemów rozproszonych i ich awarie oraz sugeruje, że przetwarzanie rozproszone wymaga odmiennego myślenia o związanych z tym problemach.
Chociaż w artykule nie wymieniono ani muteksów, ani semaforów, zapewnia on cenny wgląd w prawidłową inżynierię rozproszonego systemu oprogramowania.
Co do tego, dlaczego twój ankieter zapytał o muteksy i semafory, zgodziłbym się z @Caleb:
Dodam tylko, że muteksy i semafory są prymitywami blokującymi niskiego poziomu, które umożliwiają dystrybucję pracy między wieloma urządzeniami obliczeniowymi, a ich działanie jest (zwykle) kluczowe dla powodzenia aplikacji. Oczywiście zależy to od używanego języka i technologii. Jeśli używasz Erlanga lub Scali, prawdopodobnie użyjesz współbieżności opartej na modelu aktora, a nie tradycyjnej współbieżności opartej na blokadzie.
źródło
Słowo mówi wszystko. Musisz wykonać pewną operację obliczeniową i jeśli możesz rozdzielić części tego obliczenia tak, aby każde obliczenie działało niezależnie od innych obliczeń, a następnie, gdy wszystko jest zrobione, łącz wynik każdego obliczenia, aby uzyskać odpowiedź obliczeń głównych. Przykładem może być: Mapa-Zmniejszenie
źródło
Mieliśmy kurs na temat „systemów rozproszonych” i chociaż nie pamiętam dokładnie definicji, przebiegała ona w następujący sposób:
(Wierzę, że było ich więcej i nie jestem pewien co do ostatniego punktu)
Teraz na kursie nauczyliśmy się, jak implementować transakcję rozproszoną i blokadę rozproszoną. Lekcja polega na tym, że blokada rozproszona jest zasadniczo wdrażana przy użyciu transakcji rozproszonej, co jest odwrotnością w porównaniu z tym, co robisz lokalnie, i że z natury nie jest odporna na uszkodzenia, co raczej nie wystarcza, aby system rozproszony był w pierwszej kolejności.
Edycja: Definicja ta dotyczy „systemu rozproszonego” w wąskim znaczeniu systemu operacyjnego lub systemu baz danych, a nie tylko systemu klient-serwer. Wszystko, co spełnia pierwszy warunek, może być nazywane rozproszonym w niektórych kontekstach.
Przypadkowo definicja odpowiada różnicy między rozproszonymi a tradycyjnymi systemami kontroli wersji, z których wszystkie są przynajmniej klient-serwer i często również są replikowane.
źródło
Przetwarzanie rozproszone to termin „nierynkowy” dla obliczeń korporacyjnych, który w rzeczywistości można usłyszeć znacznie więcej. Jednak ogólna idea, jak zauważyli inni, to „używasz więcej niż jednego komputera do pracy”
źródło