Mam duże doświadczenie. Myślę, że jest mnóstwo nieoczywistych problemów. Podobnie jak jedyną niezawodną instancją do uruchamiania aplikacji takiej jak Tigase jest cc1.4xlarge. Inne powodują problemy z dostępnością procesora, a to tylko loteria, czy masz szczęście uruchamiać swoje usługi na serwerze, który nie jest zajęty pracą innych osób.
Potrzebujesz także instancji o najwyższym możliwym I/O, aby upewnić się, że poradzi sobie z ruchem sieciowym. Wysokie I/O dotyczy szczególnie instancji bazy danych.
Nie jestem pewien, czy jest to oczywiste czy nie, ale jest problem z nazwami hostów w EC2, za każdym razem, gdy uruchamiasz zmianę nazwy hosta i zmiany adresu IP. Klaster Tigase jest dość wrażliwy na nazwy hostów. Istnieje sposób wymuszenia/zmiany nazwy hosta dla instancji, więc może to być sposób obejścia problemu.
Oczywiście mówię o klastrze dla milionów użytkowników online i naprawdę dużym ruchu 100k XMPP pakietów na sekundę lub więcej. Zasadniczo w przypadku dużych instalacji jest taniej i wydajniej mieć dedykowane serwery.
Generalnie Tigase działa bardzo dobrze na Amazon EC2, ale naprawdę potrzebujesz najnowszego kodu SVN, ponieważ ma wiele optymalizacji dodanych szczególnie po testach w chmurze. Jeśli podasz więcej szczegółów na temat swojej usługi, mogę mieć więcej sugestii.
Więcej komentarzy:
Jeśli chodzi o koszty, serwer dedykowany jest zawsze tańsza opcja dla stale uruchomiony serwis. O ile nie planujesz włączać/wyłączać serwerów co godzinę, polecam skorzystanie z dedykowanej usługi. Koszty są niższe, a wydajność jest bardziej przewidywalna.
Jednakże, jeśli naprawdę chcesz/trzeba trzymać na Amazon EC2 Podam kilka konkretnych liczb, poniżej znajduje się lista wystąpień i ile Zalogowani klaster był w stanie niezawodnie obsługiwać:
- 5 * cc1.4xlarge - 1mln 700k Zalogowani
- 1 * c1.xlarge - 118k Zalogowani
- 2 * c1.xlarge - 127k Zalogowani
- 2 * m2.4xlarge (z 5GB pamięci RAM dla tigase) - 236 tys. Użytkowników online
- 2 * m2.4xlarge (z 20GB pamięci RAM dla tigase) - 315k użytkowników internetowych
- 5 * m2.4xlarge (z 60GB pamięci RAM dla tigase) - 400k użytkowników internetowych
- 5 * m2.4xlarge (z 60GB pamięci RAM dla tigase) - 312k Zalogowani
- 5 * m2.4xlarge (z 60GB pamięci RAM dla tigase) - 327k Zalogowani
- 5 * m2.4xlarge (z 60GB pamięci RAM dla tigase) - 280K Zalogowani
kilka więcej komentarzy :
- Dlaczego ilość pamięci jest tak ważna? Wynika to z faktu, że moc procesora jest bardzo niewiarygodna i niespójna dla wszystkich instancji oprócz cc1.4xlarge. Masz 8 wirtualnych procesorów, ale jeśli spojrzysz na górne polecenie, często widzisz, że jeden procesor działa, a reszta nie. Ta niewystarczająca moc procesora prowadzi do wzrostu kolejki wewnętrznej w Tigase. Po przywróceniu zasilania procesora Tigase może przetwarzać oczekujące pakiety. Im więcej pamięci Tigase ma więcej pakietów może być w kolejce i lepiej radzi sobie z niedoborami procesora.
- Dlaczego jest 5 * m2.4xlarge 4 razy? To dlatego, że wielokrotnie powtarzałem testy w różnych dniach i porach dnia. Jak widać w zależności od czasu i daty system może obsługiwać różne obciążenia. Chyba dlatego, że instancja Tigase współużytkowała moc procesora z innymi usługami. Jeśli byli zajęci, Tigase cierpiał na procesor pod napięciem.
To powiedziawszy, myślę, że przy instalacji do 10k użytkowników online powinieneś być w porządku. Jednak inne czynniki, takie jak rozmiar planu, mają duże znaczenie, ponieważ wpływają na ruch i obciążenie. Także jeśli masz inne elementy, które generują znaczny ruch, spowoduje to obciążenie twojego systemu.
W każdym razie, bez niektórych testów nie można stwierdzić, jak naprawdę system zachowuje się i czy poradzi sobie z ładunkiem.
I ostatnie pytanie dotyczące części:
Oczywiście tigase dokłada wspierać XEP-0114 i XEP-0225 do podłączenia zewnętrznych komponentów. Nie powinno to stanowić problemu dla komponentów napisanych w różnych językach. Z drugiej strony zalecam używanie API Tigase do pisania komponentu. Mogą być wdrażane jako wewnętrzne komponenty Tigase lub jako komponenty zewnętrzne, co jest niewidoczne dla programisty, nie musisz się o to martwić w czasie programowania.Jest to część API i ramy. Możesz także użyć wszystkich towarów z frameworka Tigase, skryptów, monitorowania, statystyk, znacznie łatwiejszego programowania, ponieważ możesz łatwo wdrożyć swój kod jako wewnętrzny komponent do testów. Naprawdę nie musisz się martwić o jakieś specyficzne dla XMPP rzeczy, po prostu wypełniasz metodę processPacket (...) i to wszystko. Powinieneś mieć wystarczającą ilość dokumentacji online na stronie internetowej Tigase.
Sugerowałbym również czytanie o obsłudze Pythona dla wielowątkowości oraz o tym, jak zachowuje się ona przy bardzo dużym obciążeniu. Kiedyś nie było tak świetnie.
Dziękuję za odpowiedź (i za przygotowanie Tigase!). Dodałem więcej szczegółów na temat tego, co rozwijam :-) –
Wystarczy sprawdzić, czy wersja "tigase-server-5.1.0-beta3-b2667. tar.gz '(z http://www.tigase.org/node/2474/2199) będzie w porządku - czy byłoby lepiej, gdyby to był naprawdę ostatni zakup z SVN? –
Niesamowite, dziękuję za doskonały wgląd w Tigase i instrukcje. –