Jak przetwarzanie sieciowe zmienia różne maszyny w superkomputer

13

Badacz musi symulować zwijanie białek. Loguje się przez terminal, więc nie korzysta z jednego komputera, ale łączy się z rozległą siecią, która rozdziela obciążenie. Trader musi przewidzieć ruch akcji. Otwiera dane na kieszonkowym PDA, korzystając z mocy obliczeniowej infrastruktury backendowej swojej firmy. Dowódca wojskowy musi koordynować strajk. Zamiast polegać na jednym kompleksie serwerów, uzyskuje dostęp do zasobów trzech różnych, izolowanych sieci wojskowych w celu opracowania strategii.

Te scenariusze brzmią jak science fiction lub korporacyjna utopia, ale wszystkie wskazują na tę samą podstawową architekturę: przetwarzanie sieciowe.

Jest to cyfrowy odpowiednik łączenia zasobów. W przetwarzaniu sieciowym nie masz do czynienia tylko z mocą własnego komputera. Uzyskujesz dostęp do rdzeni obliczeniowych, pamięci i pamięci masowej każdej autoryzowanej maszyny w systemie. Jest to przetwarzanie rozproszone na sterydach. Cel? Spraw, aby sieć różnych komputerów działała jak jeden ogromny, zunifikowany superkomputer.

Mit jednego komputera

Historycznie rzecz biorąc, jeśli potrzebowałeś więcej mocy, kupowałeś szybszy komputer. Dodałeś więcej pamięci RAM. Zainstalowałeś większy dysk twardy. Istniały granice możliwości jednego komputera, niezależnie od tego, ile pieniędzy w niego wrzucono. Obliczenia sieciowe przekraczają ten limit.

Wyobraź sobie wędrówkę. Podróżujesz sam. Masz jeden namiot. Twój znajomy ma inny. Jeden przynosi jedzenie, drugi SUV. Jeśli podróżujesz sam, musisz wszystko nieść sam. Jesteś ograniczony własną mocą i własnym sprzętem. Jeśli podróżujecie razem, dzielicie się obciążeniem. Korzystacie ze swoich umiejętności. Podróżowanie staje się łatwiejsze, szybsze i wydajniejsze, bo nikt nie dźwiga całego ciężaru sam.

Obliczenia sieciowe stosują tę logikę do danych.

Standardowy komputer opiera się na swojej jednostce centralnej (CPU). Ten mikroprocesor przetwarza liczby i zarządza danymi. Opiera się także na pamięci (RAM), czyli tymczasowej, szybkiej pamięci masowej umieszczonej blisko procesora, oraz pamięci (dyskach twardych lub bazach danych), które są trwałe, ale wolniejsze. Domyślnie użytkownik ograniczony jest do możliwości własnego sprzętu.

W przetwarzaniu sieciowym te ograniczenia znikają. System łączy te zasoby ze sobą. Kiedy wysyłasz żądanie, sieć wykorzystuje więcej niż tylko Twój procesor. Dystrybuuje części zadania do tysięcy innych komputerów w sieci. Użytkownikowi wydaje się to magią. Otrzymujesz dostęp do zbiorowej mocy całej sieci, a nie tylko krzemu przed tobą.

Nie jest nowy, ale jeszcze nie jest gotowy

Konkluzja jest następująca: przetwarzanie sieciowe nie jest nowym pomysłem. Jest to specyficzny rodzaj przetwarzania rozproszonego. Przetwarzanie rozproszone istnieje już od dziesięcioleci, a różne komputery współdzielą zasoby w sieci. Jednak prawdziwe przetwarzanie sieciowe sięga dalej. W idealnym stanie każdy zasób jest współdzielony. Każdy cykl procesora i każdy bajt pamięci staje się własnością społeczności.

Dostęp do nich powinien być bezproblemowy. Interfejs nie powinien wyglądać tak, jakbyś włamał się do komputera mainframe. Powinno wyglądać tak, jakbyś pracował na własnym komputerze. Różnica polega na niewidzialnej mocy, która kryje się za kulisami.

