Przetwarzanie asynchroniczne w zastosowaniach webowych

40
PRZETWARZANIE ASYNCHRONICZNE W ZASTOSOWANIACH WEBOWYCH Leszek Krupiński WebClusters 2011

description

Zastosowanie przetwarzania asynchronicznego przy tworzeniu serwisów internetowych

Transcript of Przetwarzanie asynchroniczne w zastosowaniach webowych

Page 1: Przetwarzanie asynchroniczne w zastosowaniach webowych

PRZETWARZANIE ASYNCHRONICZNE W ZASTOSOWANIACH WEBOWYCHLeszek KrupińskiWebClusters 2011

Page 2: Przetwarzanie asynchroniczne w zastosowaniach webowych

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

Page 3: Przetwarzanie asynchroniczne w zastosowaniach webowych

WebPING-PONG PING-PONG PING-PONG

Page 4: Przetwarzanie asynchroniczne w zastosowaniach webowych

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

Page 5: Przetwarzanie asynchroniczne w zastosowaniach webowych

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ę

Page 6: Przetwarzanie asynchroniczne w zastosowaniach webowych

Przetwarzanie asynchroniczneKlient dostaje komunikat, przetwarzanie idzie w tle

Page 7: Przetwarzanie asynchroniczne w zastosowaniach webowych

Use CaseGenerowanie miniaturek

Page 8: Przetwarzanie asynchroniczne w zastosowaniach webowych

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

Page 9: Przetwarzanie asynchroniczne w zastosowaniach webowych

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

Page 10: Przetwarzanie asynchroniczne w zastosowaniach webowych

Odkrycie XXI wieku

Page 11: Przetwarzanie asynchroniczne w zastosowaniach webowych

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.

Page 12: Przetwarzanie asynchroniczne w zastosowaniach webowych
Page 13: Przetwarzanie asynchroniczne w zastosowaniach webowych

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

Page 14: Przetwarzanie asynchroniczne w zastosowaniach webowych

A w praktyce?

Page 15: Przetwarzanie asynchroniczne w zastosowaniach webowych

Super FajnySerwis Internetowy

Page 16: Przetwarzanie asynchroniczne w zastosowaniach webowych

Super FajnySerwis Internetowy

Czat

Page 17: Przetwarzanie asynchroniczne w zastosowaniach webowych

Super FajnySerwis Internetowy

Czat

Web

Klient

Historia

Baza danych

Indeks Full Text

Page 18: Przetwarzanie asynchroniczne w zastosowaniach webowych

Super FajnySerwis Internetowy

Czat

Web

Klient

Historia

Baza danych

Indeks Full Text

„Ściana”

URL poll

Resize obrazków

Powiadomienia na komunikator

Powiadomienia na mail

Page 19: Przetwarzanie asynchroniczne w zastosowaniach webowych

Jak to zrobić w praktyce?

Page 20: Przetwarzanie asynchroniczne w zastosowaniach webowych

Gotowe rozwiązania

Page 21: Przetwarzanie asynchroniczne w zastosowaniach webowych

Nihli NoviJava to ma od dawna

Page 22: Przetwarzanie asynchroniczne w zastosowaniach webowych

Advanced Message Queuing ProtocolOtwarty standard

Page 23: Przetwarzanie asynchroniczne w zastosowaniach webowych

AMQP - Kolejka++ Otwarty protokół Metoda publish-subscribe Routing Gotowe implementacje – np. RabbitMQ Bramki do innych protokołów

Page 24: Przetwarzanie asynchroniczne w zastosowaniach webowych

Długotrwałe działaniaMiły dodatek do pozostałych cech

Page 25: Przetwarzanie asynchroniczne w zastosowaniach webowych
Page 26: Przetwarzanie asynchroniczne w zastosowaniach webowych

Loose couplingPrzeciwieństwo technologii ściśle połączonych – gniazda TCP, UDP, CORBA, RMI

Page 27: Przetwarzanie asynchroniczne w zastosowaniach webowych

Dynamika połączeńWpinanie listenerów w razie potrzeby

Dodawanie nowych usług Duplikacja danych

Page 28: Przetwarzanie asynchroniczne w zastosowaniach webowych

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

Page 29: Przetwarzanie asynchroniczne w zastosowaniach webowych

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

Page 31: Przetwarzanie asynchroniczne w zastosowaniach webowych

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

Page 32: Przetwarzanie asynchroniczne w zastosowaniach webowych

PrzenośnośćWiele platform, wiele technologii, wiele języków, wiele aplikacji

Page 33: Przetwarzanie asynchroniczne w zastosowaniach webowych

Nowa piosenka

RekodowanieC++MusicShare

Generowanie skrótu piosenki

C++

Web ServiceJava

Jabbererlang

Statyczny HTMLPHP

Page 34: Przetwarzanie asynchroniczne w zastosowaniach webowych

Load Balancing

Front end

RabbitMQ

Consumer

Page 35: Przetwarzanie asynchroniczne w zastosowaniach webowych

Opcjonalnie – persistence

Page 36: Przetwarzanie asynchroniczne w zastosowaniach webowych

Opcjonalnie – tryb UDP-like

Page 37: Przetwarzanie asynchroniczne w zastosowaniach webowych

Show me the code

Page 38: Przetwarzanie asynchroniczne w zastosowaniach webowych
Page 39: Przetwarzanie asynchroniczne w zastosowaniach webowych
Page 40: Przetwarzanie asynchroniczne w zastosowaniach webowych

Dziękuję za uwagę.

[email protected]://leafnode.pl/