Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Przetwarzanie asynchroniczne w zastosowaniach webowych

Przetwarzanie asynchroniczne w zastosowaniach webowych

Leszek Krupiński

May 24, 2011
Tweet

More Decks by Leszek Krupiński

Other Decks in Programming

Transcript

  1. Ja  Kontakt z Linuksami od 1995 r.  Administrowanie

    Linuksami od 1999 r.  Programowanie dla Webu od 2000 r.  Aktualny etat: Instytut Techniczny Wojsk Lotniczych  Oprócz tego: optymalizacja serwisów, konsulting, budowanie architektury
  2. Wyobrażenie  Klient wysyła zdjęcie  Serwer generuje miniatury obrazków

     Serwer rozsyła komunikaty do znajomych  Serwer regeneruje RSS  Klient dostaje odpowiedź o powodzeniu
  3. Realia  Klient przesyła zdjęcie  Serwer generuje miniatury 

    Klient po dziesięciu sekundach się nudzi i odświeża stronę  Serwer znowu generuje miniatury  Klient po kolejnych dziesięciu sekundach się wkurza i wyłącza przeglądarkę
  4. Rozwiązanie tradycyjne I  Zapisanie zdjęcia do katalogu  Regularne

    przeglądanie katalogu w poszukiwaniu nowych plików  Przetwarzanie plików  Zalety: brak opóźnienia dla klienta on-line  Wady: ograniczony zakres zastosowań, mała wydajność, opóźniona reakcja – technika pull
  5. Rozwiązanie tradycyjne II  Dopisanie zadania do bazy SQL 

    Regularne przetwarzanie nowych zadań – Cron Job  Zalety:  dowolność technologii  Wspólny element: obsługa bazy danych  Wady:  opóźnione przetwarzanie  technika pull  tight coupling  sztywne spinanie przetwarzania – czy w kodzie, czy w konfiguracji
  6. Kolejka  zwana też ogonem lub ogonkiem. Forma nietrwałej zbiorowości

    powstająca przy transakcji (kolejki mieszkaniowe w PRL były trwałe, gdyż okres oczekiwania wynosił czasem powyżej 20 lat, także oczekiwanie na samochód w NRD trwało kilkanaście lat). Wiąże się ona ze zbyt małą liczbą osób oferujących dany towar/usługę w stosunku do zapotrzebowania i czasu obsługi. W wyniku tej sytuacji powstaje zgromadzenie ludzi, którzy organizują kolejność obsługi.  Prawidłowy przebieg transakcji: klienci są obsługiwani według kolejności ich przybycia do kas (np. w sklepie) lub rejestracji (u lekarza). W niektórych przypadkach jest to zbiorowość rozproszona, np. wówczas, gdy osoby zamawiają kolejkę czyli ustalają kolejność transakcji, jednak nie przebywają w tej samej przestrzeni, w pobliżu dokonywania transakcji pozostają tylko osoby, które zostaną obsłużone w najbliższym czasie.
  7. PO CO KOLEJKA W WEBIE?  Długotrwałe zadania  Przetwarzanie

    w tle  Rozsyłanie informacji  Jeden nadawca, wielu odbiorców  Pewność transmisji  Zapewnienie przetworzenia każdego komunikatu
  8. AMQP - Kolejka++  Otwarty protokół  Metoda publish-subscribe 

    Routing  Gotowe implementacje – np. RabbitMQ  Bramki do innych protokołów