Jednak technologia ta jest wciąż daleka od doskonałości. Wciąż znajdujemy się w trudnym okresie przejściowym. Informatycy i inżynierowie zmagają się obecnie ze standardami i protokołami. Obecnie wiele systemów sieciowych opiera się na zastrzeżonym oprogramowaniu. Są odizolowani. Aby dołączyć do sieci, często potrzebne są narzędzia specyficzne dla dostawcy. Dopóki branża nie uzgodni uniwersalnego zestawu zasad, wdrożenie będzie niewygodne. Organizacje niechętnie inwestują w infrastrukturę, która może nie być kompatybilna z innymi.

Pułapka żargonowa

Jeśli zagłębisz się w dokumentację obliczeń sieciowych, utoniesz w akronimach. Obszar ten w dużym stopniu czerpie korzyści z innych sektorów technologii. Aby zrozumieć, jak to działa, trzeba oddzielić esencję od hałasu.

Przetwarzanie sieciowe jest powiązane z kilkoma innymi modelami, a granice między nimi często się zacierają:

  • Przetwarzanie współdzielone: To szeroka kategoria. Odnosi się do dowolnej grupy komputerów dzielących moc obliczeniową w celu wykonania zadania. Jest to dość ogólne określenie.
  • Przetwarzanie użytkowe: Często dostarczane w ramach oprogramowania jako usługi (SaaS). Wyobraź sobie prąd. Nie budujesz elektrowni; łączysz się z siecią i płacisz za to, czego używasz. Firmy oferują pamięć masową lub moc obliczeniową w oparciu o zużycie.
  • Przetwarzanie w chmurze: To obecnie najbardziej znane określenie. W przypadku przetwarzania w chmurze aplikacje i pamięć masowa znajdują się w Internecie. Nie jesteś właścicielem sprzętu; wynajmujesz do niego dostęp. Chociaż przetwarzanie w chmurze i przetwarzanie sieciowe mają wspólne korzenie, przetwarzanie sieciowe koncentruje się bardziej na łączeniu bezczynnych zasobów w celu wykonywania masowych zadań obliczeniowych, podczas gdy przetwarzanie w chmurze często koncentruje się na dostarczaniu usług przez Internet.

Aby poruszać się po tych pojęciach, musisz znać słownictwo. Oto podstawy:

  • Klaster: grupa komputerów połączonych w sieć współdzielących zasoby. Pracują razem jako jeden.
  • Węzeł: dowolne urządzenie w sieci, które może wysyłać, odbierać i przekazywać dalej dane. Węzły sterujące kontrolują przepływ.
  • XML (Extensible Markup Language): Język znaczników opisujący dane. Jest czytelny zarówno dla ludzi, jak i maszyn. Węzły sterujące korzystają z pochodnych XML, takich jak WSDL (język opisu usług internetowych), aby zrozumieć, jak obsługiwać określone aplikacje i typy danych.
  • Hub: Centralny punkt sieci, w którym łączy się wiele urządzeń.
  • IDE (Integrated Development Environment): Zestaw narzędzi, których programiści używają do tworzenia aplikacji.
  • Piaskownica: Izolowane środowisko używane do testowania aplikacji bez narażania głównego systemu.

Technologia działa. Koncepcja jest uzasadniona. Jednak największą przeszkodą pozostaje fragmentacja standardów. Dopóki „hydraulika” przetwarzania sieciowego nie zostanie ujednolicona, będziemy w dalszym ciągu świadkami izolowanych wysp mocy, a nie prawdziwie zunifikowanego globalnego superkomputera.

Terminologia techniczna

Aby zrozumieć przetwarzanie gridowe, musisz znać ten język. To nie tylko modne hasła; to mechanika tego, jak różne maszyny komunikują się ze sobą.

Interoperacyjność (kompatybilność) to podstawa. Bez niego Twój komputer PC i Macintosh pozostaną odizolowanymi wyspami. Mają różne systemy operacyjne, różne architektury. Nie mogą ze sobą współpracować, chyba że oprogramowanie wypełni tę lukę.

