PRZETWARZANIE ASYNCHRONICZNE W ZASTOSOWANIACH WEBOWYCH Leszek Krupiński WebClusters 2011
Dec 02, 2014
PRZETWARZANIE ASYNCHRONICZNE W ZASTOSOWANIACH WEBOWYCHLeszek KrupińskiWebClusters 2011
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
WebPING-PONG PING-PONG PING-PONG
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
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ę
Przetwarzanie asynchroniczneKlient dostaje komunikat, przetwarzanie idzie w tle
Use CaseGenerowanie miniaturek
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
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
Odkrycie XXI wieku
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.
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
A w praktyce?
Super FajnySerwis Internetowy
Super FajnySerwis Internetowy
Czat
Super FajnySerwis Internetowy
Czat
Web
Klient
Historia
Baza danych
Indeks Full Text
Super FajnySerwis Internetowy
Czat
Web
Klient
Historia
Baza danych
Indeks Full Text
„Ściana”
URL poll
Resize obrazków
Powiadomienia na komunikator
Powiadomienia na mail
Jak to zrobić w praktyce?
Gotowe rozwiązania
Nihli NoviJava to ma od dawna
Advanced Message Queuing ProtocolOtwarty standard
AMQP - Kolejka++ Otwarty protokół Metoda publish-subscribe Routing Gotowe implementacje – np. RabbitMQ Bramki do innych protokołów
Długotrwałe działaniaMiły dodatek do pozostałych cech
Loose couplingPrzeciwieństwo technologii ściśle połączonych – gniazda TCP, UDP, CORBA, RMI
Dynamika połączeńWpinanie listenerów w razie potrzeby
Dodawanie nowych usług Duplikacja danych
Tryby działania Fanout Direct Topic
http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.1/html/Messaging_Tutorial/chap-Messaging_Tutorial-Initial_Concepts.html#sect-Messaging_Tutorial-Initial_Concepts-Fanout_Exchange
Fanout
http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.1/html/Messaging_Tutorial/chap-Messaging_Tutorial-Initial_Concepts.html#sect-Messaging_Tutorial-Initial_Concepts-Fanout_Exchange
Direct
http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.1/html/Messaging_Tutorial/sect-Messaging_Tutorial-Initial_Concepts-Direct_Exchange.html
Topic
http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_MRG/1.1/html/Messaging_Tutorial/sect-Messaging_Tutorial-Initial_Concepts-Topic_Exchange.html
PrzenośnośćWiele platform, wiele technologii, wiele języków, wiele aplikacji
Nowa piosenka
RekodowanieC++MusicShare
Generowanie skrótu piosenki
C++
Web ServiceJava
Jabbererlang
Statyczny HTMLPHP
Load Balancing
Front end
RabbitMQ
Consumer
Opcjonalnie – persistence
Opcjonalnie – tryb UDP-like
Show me the code
Dziękuję za uwagę.
[email protected]://leafnode.pl/