Czy nikt inny nie ma doświadczenia w prowadzeniu czegoś takiego? Huh
Istnieje kilka powodów, które łączą zarówno kod, jak i systemy. Po pierwsze, pamiętaj, że większość obecnych „dużych” silników MMO została zaprogramowana kilka lat temu i pomimo ulepszeń grafiki i technologii od tego czasu wciąż zależą od sposobu, w jaki wiele z tych systemów zostało napisanych w 2000 roku. Na przykład Eve-Online nadal działa na jednej ogromnej instancji Microsoft SQL Server, dlatego zawsze starają się wyciągnąć z niej więcej, aktualizując sprzęt.
Przykładem poprawy od czasu rozpoczęcia WoW i EVE jest praca w rozproszonych bazach danych / kluczach, takich jak MapReduce Google (i jego implementacja typu open source, Hadoop), wyjątkowo szybkie kolejki przetwarzania odpowiedzi twierdzącej (Amazon SQS) i inne „ technologie zorientowane na chmurę.
Mam największe doświadczenie z EVE (jestem bardziej facetem od laserów niż facetem od bitew), więc niektóre z tych przykładów są bardziej zorientowane na EVE.
Jeśli chodzi o powody systemowe:
- Węzły fizyczne ulegają awarii w sposób spójny. Gdy węzeł zawiedzie, zazwyczaj jego aktywność jest migrowana gdzie indziej przy użyciu dowolnej liczby środków. Węzeł należy jednak jak najszybciej przywrócić do użytku. W przypadku EVE używają zarówno języka przetwarzania bez stosów, jak i serwerów wirtualnych; Nie jestem pewien, jak wygląda architektura Blizzarda.
- Spójność bazy danych musi zostać sprawdzona, dzienniki muszą zostać wyczyszczone, a indeksy i pamięci podręczne danych muszą zostać odbudowane. Jest to szczególnie ważne w systemie takim jak EVE z tylko jedną „aktywną” instancją bazy danych.
- Łaty systemu operacyjnego należy nakładać w momencie, gdy mogą one ponownie uruchamiać węzły bez konieczności zbyt dużej aktywności migrującej w innym miejscu. Migracja zajmuje wiele zasobów sieciowych, które w innym przypadku mogłyby zostać przeznaczone na przetwarzanie online.
- MMO oparte na RDBMS mają ogromne problemy z blokowaniem danych i integralnością referencyjną. Przestoje służą do czyszczenia starych blokad i przerw integralności z dzienników aktywności.
- Większość gier implementuje umieszczone geograficznie pamięci podręczne danych dla danych statycznych lub półstatycznych (patrz podsumowanie danych buforowania poniżej) w obszarach intensywnego użytkowania, tj. Na wschodnim wybrzeżu w porównaniu do zachodniego wybrzeża USA. Te pamięci podręczne są aktualizowane ręcznie podczas przestoju.
Jeśli chodzi o powody związane z oprogramowaniem:
- Gry, gdy działają, używają dużo OLTP - to jest Przetwarzanie Transakcji On Line - rodzaj odczytu / zapisu do baz danych. Czasami jednak potrzebujesz raportu podsumowującego ... na przykład, ile konkretnej bestii zabiłeś w ciągu ostatnich 3 lat mielenia. Najlepiej radzi sobie z tym raport OLAP - czyli przetwarzanie analityczne On Line - który zawiera informacje podsumowujące oparte na wielu wierszach w gigantycznym zbiorze danych. W rzeczywistości gry implementują systemy, które wykorzystują OLAP do budowy pamięci podręcznej, aby ograniczyć liczbę zapytań, które należy odczytać - tj. Budują sumę na określony dzień, a kiedy zadajesz pytanie, po prostu czytają wiersze ze sklepu OLTP, które podsumowują okres od określonej daty. Połącz te dwa elementy i możesz oszacować, jak bezwartościowe stało się twoje życie.
- Wspomniane wyżej poprawki, które widzę jako problem z oprogramowaniem, ale twórcy oprogramowania postrzegają jako problem systemowy. ;)
- Uzupełnianie zapasów przedmiotów - w Ewie pasy asteroid są odświeżane każdej nocy, a niektóre kompleksy są również poddawane recyklingowi. Można to zrobić w pewnym stopniu w trybie on-line, ale niektóre algorytmy są zbyt skomplikowane i należy je wykonać w trybie off-line, ponieważ krótko podnoszą bazę danych na kolana, gdy podsumowują aktywność gospodarczą z poprzedniego dnia.
Prowadzenie gospodarki z zamkniętymi i otwartymi pętlami to jeden problem dla operatorów MMO - jeśli mi nie wierzysz, przeczytaj niektóre akademickie artykuły napisane o ekonomii gier i niektóre badania starszych gier, takich jak Ultima Online, które miał względnie prymitywne gospodarki. Analiza, która musi się zdarzyć, aby uzupełnić otwarte pętle i zidentyfikować oszustwo i inną negatywną działalność gospodarczą, musi odbywać się offline z migawką danych, którą czasami można wykonać tylko wtedy, gdy baza danych jest całkowicie zamknięta.
Jeśli zauważysz, konserwacja Eve odbywa się w południe w Anglii, gdzie znajduje się główne centrum danych.
Niektóre z dłuższych przestojów w EvE Online dotyczyły instalowania nowego sprzętu, takiego jak szybsza sieć SAN. Podczas gdy można technicznie przenieść większość danych, tworząc nową grupę plików na nowym dysku, a następnie opróżniając główną, to spowodowałoby to dłuższy okres zmniejszonej wydajności z powodu stałego we / wy. Więc zdecydowali się odłączyć bazę 1.1TB i przenieść go w jednym zamachem.
Odpowiedź na to pytanie zależy również od konkretnego zastosowania. Na przykład serwer obsługujący określony system gwiezdny nie może zostać zamieniony na gorąco bez zakłócania gry, więc przestoje służą do przypisania mocniejszych serwerów do potencjalnych punktów aktywnych. Ponadto obliczane są obliczenia własności (suwerenności) układów gwiezdnych. Zależy to od dziesiątek różnych zmiennych, z których wszystkie mogą się zmieniać w zależności od działań gracza. Nie trzeba dodawać, że wykonanie tego na żywo może powodować nadmierne blokowanie i / lub inne problemy z współbieżnością. Ale zajęcie się tymi problemami najlepiej pozostawić do przepełnienia stosu .
źródło
przypuszczalnie coś, z czym nie można sobie poradzić za pomocą klastrowania / równoważenia obciążenia, takie jak duże zmiany schematu DB.
źródło
W ostatnim temacie Jak często powinienem restartować serwery linuxowe wspomniałem o innym dobrym punkcie, sprawdzając, czy wszystko uruchamia się poprawnie po restarcie lub po każdej (dużej) zmianie konfiguracji.
źródło
Prosta aktualizacja sprzętu (lub wymiana sprzętu) jest również prezentowana jako „konserwacja serwera” przez gry MMORPG. Tak trywialne, że często o tym zapominamy.
źródło
W Erlang zaimplementowałem architekturę MMO, która obsługuje aktualizacje i dystrybucję kodu. Na przykład jeden „GamePlay Server” może działać na dowolnej liczbie komputerów, jeśli potrzebna jest aktualizacja sprzętu, jego obiekty mogą być przenoszone (w czasie rzeczywistym) na inne maszyny. Umożliwia to aktualizację oprogramowania bez przestojów.
Możesz sprawdzić moją stronę na http://www.next-gen.cc .
źródło
Jestem przekonany, że okno konserwacji pozwala również na rutynową wymianę sprzętu, aby zapewnić, że komponenty nie zawiodą.
źródło