Następnie istnieją otwarte standardy. Zastrzeżone standardy zamykają Cię w ekosystemie jednego dostawcy. Otwarte standardy są publiczne. Każdy może je wziąć. To znacznie ułatwia integrację, ponieważ wszyscy grają według tych samych zasad.

Mówimy także o przetwarzaniu równoległym. To nie tylko wielozadaniowość na jednym chipie. Polega to na wykorzystaniu wielu procesorów do rozwiązania jednego problemu obliczeniowego. Jest to ściśle powiązane z przetwarzaniem rozproszonym, które do wykonania pracy wykorzystuje niewykorzystane zasoby sieciowe.

Platforma to tylko framework. Może to być system operacyjny, architektura, język programowania, a nawet strona internetowa. Deweloperzy budują na tym swoje produkty.

Gdy jeden serwer nie wystarczy, potrzebny jest klaster serwerów (farma serwerów). Grupa serwerów współpracujących przy zadaniach zbyt skomplikowanych dla pojedynczej maszyny.

Jednak zakup dodatkowego wyposażenia jest kosztowny. Wirtualizacja serwerów pojawia się na scenie. Ta metoda wykorzystuje oprogramowanie do podziału pojedynczego serwera fizycznego na wiele izolowanych platform wirtualnych. Każdy serwer wirtualny obsługuje niezależnie własny system operacyjny. Na jednej maszynie może jednocześnie znajdować się serwer Linux i serwer Windows. Jest to możliwe, ponieważ większość serwerów jest bezczynna przez większość czasu. Wirtualizacja zmniejsza koszty sprzętu w przypadku systemów gridowych wymagających kilkudziesięciu węzłów.

W tym środowisku usługa (usługa) to dowolny system oprogramowania umożliwiający komputerom komunikację w sieci.

Komunikacja często opiera się na SOAP (Simple Object Access Protocol). Zbiór reguł wymiany komunikatów XML w sieci. Został opracowany przez firmę Microsoft. To jest składnia konwersacji.

Zarządzanie danymi prowadzi nas do koncepcji stanu (stanu). W IT stanem są wszelkie trwałe dane. Utrzymują się przez cały cykl życia aplikacji. Kiedy dodajesz książki do koszyka Amazon, są to dane stanowe. Amazon śledzi Twoje wybory podczas przeglądania katalogu. Usługi stanowe umożliwiają tworzenie wieloetapowych aplikacji opartych na spójnych danych podstawowych.

I wreszcie przejściowość (tymczasowość). Możliwość włączania i wyłączania usługi w sieci bez zakłócania całej operacji.

Udostępnianie zasobów

Jak zatem połączyć te elementy?

Kilka organizacji konkuruje ze sobą w tworzeniu standardowych protokołów. Cel? Spraw, aby środowiska przetwarzania grid były gotowe do użycia od razu po wyjęciu z pudełka (plug and play).

Systemy sieciowe istnieją już dzisiaj. Ale kompatybilność jest często niestabilna. Dlaczego? Ponieważ każdy system często korzysta z unikalnego zestawu protokołów i narzędzi. Dwa systemy sieciowe mogą się nie rozumieć. Brak porozumienia jest wąskim gardłem.

Funkcjonalny system obliczeniowy typu grid zazwyczaj wymaga trzech rzeczy:

  1. Węzeł sterujący. Zazwyczaj jest to serwer realizujący funkcje administracyjne. To jest dyspozytor.
  2. Sieć. Komputery ze specjalnym oprogramowaniem gridowym. Działają jako interfejsy użytkownika i pule zasobów. Sieć może być jednorodna (ten sam system operacyjny, ten sam sprzęt) lub heterogeniczna (mieszanka wszystkiego). Może być przewodowy lub poprzez otwarty Internet.
  3. Oprogramowanie pośrednie (Oprogramowanie pośrednie). Koń roboczy. Oprogramowanie umożliwiające różnym komputerom wykonywanie procesów w sieci. Bez oprogramowania pośredniczącego komunikacja jest niemożliwa. Nie ma jednego formatu oprogramowania pośredniego, co zwiększa problem fragmentacji.

