Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.
Post
#1
|
|
|
Admin Techniczny Grupa: Administratorzy Postów: 2 072 Pomógł: 93 Dołączył: 5.07.2005 Skąd: Olsztyn |
Temat założony na prośbę SHIPa oraz normanosa traktujący o rozkładaniu obciążenia na wiele maszyn
|
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 352 Pomógł: 53 Dołączył: 10.08.2009 Ostrzeżenie: (0%)
|
Przepraszam, ze tego trupa odgrzebuję, ale miałbym coś do powiedzenia w tym temacie. Delikatnie.
Pierwsze i zasadnicze jestem przede wszystkim programistą takich technologii jak ColdFusion czy ASP.NET i tam loadbalancing nie jest problemem. Pythona nie dotykałem więc nie wiem. Ale wracając do brzegu (IMG:style_emoticons/default/winksmiley.jpg) Opiszę jak to wygląda na serwerze ColdFusion i jakie rozwiązanie zastosowalem. ColdFusion: 1. Tworzony jest plik application.cfm i jeżeli taki istnieje jest dołaczany do każdego wywołania - dzięki temu zmienne aplikacyjne mogą być trzymane w jednym miejscu i mogą być WSPÓLNE dla wszystkich wywołań skryptu, przez dowolnego użytkownika, a to oznacza, że mamy ponad użytkownikowe rozwiązanie. 2. Istnieje coś takiego jak Client Scope - takie zmienne sesyjne dla klienta, dla przeglądarki. Jak to jest rozwiązane nie mam bladego pojęcia. Ważne że przeglądarka - ta sama instancja jest rozpoznawalna. Wewnątrz jest utrzymywany stan sesji i na wywołaniu z tego samego klienta stan jest odwtarzany. 3. Trzeba dodać, że jak się skorzysta ze zmiennych sesyjnych serwera Java (który jest pod spodem ColdFusion) to można clustrować dowoli serwery, a one sobie ze sobą poradzą Napotkałem ten problem w jednym grubym projekcie intranetowym na serwerze PHP. Ponieważ za specjalnie nie potrafiłem sobie poradzić, więc podszedłem do tematu z innej strony. Pierwsze opisałem sobie czego mi w PHP brakuje z lepsiejszych (no cóż wygoda programowania CF czy .NET nie do porównania z PHP ^^) rozwiązań. Wypisalem sobie i się okazało, że wcale nie jest tak źle ^^. Cold Fusion daje możliwość składowania ciastek dla klienta po stronie serwera, a u klienta leży jedna zmienna z id ciastka (IMG:style_emoticons/default/biggrin.gif) i CF jakoś to robi, ze rozpoznaje że to ten user (klient) był. Zakasałem rękawy i przeryłem stado dokumentacji do PHP i .NET i do tworzenia modułów do PHP. Po miesiącu prób i błędów udało mi się wyprodukować dll'kę która zwracała hello world! (IMG:style_emoticons/default/smile.gif) Ale to już był gotowy przepis na rozwiązanie moich problemów. Jak się udało wypluć hello world to da się cokolwiek zrobić. Wykonałem więc dll'kę, która odczytywała zmienne sesji z bazy danych i wrzucała je do skryptu PHP. Voile'a - między serwerowe rozwiązanie (IMG:style_emoticons/default/winksmiley.jpg) Co prawda potrzebna była taka maszyna, która to w bazie utrzyma, wysokiej dostępności i na pewno nie MyShitQL (sorry jeżeli kogoś urażam, ale to moja opinia). I znalazła się. Jakiś tam Echange stał, który tylko pocztę serwował z 16 procesorów oO. SQL Server Workgroup się znalazł i zaczeło gadać. Pozostała jeszcze kwestia rozpoznawania klienta. W tym wypadku było to o tyle prostsze, że to był intranet, więc ciastko zapodałem i dowidienia. Zapytacie na pewno jak z wydajnością. No cóż. Okazało się, że początek nie był radosny. Opóźnienie skryptu z jednej maszyny o jakieś 200%. Niestety, ale to mnie na chwilę znowu zatrzymało. Okazało się, że problemem stało się dochodzenie do zmiennych sesji $_SESSION przez dll. Znowu drobna przebudowa dll i extend replace na skrypty php ze zamianą $_SESSION na $_SESS (i przestawinie się w głowie na takie używanie zmiennych). Kolejna sprawa, że stało się dla mnie niezbędne korzystanie ze zmiannych aplikacyjnych globalnych dla wszystkich użytkowników. TO akurat było prosto rozwiązać. Napisałem skrypcik ładujący dane do tabeli $_APP (znowu naleciałości z coldka) i dodalem .htaccess z wpisem: php_value auto_prepend_file "/sciezka/do/application.php" oczywiscie, że próbowało dopisywać do każdego pliku. Proste rozwiązanie: if(!$_APP) i już. Mam zmienne aplikacyjne, mam załatwiony load balancing i mam sprawny intranet - kodu dll nie zapodam - kupę kapuchy za to położyli. Na zakończenie tego wtrącenia trzeba dodać parę uwag: 1. Jak chcesz tak zrobić wybierz DOBRY serwer bazodanowy. Najlepiej nadają się do tego SQL Server w wersji Workgroup lub wyższej, ORACLE lub PostgreSQL. 2. NIGDY nie próbuj zmuszać serwery do komunikacji między sobą. Postaw maszynę, dającą sesje ale niech maszyny ze sobą nie współpracują w jakiś "zacieśniony" sposób - niepotrzebnie zużyjesz zasoby. PHP jest nieclustrowalny w sposób prosty i trzeba się z tym pogodzić dopóki programiści czegoś nie wysmażą. 3. Przy tworzeniu dll'ki dałem jej parę parametrów konfiguracyjnych ładowanych przez php.ini: - nazwa clustra - id serwera - dane dostępowe do bazy danych z sesjami - dzięki nazwie clustre'a taka maszyna może obsługiwać ileś clustrów i ją samą też można clustrować - to już naprawdę na poziomie very high lodaed applications - ale wtedy weźmiecie coś lepszego nie PHP (IMG:style_emoticons/default/biggrin.gif) 4. Regularnie usuwaj sesje, które wygasły. Najlepiej jakiś sprytny trigerek on insert. ALbo Scheduled Task w Windows lub cron w UX To porada dla naprawdę bardzo potrzebujących i muszących łączyć DUŻĄ ilość serwerów. Jest jednak sprytniejsze rozwiązanie. Może mniej wydajne, ale zawsze. Ustaw jedną maszynę z serwerem obsługującym dane aplikacyjne sesyjne i inne cuda. Jak nie chcecie IIS z .NET może być zwykły Debian z JBoss'em. Zmienne Javy bardzo dobrze się sprawdzają. Przy odpaleniu dowolnego skryptu wywołujesz jeden jedyny plik z tamtego serwera (zmienne aplikacji nie będą się zmieniać zbyt często), który PRZEPISUJE Ci zmienne do php. eval i dowidienia (IMG:style_emoticons/default/winksmiley.jpg) Tak teraz mi dwie aplikacje na po trzy serwery chodzą. Z tyłu stoi .NET, który stoi na windzinie XP i się sprawdza. A to najważniejsze. Sprawdza się na tyle, ze nie zamierzam znowu jakichś karkołomnych skoków robić - dodam, że aplikacje obciążane są średnio dziennie na jakieś 45k wywołań przez ok 3k użytkownków. Raporty finansowe, cuda wianki, wnisoki i inne duperele. Żeby jeden workflow przejść trzeba zrobić jakieś 10 wywołań. To tak tytułem odgrzewania trupów (IMG:style_emoticons/default/smile.gif) trafiłem tu bo znowu robie high loaded i myślałem, że może coś się zmieniło w tym temacie. A że klient chce PHP na Linuxie.... .NET odpada, Javy nie wystawię, zostaje lip w C++. Trzeba się przeprosić... |
|
|
|
kwiateusz Duże aplikacje i load balancing 2.08.2008, 18:53:14
LBO Muskający powierzchnię tematu wpis na blogu Talena... 2.08.2008, 19:01:00
wrauk dzięki za link do mojego bloga, widzę, że temat os... 4.08.2008, 20:33:26
Kocurro No to Panowie zaczynajmy - może na początek odnosz... 5.08.2008, 11:02:55
wlamywacz A jest możliwość utworzenia dysku sieciowego i na ... 5.08.2008, 12:25:49
Kocurro Pomysł dość dobry ale wydaje mi się, że problemem ... 5.08.2008, 12:37:12
wrauk Soft do obsługiwania takich sesji już istnieje i n... 5.08.2008, 12:55:10 
Sedziwoj Cytat(wrauk @ 5.08.2008, 13:55:10 ) M... 5.08.2008, 13:41:27
wlamywacz CytatPomysł dość dobry ale wydaje mi się, że probl... 5.08.2008, 21:09:04 
mike Cytat(wlamywacz @ 5.08.2008, 22:09:04... 5.08.2008, 21:18:30 
wrauk Cytat(wlamywacz @ 5.08.2008, 22:09:04... 5.08.2008, 21:22:56
jarek_bolo Witam, specjalnie doświadczony nie jestem, ale tak... 5.08.2008, 22:08:59 
wrauk Cytat(jarek_bolo @ 5.08.2008, 23:08:5... 6.08.2008, 07:56:52 
jarek_bolo Cytat(wrauk @ 6.08.2008, 08:56:52 ) Z... 6.08.2008, 08:51:23 
wrauk Cytat(jarek_bolo @ 6.08.2008, 09:51:2... 6.08.2008, 09:45:00
Kocurro jarek_bolo: niestety Twój pomysł byłby o wiele mni... 6.08.2008, 09:18:14
wlamywacz A co z adresami typu www2.cos.pl ? 6.08.2008, 10:13:25
Kocurro Widziałem ale jeśli mam być szczery to to jest roz... 6.08.2008, 10:18:46
wlamywacz Ale jak działa to
www2.cos.pl itd. bo nawet nie wi... 6.08.2008, 11:38:17 
mike Cytat(wlamywacz @ 6.08.2008, 12:38:17... 6.08.2008, 11:47:12
Kocurro Normalnie Serwer ma taką nazwę, dns wskazuje na j... 6.08.2008, 11:41:48
normanos a mnie ciekawiły by rady w jakim kierunku iść kied... 6.08.2008, 13:48:56 
wrauk Cytat(normanos @ 6.08.2008, 14:48:56 ... 8.08.2008, 09:47:21 
normanos Cytat(wrauk @ 8.08.2008, 08:47:21 ) K... 8.08.2008, 09:57:13 
wrauk Cytat(normanos @ 8.08.2008, 10:57:13 ... 8.08.2008, 10:35:20
grzegory Przyłączam się do tematu.
Mój problem wygląda nas... 7.08.2008, 21:36:06
wlamywacz Kup serwer dedykowany, da radę bez problemu. Patrz... 7.08.2008, 21:50:20
Sedziwoj @grzegory
Zacznę od tego że to raczej nie jest tem... 7.08.2008, 21:56:20
Ace Od kilku miesięcy interesuje się tematyką wysokich... 12.08.2008, 11:03:43
rashid Pozwole sie wtracic, bo Panowie proboja rozwiazac ... 27.11.2008, 12:27:56 
enigma Cytat(rashid @ 27.11.2008, 13:27:56 )... 13.01.2009, 21:24:38 
rashid Cytat(enigma @ 13.01.2009, 21:24:38 )... 13.01.2009, 21:41:01
Krolik Jeśli baza danych się nie wyrabia i używamy MySQL/... 2.12.2008, 10:37:42 
rashid Cytat(Krolik @ 2.12.2008, 10:37:42 ) ... 11.12.2008, 11:10:50
klakson Witam serdecznie,
chcialbym wykonac aplikacje w p... 20.12.2008, 13:05:29 
rashid Cytat(klakson @ 20.12.2008, 13:05:29 ... 20.12.2008, 14:11:47
normanos piszesz, że będziesz mielił dane z dysku a potem w... 20.12.2008, 13:47:49
klakson Dzieki za pierwsze odpowiedzi, i juz uscislam, bo ... 20.12.2008, 16:37:27
Kocurro Wybaczcie offtopic ale nie mogę.
Kolega się z cho... 20.12.2008, 16:59:28
klakson No ok Kocurro,
ale moze po pierwsze, to przeczyta... 20.12.2008, 18:52:22
rashid Zalozenie, ze operujac na wlasnym formacie plikow ... 20.12.2008, 18:53:32 
Krolik Cytat(rashid @ 20.12.2008, 18:53:32 )... 2.01.2009, 12:18:16 
rashid Cytat(Krolik @ 2.01.2009, 12:18:16 ) ... 2.01.2009, 14:05:11
Kocurro Szanowny kolego klakson - proponuje najpierw zapoz... 20.12.2008, 19:40:32
erix CytatA przechodzac do sedna, w czym niby jest prob... 20.12.2008, 20:06:03
wlamywacz Założenia projektu sobie niezbyt realne. Kolega na... 25.12.2008, 10:52:03
djhors Witam Wszystkich.
Z braku czasu niezagladam tu za... 29.12.2008, 11:07:55
luinnar Tak sobie czytam ten wątek i zastanawiam się nad k... 1.01.2009, 10:23:55
Krolik Rashid, porównujesz z MySQLem i słusznie zauważyłe... 5.01.2009, 11:43:18 
rashid Cytat(Krolik @ 5.01.2009, 11:43:18 ) ... 7.01.2009, 11:12:22
fragles a ja mam pytanie podstawowe
- jak się to liczy to ... 7.01.2009, 10:33:20
Krolik Nie będę wchodził w szczególy, bo odeszliśmy od te... 7.01.2009, 13:06:25
enigma dziękuje wygląda ciekawie - na pewno przeczytam.
... 13.01.2009, 21:58:21 
rashid Cytat(enigma @ 13.01.2009, 21:58:21 )... 19.01.2009, 22:53:16
Ormin Myślę, że wypadałoby odświeżyć temat. Przy okazji ... 16.05.2010, 22:19:23
BugsBunny Odgrzebie temat, bo mam trochę praktyki w tym tema... 15.09.2012, 22:20:20 ![]() ![]() |
|
Aktualny czas: 21.11.2025 - 07:37 |