2012-05-25 19 views
5

Rozważam budowę witryny za pomocą php, ale jest kilka aspektów, które działałyby o wiele lepiej, gdyby były wykonane w node.js. W tym samym czasie duże części strony muszą pozostać w PHP. Dzieje się tak dlatego, że wiele funkcji jest już opracowanych w PHP, a przebudowa, testowanie itd. Byłoby zbyt dużym przedsięwzięciem, i szczerze mówiąc, te części witryny działają doskonale w PHP.Używanie php + gearman + node.js

Rozważam przebudowanie sekcji w pliku node.js, która skorzystałaby z działania większości w węźle node.js, a następnie przekazanie przez PHP żądania do node.js przy użyciu urządzenia Gearman. W ten sposób skanuję skalę, uruchamiając więcej pracowników i kierując się rozkładem obciążenia.

Nasza strona ma duży ruch i jestem zaniepokojony, czy mechanik poradzi sobie z tym ładunkiem. I wa utrzymać to pytanie wydajne, więc skupmy się w dużej mierze na następujących punktów adresowalnych:

  • Czy gearman obsługiwać wszystkie oczekiwane obciążenia zakładając mamy pamięć (potencjalnie wokół 3000+ kolejce pracy w momencie, z kilkoma tysiącami przetwarzanymi na sekundę)?
  • Czy to działałoby lepiej, gdybym tylko przekazał żądania do node.js przy użyciu CURL, a jeśli tak, to czy plik node.js zapewnia jakikolwiek sposób dystrybucji obciążenia na wiele wystąpień danego skryptu?
  • Czy mechanik może być skonfigurowany w taki sposób, aby nie było pojedynczego punktu awarii?
  • Jakie problemy widzisz, zarówno jeśli chodzi o rozwój, jak i skalowanie?

Zwracam uwagę szeroki zakres punktów więc ktoś przegląda ten słupek może zbierać szeroki zakres informacji w jednym miejscu dotyczących spraw, które silnie wpływają na siebie wzajemnie.

Oczywiście przetestuję to wszystko, ale chcę zebrać jak najwięcej informacji przed potencjalnym podjęciem czegoś takiego.

Edytuj: Duży powód, dla którego używam ekwipunku, nie wynika z jego niezablokowanej struktury, ale z powodu jego czystej prędkości.

+0

_Czy stary biegnik poradzi sobie z każdym oczekiwanym obciążeniem? _ To pytanie typu "jak długo jest ciągiem" i zależy od tego, ile masz serwerów pracowniczych, jak szybko zapełniają się kolejki i jak dużo wysiłku, który każdy element wymaga do przetworzenia. Jeśli możesz zrobić kilka tysięcy na sekundę na jednym serwerze, a nie ustawisz ich w kolejce na wyższą stałą stawkę, powinienem pomyśleć, że wszystko będzie dobrze. Gearman może być używany w trybach blokowania i bez blokowania btw, i zdecydowanie warto iść. – halfer

Odpowiedz

4

Mogę mówić tylko na pytania o Gearman:

Czy gearman obsługiwać wszystkie oczekiwane obciążenia zakładając mamy pamięć (potencjalnie wokół 3000+ kolejce miejsc pracy w momencie, z kilku tysięcy przetwarzane za druga)?

Krótki: Tak

Długi: Wszystko ma swoje granice. Jeśli twoje zlecenia są zbyt duże, możesz napotkać problemy. Gearman przechowuje swoją kolejkę w pamięci .. więc jeśli twoje ładunki przekroczą ilość pamięci dostępnej dla Gearmana, napotkasz problemy.

Czy mechanik może być skonfigurowany w taki sposób, że nie ma pojedynczego punktu awarii?

Gearman posiada wtyczkę/rozszerzenie/komponent dostępny do używania MySQL jako magazynu trwałości. W ten sposób, jeśli Gearman lub sama maszyna ulegnie zniszczeniu, możesz przywrócić ją z powrotem tam, gdzie ją przerwała. Wiele serwerów-pracowników może pomóc w utrzymaniu działania, jeśli inni pracownicy zostaną pokonani.

+0

Dzięki. To odpowiada na niektóre kluczowe punkty, które miałem na temat sprzętu. Przetestuję te rzeczy, aby sprawdzić, czy to działa poprawnie dla naszej realizacji. – user396404

1

Węzeł ma cluster module, który może wykonać podstawowe równoważenie obciążenia dla n procesów. Może się przydać.

Powszechną architekturą tutaj, w nodejs-land, jest sprawdzenie, czy twoje węzły rozmawiają http, a następnie wykorzystują pewien sposób równoważenia obciążenia, taki jak http proxy lub service registry. Jestem pewien, że jest mniej więcej tak samo gdzie indziej. Nie wiem wystarczająco dużo o sprzęcie, żeby powiedzieć, czy to będzie "wystarczająco dobre", ale jeśli to jest ogólny pomysł, wyobrażam sobie, że będzie dobrze. Przynajmniej inni ludzie byliby zainteresowani usłyszeniem, jak poszło, jestem pewien!

Edycja: Pamiętaj, że chrupanie numerów zablokuje pętlę zdarzeń węzła! Jest to dość oczywiste, jeśli się nad tym zastanowić, ale z pewnością o czymś warto pamiętać.

+0

Dzięki. Wydaje się, że jest to opłacalna opcja równoważenia obciążenia dla node.js. Będę musiał sprawdzić, jak rozkłada obciążenie i jakie rodzaje nadmiarowości i trwałości są dostępne. – user396404

+0

Ponadto, powinienem wyjaśnić w moim poście, że blokowanie zdarzeń nie jest moim głównym problemem, ponieważ używam node.js głównie ze względu na jego szybkość. Zaktualizowałem mój pierwotny wpis, aby było to bardziej jasne. – user396404

+0

Chociaż jest to prawdopodobnie zbyt wczesna faza dla Twojej witryny, możesz być zainteresowany tym portem Węzła do PHP: http://nodephp.org –