Przetwarzanie asynchroniczne w zastosowaniach webowych

Post on 02-Dec-2014

1.774 views 1 download

description

Zastosowanie przetwarzania asynchronicznego przy tworzeniu serwisów internetowych

Transcript of Przetwarzanie asynchroniczne w zastosowaniach webowych

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

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ę.

leafnode@gmail.comhttp://leafnode.pl/