jdd2014: reactive java - tomasz kowalczewski
DESCRIPTION
Wymagania wydajności, skalowalności i odporności na awarie stawiane przed współcześnie tworzonymi aplikacjami są coraz większe. Ruch związany z reactive manifesto promuje architekturę aplikacji, która ma nam ułatwić sprostanie tym zadaniom. Rx Java pozwala na pisanie serwisów wykonujących zadania w wielu wątkach. Podstawową jednostką przetwarzania jest zdarzenie, a Rx Java udostępnia nam warstwę abstrakcji w postaci strumieni zdarzeń oraz zestawu funkcji pozwalających na filtrowanie, grupowanie, transformację oraz łączenie ich ze sobą. Programista po stronie serwera decyduje jak i kiedy zdarzenia są generowane, a po stronie klienta w jaki sposób są one łączone z innymi strumieniami i konsumowane. W ramach prezentacji pokażę jak korzystać z biblioteki Rx Java, jak jej zastosowanie zmienia architekturę aplikacji i w czym to podejście jest lepsze od stosowania wzorców Future i Callback. Zbudujemy prosty serwis komunikujący się asynchronicznie z innymi aplikacjami. Postaramy się aby ich awarie miały minimalny wpływ na funkcjonalność naszego serwisu. Zmierzymy jego wydajność i porównamy z podejściem gdzie wątki działają synchroniczie i blokują w oczekiwaniu na dane.TRANSCRIPT
![Page 1: JDD2014: Reactive JAVA - Tomasz Kowalczewski](https://reader034.vdocuments.us/reader034/viewer/2022052316/55933bb51a28abed2c8b471c/html5/thumbnails/1.jpg)
T OM A S Z K OW A L C Z EW S K I
REACTIVE JAVA
![Page 2: JDD2014: Reactive JAVA - Tomasz Kowalczewski](https://reader034.vdocuments.us/reader034/viewer/2022052316/55933bb51a28abed2c8b471c/html5/thumbnails/2.jpg)
• A li3le bit of history • A few words about API • Code!
![Page 3: JDD2014: Reactive JAVA - Tomasz Kowalczewski](https://reader034.vdocuments.us/reader034/viewer/2022052316/55933bb51a28abed2c8b471c/html5/thumbnails/3.jpg)
50%
29%
15%
6%
NETFLIX US network traffic share
Netflix YouTube HTTP BitTorrent
![Page 4: JDD2014: Reactive JAVA - Tomasz Kowalczewski](https://reader034.vdocuments.us/reader034/viewer/2022052316/55933bb51a28abed2c8b471c/html5/thumbnails/4.jpg)
SYNCHRONOUS PULL COMMUNICATION
Client Server
Request
Response
Processing
Network latency
![Page 5: JDD2014: Reactive JAVA - Tomasz Kowalczewski](https://reader034.vdocuments.us/reader034/viewer/2022052316/55933bb51a28abed2c8b471c/html5/thumbnails/5.jpg)
ASYNCHRONOUS PUSH
Processing
Network latency
![Page 6: JDD2014: Reactive JAVA - Tomasz Kowalczewski](https://reader034.vdocuments.us/reader034/viewer/2022052316/55933bb51a28abed2c8b471c/html5/thumbnails/6.jpg)
OBSERVABLE STREAM
Observer Observable
t
subscribe
onNext*
onCompleted
unsubscribe
onError
One of
![Page 7: JDD2014: Reactive JAVA - Tomasz Kowalczewski](https://reader034.vdocuments.us/reader034/viewer/2022052316/55933bb51a28abed2c8b471c/html5/thumbnails/7.jpg)
Erik Meijer
![Page 8: JDD2014: Reactive JAVA - Tomasz Kowalczewski](https://reader034.vdocuments.us/reader034/viewer/2022052316/55933bb51a28abed2c8b471c/html5/thumbnails/8.jpg)
![Page 9: JDD2014: Reactive JAVA - Tomasz Kowalczewski](https://reader034.vdocuments.us/reader034/viewer/2022052316/55933bb51a28abed2c8b471c/html5/thumbnails/9.jpg)
MORE INFORMATION
§ Examples from this presentatnion: § h3ps://github.com/tkowalcz/presentaWons
§ h3ps://github.com/NeXlix/RxJava § h3p://www.infoq.com/author/Erik-‐Meijer § React conference § h3p://www.youtube.com/playlist?list=PLSD48HvrE7-‐Z1stQ1vIIBumB0wK0s8llY
![Page 10: JDD2014: Reactive JAVA - Tomasz Kowalczewski](https://reader034.vdocuments.us/reader034/viewer/2022052316/55933bb51a28abed2c8b471c/html5/thumbnails/10.jpg)
source: flatmapthatshit.com