Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Zastosowanie tzw reaktywności w aplikacjach.

Podobne prezentacje


Prezentacja na temat: "Zastosowanie tzw reaktywności w aplikacjach."— Zapis prezentacji:

1 Zastosowanie tzw reaktywności w aplikacjach.
Reactive Zastosowanie tzw reaktywności w aplikacjach.

2 No to zróbmy coś Zrób to !!!

3 W oczekiwaniu na wynik

4 Aplikacja web

5 Przetwarzanie żądań Pula wątków odbierających żądania

6 Czasami nasze niektóre zadania…
są cięższe niż wyświetlenie buźki na ekranie….

7 … i potrafią przytkać system…
Pula połączeń

8 … lub wyżreć całą pamięć…

9 Co można poradzić dołożyć sprzętu? dołożyć pamięci?

10 Jeszcze jeden przypadek
gdzieś w odległej Galaktyce

11 A może… …ograniczyć żarłoczność naszej aplikacji? ale jak skoro już zoptymalizowaliśmy wszystko? ;) Ha… można uruchamiać obciążające zadania cyklicznie w nocy kiedy użytkownicy śpią i nam nie będą przeszkadzać…

12 Wielowątkowe przetwarzanie zadań
pula wątków pula wątków pozwala na sterowanie zużyciem pamięci, zasobów itp

13 Zdarzenia tymczasowa prywatna kolejka
publiczna kolejka z odpowiedziami

14 Wątki blokujące

15 Opóźnienia gdzieś w odległej Galaktyce

16 Wątki blokujące

17 Koszt połączenia

18 Koszt połączenia

19 To może…

20 To może…

21 Czyli wątek przyjmujący żądania wątek przetwarzający żądanie
wątek wysyłający odpowiedź opcjonalnie

22 Z czego skorzystać Pule wątków (java.io.concurrency) JMS RabbitMQ Wsparcie frameworków (JEE 6, Spring) Inne TIMEOUT!!!!

23 ThreadPool pula wątków Potraktujmy pulę wątków jak pulę połączeń.
Spowodujemy iż określone zadanie będzie przeprowadzane tylko przez określoną ilość wątków. Dzięki temu zapanujemy np. nad zużyciem pamięci i zablokujemy nadmierną pazerność aplikacji (jeśli takowa istnieje).

24 Executor ExecutorService executorService = Executors.newFixedThreadPool(10); ExecutorService executorService = Executors.newCachedThreadPool( new ThreadFactory() { @Override public Thread newThread(Runnable r) { return ….. ; } });

25 Callable<V> i Future<V>
public interface Callable<V> { V call() throws Exception; } public interface Future<V> { boolean cancel(boolean mayInterruptIfRunning); boolean isCancelled(); boolean isDone(); V get() throws InterruptedException, ExecutionException; V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException;

26 Wywołanie zadania ExecutorService executorService = Executors.newFixedThreadPool(10); Future<String> future = executorService.submit( new Callable<String>() { @Override public String call() throws Exception { executorService.invoke(); return "TEST"; } }); <T> List<Future<T>> invokeAll( Collection<? extends Callable<T>> tasks) throws InterruptedException;

27 Zbieranie wyników ExecutorService executorService = Executors.newFixedThreadPool(5); CompletionService completion = new ExecutorCompletionService(executorService); for(;;){ completion.take(); } Future<V> take() throws InterruptedException;

28 Hmmmm Programowanie synchroniczne jest proste. Asynchroniczność dramatycznie podnosi poziom skomplikowania.

29 Wyzwania Obsługa błędów Łańcuch wywołań Kiedy użytkownik już nie czeka na odpowiedź Przełączanie wątków np do aktualizacji UI Unikanie blokad Wielu odbiorców Złożone funkcje Backpressure

30 Aplikacje reaktywne Dane są procesowane w postaci strumieni Sterowanie poprzez zdarzenia Utrzymują “życie” pomimo błędów Są odporne na zbyt duże obciążenie

31 Reactive Reactive Streams Reactive Extensions

32 Jak skorzystać? RxJava (i odmiany dla innych języków) Spring Reactor JVM 9+

33 Podstawowe interfejsy
public interface Publisher<T> { public void subscribe(Subscriber<? super T> s); } public interface Subscriber<T> { public void onSubscribe(Subscription s); public void onNext(T t); public void onError(Throwable t); public void onComplete();

34 Podstawowe interfejsy
public interface Subscription { public void request(long n); public void cancel(); } public interface Processor<T, R> extends Subscriber<T>, Publisher<R> {

35 RX Observable lub Flowable Observer lub Subsciber Subject lub Processor Operator Scheduler


Pobierz ppt "Zastosowanie tzw reaktywności w aplikacjach."

Podobne prezentacje


Reklamy Google