Węzeł sterujący jest zajęty. Priorytetuje zadania. Planuje pracować w sieci. Decyduje, jakie zasoby otrzyma każde zadanie. Kontroluje przeciążenia. Bardzo ważne jest, aby zapewnić brak spowolnienia na komputerze lokalnym użytkownika. Siatka powinna wykorzystywać niewykorzystane zasoby. Jeśli komputer zwalnia, gdy sieć jest uruchomiona, następuje awaria systemu.

Problem standaryzacji

Potencjał jest nieograniczony. Ale tylko wtedy, gdy wszyscy zgodzą się na protokoły i narzędzia.

Bez standardowego formatu zewnętrzni programiści utknęli. Niezależni programiści chcą tworzyć aplikacje w sieci grid, ale nie mogą zagwarantować kompatybilności. Być może będą musieli stworzyć różne wersje tej samej aplikacji dla różnych systemów. To zajmuje dużo czasu. Programiści nie chcą wykonywać tej samej pracy dwa razy.

Ustandaryzowany zestaw protokołów umożliwiłby programistom skupienie się na jednym formacie. Jedna baza kodu. Jeden system siatki.

Do tego czasu utknęliśmy z fragmentarycznym krajobrazem. Potężny, tak. Ale bałagan.

To prowadzi nas z powrotem do pytania: jeśli jest sprzęt i oprogramowanie, to dlaczego każda sieć nie jest siecią typu grid?

Paradoks bezpieczeństwa rozproszonego zasilania

Łączenie odrębnych maszyn w jedną strukturę obliczeniową brzmi jak utopijne rozwiązanie przetwarzania danych. Ale to nieprawda. To logistyczny ból głowy związany z zagrożeniami bezpieczeństwa. Kiedy łączysz dwa komputery, nie mówiąc już o tysiącach, nieuchronnie stajesz przed problemami związanymi z prywatnością, kontrolą dostępu i przejmowaniem zasobów.

Rozwiązaniem lub przynajmniej obecnym obejściem jest oprogramowanie pośrednie. Same protokoły obliczeń sieciowych nie rozwiązują tych problemów; po prostu ułatwiają programistom tworzenie narzędzi, które to robią. Główny problem? Szyfrowanie.

Większość inżynierów polega na szyfrowaniu w celu ochrony danych. Kodujesz informacje tak, aby tylko ci, którzy mają klucz, mogli je przeczytać. Złamanie takiego kodu zwykle wymaga rozłożenia ogromnych liczb na czynniki pierwsze, a wykonanie tego zadania zajęłoby typowe lata superkomputerowi. Ale oto ironia losu: sieciowy system komputerowy może zostać użyty jako broń do złamania tych właśnie kodów. Jeśli połączysz wystarczającą liczbę bezczynnych procesorów, czas potrzebny do złamania silnego szyfrowania zostanie skrócony z lat do dni.

„Haker mógłby teoretycznie stworzyć sieciowy system komputerowy w celu złamania zaszyfrowanych informacji.”

Prawnie zastrzeżone oprogramowanie może zapewniać niewielką ochronę, ale otwarte standardy wymagane do funkcjonowania sieci komputerowych pozostawiają drzwi szeroko otwarte. Każdy węzeł wymaga specjalnego oprogramowania do komunikacji z resztą sieci. Jeśli w oprogramowaniu pojawi się luka, ucierpi cała sieć.

Do tego dochodzi kwestia dostępu. Nie można pozwolić każdemu robić, co chce. Jeśli użytkownik przejmie wszystkie zasoby, nastąpi zakleszczenie. Węzeł kontrolny zostanie zawieszony. Nic się nie stanie. Dlatego protokoły autoryzacji i uwierzytelniania stają się obowiązkowe. Tylko wybrani użytkownicy otrzymują pełny dostęp do sieci. Odpoczynek? Dostają z powrotem swój komputer, minus dodatkowa moc obliczeniowa.

Kto opiekuje się wystawą?

