Gra internetowa - hierarchia klas |
Gra internetowa - hierarchia klas |
12.02.2007, 13:22:40
Post
#21
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) |
Przeczytaj dokladnie to co napisalem.
Baza to podstawa, a twoja watpliwosc to cache? heh |
|
|
13.02.2007, 19:26:35
Post
#22
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 23.10.2006 Ostrzeżenie: (0%) |
Racja. Nie dopatrzyłem tego cache :]
Nie muszę mówić, że zmęzenie, pośpiech itp... ? Myślę, że temat jest już do zamknięcia (nie wiem jak inni) Ten post edytował KOMPsognat 15.02.2007, 14:28:57 |
|
|
28.02.2007, 14:23:48
Post
#23
|
|
Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 30.05.2006 Ostrzeżenie: (0%) |
Przeczytaj dokladnie to co napisalem. Baza to podstawa, a twoja watpliwosc to cache? heh Pozwolisz że zapytam - cache zapytań masz na czym? Na plikach? No chyba że na memcache, co i tak nie zmienia faktu że memcache także ma ograniczone możliwości (choć przyznam że są one ogromne). Druga kwestia - wyobraź sobie że coś zmieniasz, np statystyki przedmiotu (co w dorosłej produkcji robi się bardzo rzadko - gracze nie cierpią gdy zmienia się coś w trakcie rozgrywki i przy pierwszej okazji cię za to zagryzą, zwłaszcza jeśli płacą za grę) i zmieniasz to na 500 serwerach. Teraz musisz połączyć się do 500 serwerów, wykonać zapytania a potem jeszcze dodatkowo uruchomić skrypt który wyczyści cache aby zmiany były widoczne. Musisz przy tym mieć ustawione w bazie danych by można się było łączyć z zewnątrz (mało bezpieczne rozwiązanie). Zapisując dane w plikach odpalasz skrypt który wykonuje svn update po kolei na każdym serwerze a php acceleratory same zauważają że plik się zmienił. Oba rozwiązania są dobre ale to drugie wydaje mi się wygodniejsze na dłuższą metę (choć jest to kwestia gustu i przyzwyczajeń). Pozdrawiam Ten post edytował KG- 28.02.2007, 14:27:31 |
|
|
28.02.2007, 14:57:51
Post
#24
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) |
Cytat Teraz musisz połączyć się do 500 serwerów, wykonać zapytania a potem jeszcze dodatkowo uruchomić skrypt który wyczyści cache aby zmiany były widoczne. Musisz przy tym mieć ustawione w bazie danych by można się było łączyć z zewnątrz (mało bezpieczne rozwiązanie). Zapisując dane w plikach odpalasz skrypt który wykonuje svn update po kolei na każdym serwerze a php acceleratory same zauważają że plik się zmienił. Capistrano (http://manuals.rubyonrails.com/read/book/17 ): umozliwia ci wykonanie tych zamych (lub innych) zadan (skrypty schellowe) na wielu maszynach, obsluga SVN, laczy sie przez ssh. Trzeba dopisac wlasne taski (zadania -- czyli te skrypty updatujace) i update robisz jednym poleceniem -------------------- Nie lubię jednorożców.
|
|
|
28.02.2007, 15:17:26
Post
#25
|
|
Grupa: Zarejestrowani Postów: 800 Pomógł: 0 Dołączył: 26.11.2005 Skąd: Nowy Sącz Ostrzeżenie: (0%) |
Szczerze powiem jak update się robi, to tak czy siak jest to rzadkie... W przypadku zwłaszcza komercyjnych systemów Dlategóż, można też przyjąć strategię jak plemiona.pl . Nowy serwer = nowa wersja gierki
Ten post edytował Turgon 28.02.2007, 15:18:25 -------------------- Jah Music Is On My Mind !
|
|
|
28.02.2007, 20:39:46
Post
#26
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 23.10.2006 Ostrzeżenie: (0%) |
No właśnie ten cennik będzie dość często modyfikowany przy produkcji nowych gier. Mimo wszystko myślę jednak, że oparcie tego na plikach w formacie jaki pokazałem wcześniej będzie najlepszym rozwiązaniem.
Ten post edytował KOMPsognat 28.02.2007, 20:39:58 |
|
|
1.03.2007, 13:37:40
Post
#27
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) |
Hehe, a powiedz mi jaka jest roznica miedyz wykonaniem na 500 serwerach svn up... a uzyciem jakiegos skryptu bashowego ktory sciagnie tobie plik PHP z instalacja nowej wersji, ktory sam bedzie wiedzial jak zmigorwac caly system do nowej wersji. Czasem roznice w plikach, a czasem w bazie? A tak plik z update sciagasz sobie, z konsoli jest uruchamiany powiedzmy w nocy. Sciaga skrypt SQL, wykonuje go w transakcji + zmienia pliki kodu (Tu mozna uzyc np: svn up) i po ptakach...
Trzymanie wszystkiego w plikach textowych - uwierz mi, ze to sie nie uda. Po to wymyslil ktos baze danych, zeby tam skladowac potrzebne inforamcje, a nie rozrzucac je po katalogach na dysku w formacie plikow textowych... Cache powiedzmy moze sie odswiezac co jakis czas... np: Po takim update moze automatycznie cache byc kasowane. @KG-: Nie udostepniasz bazy na zewnatrz... Logujesz sie po ssh, wykonujesz komende i tyle. Zawsze mozesz przemycic do kodu gry jakas akcje odpowiedzialna za update systemu. Cron co dzien w nocy laczy sie z twoim serwerem, sciaga definicjie xml'a, sprawdza czy jest nowsza wersja - JEST. Sciaga paczke, unzipuje, wykonuje komendy sql, wgrywa nowe pliki, uruchamia pliki php odpowiedzialne np: za skonwertowanie starej bazy do nowego formatu, przeprowadza testy jednostkowe, i jesli jest wszystko ok, to konczy proces. Masz 500 serwerow - bo o takiej skali zaczoles mowic to ulatwi proces jeszcze bardziej niz zalogowac sie 500 razy i zrobic svn up... Ten post edytował Ace 1.03.2007, 13:44:05 |
|
|
2.03.2007, 17:40:55
Post
#28
|
|
Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 30.05.2006 Ostrzeżenie: (0%) |
Cytat Trzymanie wszystkiego w plikach textowych - uwierz mi, ze to sie nie uda. Uwierz mi że nie tylko się uda ale już się udało, działa bardzo ładnie przy 1000+ użytkowników jednocześnie Cytat Masz 500 serwerow - bo o takiej skali zaczoles mowic smilingsmiley.gif to ulatwi proces jeszcze bardziej niz zalogowac sie 500 razy i zrobic svn up... Ja nigdzie nie pisałem żeby się logować, można odpalać svn update zdalnie na wszystkich serwerach jednocześnie. Jakbym przy każdym update-cie się musiał logować na ssh po kolei na wszystkie serwery, to bym chyba jakiejś choroby nerwowej dostał Jak pisałem wyżej - kwestia przyzwyczajeń, ja wychodzę z założenia żeby oszczędzać bazę i memcache bo one mają ważniejsze rzeczy do roboty niż wczytywać dane które się zmieniają raz na 2 miesiące albo rzadziej. |
|
|
5.03.2007, 09:46:07
Post
#29
|
|
Grupa: Zarejestrowani Postów: 216 Pomógł: 0 Dołączył: 9.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) |
Czyli robiłeś testy i mówisz, że baza nie wytrzyma 1000+ użytkowników?
|
|
|
7.03.2007, 14:33:19
Post
#30
|
|
Grupa: Zarejestrowani Postów: 61 Pomógł: 0 Dołączył: 30.05.2006 Ostrzeżenie: (0%) |
Wytrzyma czy nie wytrzyma to zbyt generalne pojęcie
Zależy która baza, jaki engine, na jakim sprzęcie, co musi zrobić w pojedynczym żądaniu itd. Na mysql 4.1 bez cache-owania było już momentami ciężko przy ok 1400 użytkownikach jednocześnie (klikających w miarę często, w końcu to gra) na dedyku z 3gb ramu. Obciążenie bazy danych potrafiło osiągnąć 50-60%, po zastosowaniu memcache spadło do ok 15-25%. Mimo wszystko wolę zapisywać takie rzeczy w plikach, łatwiej mi edytować plik pod edytorem niż logować się do bazy i wykonywać zapytania + czyścić cache. A jak ktoś nie używa memcache i robi cache na plikach, to wrzuca do bazy dane, które i tak zostaną zapisane w pliku i z pliku będą odczytywane. Kolejna kwestia - wolisz zapis w bazie ze względu na wygodę zmian - jak pisałem wcześniej w dorosłej produkcji nie dasz rady zmieniać czegoś co chwilę, gracze naprawdę nie lubią jak zmienia się coś w trakcie gry Ten post edytował KG- 7.03.2007, 15:17:55 |
|
|
7.03.2007, 15:52:21
Post
#31
|
|
Grupa: Zarejestrowani Postów: 402 Pomógł: 0 Dołączył: 20.01.2003 Ostrzeżenie: (0%) |
MySQL lepiej sobie odpuścić do takich projektów. PostgreSQL albo MSSQL. Od kiedy przerzuciłem się na postgresa to mysqla wspominam tylklow koszmarach zupelnie inny komfort pracy
-------------------- |
|
|
7.03.2007, 18:00:18
Post
#32
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) |
~Vogel przerzuć się na wspomnianego przez siebie MS SQL'a. Dopiero będziesz miał koszmary. Ta baza to porażka.
W tej sytuacji PostgreSQL wydaje się być najlepszym rozwiązaniem. |
|
|
Wersja Lo-Fi | Aktualny czas: 19.04.2024 - 03:49 |