Oprogramowanie pośredniczące i węzeł zarządzający pełnią rolę strażników sieci. Zarządzają przepływem danych. Zapewniają one, że żaden pojedynczy komputer nie zdominuje sieci i odwrotnie, sieć nie wyczerpuje komputera osobistego użytkownika do ostatniej kropli czasu procesora. Jeśli system odbierze Ci własne zasoby obliczeniowe, jest nieefektywny. To wrogie.

Od science fiction po stół laboratoryjny

Gdzie więc właściwie podziała się ta moc? Nie twoje gry wideo. Nie twoje arkusze kalkulacyjne.

Większość działających obecnie sieci komputerowych pochodzi ze środowisk akademickich i instytucji badawczych. Z technicznego punktu widzenia są to raczej „systemy współdzielenia obliczeń” niż prawdziwe, stałe sieci korporacyjne. Wykorzystują bezczynne cykle procesora. I wykonują ciężką pracę.

SETI@home: Słuchanie pustki

Projekt Search for Extraterrestrial Intelligence (SETI) wysunął na pierwszy plan sieciowe systemy komputerowe. Radioteleskopy zbierają terabajty kosmicznego szumu. Jeden komputer nie znajdzie igły w stogu siana takich danych. SETI@home stworzył program, który zamienia miliony domowych komputerów PC w wirtualny superkomputer. Instalujesz to. Działa w tle. Analizuje dane pod kątem sygnałów obcych. Jeśli chcesz grać w Call of Duty, program jest gorszy. Po wylogowaniu system zostanie wznowiony.

Składanie@dom: Rozwiązanie zagadki białkowej

Jest też Grupa Pande ze Stanford. Nie szukają kosmitów; szukają przyczyn chorób Parkinsona i Alzheimera. Klucz leży w fałdowaniu białek. Białka przybierają określone formy, aby wykonywać swoje funkcje. Kiedy składają się nieprawidłowo, następuje choroba.

Folding@home modeluje proces zwijania białek. Jest to ogromny problem obliczeniowy. Zespół Pande ma nadzieję, że poznając fizykę nieprawidłowego fałdowania, uda mu się znaleźć nowe metody leczenia. Proces jest identyczny jak w przypadku SETI: pobierz aplikację, pozostaw procesor na noc bezczynnie i wnieś swój wkład w naukę medyczną.

Efemeryczna natura informatyki w ramach wolontariatu

Takich projektów są dziesiątki. Wiele z nich nie jest trwałych. Po osiągnięciu celu badawczego sieć ulega rozpadowi. Czasami nowy projekt zastępuje stary. Czasem po prostu znika.

To fascynujący model. Użyczasz swoje bezczynne cykle nauce. W zamian nie dostajesz nic poza ciepłym uczuciem satysfakcji z wkładu w SETI lub badania medyczne. Oprogramowanie ma ustawiony niski priorytet. Szanuje Twój komputer. Wyłącza się, gdy tego potrzebujesz. Budzi się, gdy nie korzystasz z komputera.

Ale czy to ma znaczenie? Jeśli sieć można wykorzystać do złamania szyfrowania, jeśli kontrola dostępu jest krucha, jeśli projekty mają charakter tymczasowy… czy jest to warte ryzyka? Kod już istnieje. Procesory są podłączone do sieci. Pytanie brzmi, czy tworzymy narzędzie do wykrywania, czy botnet, który czeka, aż coś się wydarzy.

Po zakończeniu przetwarzania danych przez komputer oprogramowanie projektu wysyła je z powrotem do węzła sterującego. Węzeł je sortuje i umieszcza wyniki w odpowiedniej bazie danych. Następnie wysyła nową partię danych do Twojego komputera. Cykl ten powtarza się aż do zakończenia zadania. Jeśli w projekt zaangażowana zostanie wystarczająca liczba osób, ambitne cele zostaną osiągnięte w zaskakująco krótkim czasie.

W miarę jak systemy gridowe będą coraz bardziej zaawansowane, coraz więcej organizacji będzie tworzyć sieci uniwersalne. Może nadejść dzień, w którym korporacje bezpośrednio łączą się ze sobą. W takim świecie problemy obliczeniowe, które dziś wydają się nie do rozwiązania, można rozwiązać w ciągu zaledwie kilku godzin przetwarzania. Możemy tylko poczekać i zobaczyć.

Prawdziwy postęp: projekt porównania genomu

Teoria jest dobra, ale wyniki są ważniejsze. Jako dowód weź projekt porównania genomu. Celem tego badania było porównanie sekwencji białek z ponad 3500 organizmów. Zaczęło się 20 grudnia 2006 r.

Do 21 lipca 2007 r. projekt osiągnął już wszystkie swoje cele. Nie wymagało to ani jednej farmy superkomputerów. Do podnoszenia ciężkich ładunków wykorzystano system obliczeniowy typu grid. Na tym polega siła rozproszonych zasobów.

Co to jest przetwarzanie siatkowe?

Ludzie często mylą je ze standardową chmurą obliczeniową. Różnica polega na skali i celu. Siatka to sieć komputerów współdzielących zasoby w celu rozwiązywania dużych i złożonych problemów. Pełni funkcję wirtualnego superkomputera.

Można myśleć o przetwarzaniu sieciowym jako o wykorzystaniu zasobów z wielu domen administracyjnych do rozwiązania jednego problemu. Łączą moc wielu pojedynczych komputerów rozproszonych w sieci, często w publicznym Internecie. To odróżnia je od prostego klastra, który zwykle jest zlokalizowany w obrębie jednej organizacji.

Popularne przykłady projektów gridowych

Dlaczego jest to dla Ciebie ważne? Ponieważ te sieci rozwiązują kryzysy w świecie rzeczywistym. Oto kilka godnych uwagi przykładów:

  • SETI@home : Wykorzystuje wolną moc obliczeniową milionów komputerów osobistych do poszukiwania życia pozaziemskiego. Zamienia bezczynne procesory w stanowiska odsłuchowe w głębokim kosmosie.
  • Folding@home : Skupia się na zwijaniu białek. Badając zwijanie białek, naukowcy mają nadzieję lepiej zrozumieć choroby, takie jak choroba Alzheimera i Parkinsona.
  • Światowa sieć społecznościowa : Rozwiązuj problemy humanitarne. Należą do nich badania nad rakiem, badania nad HIV/AIDS i inicjatywy w zakresie czystej energii.

Projekty te pokazują, jak przetwarzanie sieciowe przekształca bezczynny sprzęt w moc do celów naukowych. Nie musisz być naukowcem, żeby pomóc. Wystarczy dostęp do Internetu i trochę wolnego czasu.

Dlaczego to ma teraz znaczenie

Złożoność tych systemów rośnie. Prawdopodobnie w najbliższej przyszłości więcej korporacji będzie tworzyć sieci uniwersalne. Zbliżamy się do epoki, w której problemy obliczeniowe są redukowane do możliwych do zarządzania fragmentów. To demokratyzuje obliczenia o wysokiej wydajności. Oznacza to, że nie potrzebujesz serwerowni wartej milion dolarów, aby przeprowadzić symulacje.

Infrastruktura już istnieje. Globus Alliance i Open Grid Forum w dalszym ciągu udoskonalają standardy. Firmy takie jak IBM od dawna inwestują w udostępnianie obliczeń gridowych. Narzędzia ułatwiają współpracę online przy realizacji zadań na dużą skalę.

Patrzę w przyszłość

Następnym razem, gdy zobaczysz, że Twój komputer stoi bezczynnie, pamiętaj, że może być częścią czegoś większego. Może analizować sekwencje białek lub skanować gwiazdy. Technologia dojrzała. Obszary zastosowań rosną. A wpływ jest realny.

„Przetwarzanie sieciowe zwiększa swój zasięg”.

Wszystkie elementy są na swoim miejscu. Pytanie tylko, czy uda nam się je odpowiednio szybko wykorzystać. Przyszłość pracy rozproszonej nie nadchodzi. To już tu jest i działa w tle naszego codziennego życia.