Reaktív programozás szerver oldalon

Hasonló dokumentumok
Alternatív adatbázisok Gráfadatbázisok

webalkalmazások fejlesztése elosztott alapon

Junior Java Képzés. Tematika

Több app. Egy kódbázis

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

NoSQL technológiák. NoSQL Fórum Budapest, március 23. Diasablon: - a fotók sajátok :)

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

Java Programozó képzés A&K AKADÉMIA 2019.

Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

JAVA webes alkalmazások

JAVA SE/ME tanfolyam tematika

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő PHP folytatás JDBC, ODBC

SZÁMÍTÓGÉPES ADATBÁZIS-KEZELÉS. A MySQL adatbáziskezelő A PHP programozási nyelv JDBC, ODBC

Webes alkalmazások fejlesztése

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Adatbázis rendszerek I

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Amit mindig is tudni akartál a Real Application Testing-ről. Földi Tamás Starschema Kft.

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Tartalomjegyzék. Előszó... 10

Webes alkalmazások fejlesztése. Bevezetés az ASP.NET MVC 5 keretrendszerbe

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Univerzális munkafolyamat szimulátor

MMK-Informatikai projekt ellenőr képzés 4

Mobil Informatikai Rendszerek

Mobil Informatikai Rendszerek

Amazon Web Services. Géhberger Dániel Szolgáltatások és alkalmazások március 28.

OOP és UML Áttekintés

MVC. Model View Controller

Riak. Pronounced REE-ahk. Elosztott adattároló eszköz. Molnár Péter

JSF alkalmazások teljesítményhangolása JMeter és dynatrace segítségével

Web-fejlesztés NGM_IN002_1

Tartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés

Kommunikáció. Kommunikáció. Folyamatok. Adatfolyam-orientált kommunikáció. Kommunikáció típusok (1) Kommunikáció típusok (2) Média. Folyamok (Streams)

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Eseményvezérelt alkalmazások fejlesztése II 12. előadás. Objektumrelációs adatkezelés (ADO.NET) Giachetta Roberto

Muppet: Gyors adatok MapReduce stílusú feldolgozása. Muppet: MapReduce-Style Processing of Fast Data

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

A felkészülés ideje alatt segédeszköz nem használható!

Fábián Zoltán Hálózatok elmélet

Az Apache Wicket keretrendszer

RDBMS fejlesztési irányok. Ferris Wheel (óriáskerék) Jim Gray törvényei. Elosztott adatbázisok problémái. Elosztott adatbázisok

I. Szakmai törzsanyag

Web programoz as

Metamodellezés. Simon Balázs BME IIT, 2011.

Konkurens TCP Szerver

Webes alkalmazások fejlesztése. 9. előadás Bevezetés az ASP.NET MVC keretrendszerbe

Felhők teljesítményelemzése felhő alapokon

CMDB architektúra megjelenítése SAMU-val Rugalmas megoldás. ITSMF Bekk Nándor Magyar Telekom / IT szolgáltatás menedzsment központ

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

Fekete Csaba Csongor Üzleti intelligencia vezető Citibank ZRt.

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Mobil alkalmazások fejlesztése. Készítette: Szabóné Nacsa Rozália

WWW Kliens-szerver Alapfogalmak Technológiák Terv. Web programozás 1 / 31

Folyamatok. 6. előadás

Informatikus, Webfejlesztő. Nagy Gusztáv

Programozási nyelvek és módszerek Java Thread-ek

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Alkalmazások architektúrája

Nyílt forráskódú irodai programkomponensek vállalati környezetbe való integrációjának vizsgálata és implementációja

Felhasználó által definiált adattípus

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

API tervezése mobil környezetbe. gyakorlat

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

Web-fejlesztés NGM_IN002_1

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Párhuzamos és Grid rendszerek

Modern unit és integrációs tesztelés

Webalkalmazás fejlesztés Java EE környezetben NetBeans segítségével: JavaServer Faces 1.2 AJAX

Objektumelvű programozás

Stateless Session Bean

Excel ODBC-ADO API. Tevékenységpontok: - DBMS telepítés. - ODBC driver telepítése. - DSN létrehozatala. -Excel-ben ADO bevonása

AJAX Framework építés. Nagy Attila Gábor Wildom Kft.

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

C# Szálkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Szálkezelés / 21

Grafikus csővezeték 1 / 44

RIA Rich Internet Application

NAGY TELJESÍTM. Szerzők Dévai. István Automatizálási. és s Alkalmazott Informatikai Tanszék

Elosztott adatbázis-kezelő formális elemzése

SzIP kompatibilis sávszélesség mérések

Szakdolgozati, TDK témajavaslatok

Flex: csak rugalmasan!


KROMESCH SÁNDOR APP FELHŐ. API-k és Webszolgáltatások a Cloudban. Magyarországi Web Konferencia November 8.

IoT rendszerek kommunikációs megoldásai vitmav22

30 MB INFORMATIKAI PROJEKTELLENŐR

Programozás(A szakirány) II. beadandó feladat Farkas András HP6S15 1. csoport Veszprémi Anna / Hudoba Péter

Enterprise JavaBeans. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Az Enterprise JavaBeans

Java Server Pages - JSP. Web Technológiák. Java Server Pages - JSP. JSP lapok életciklusa

Bevezetés Működési elv AJAX keretrendszerek AJAX

Vizuális és eseményvezérelt programozás , II. félév BMF NIK

Előszó A Windows alkalmazásfejlesztés rövid története A Windows életútja A Windows 8 paradigmaváltása... 16

Ajax és Echo 2. Bokor Attila

8. rész: Implementáció JDeveloperben

WCF, Entity Framework, ASP.NET, WPF 1. WCF service-t (adatbázissal Entity Framework) 2. ASP.NET kliens 3. WPF kliens

Java Programozás 11. Ea: MVC modell

Átírás:

Reaktív programozás szerver oldalon Tóth Márton Supercharge

Agenda Reactive streams Spring WebFlux Reactive Spring Data Benchmarks Konklúzió

Reactive streams

Reactive streams Reaktív programozási modell Aszinkron adatfeldolgozó folyamok non-blocking backpressure-rel Aszinkron: egy szálon több feldolgozás Non-blocking: A feldolgozó szálon nem végzünk blokkoló műveletet Backpressure: A fogyasztó lassabb mint a termelő Specifikáció, több implementációval: http://reactive-streams.org RxJava, ReactiveX, Java 9 Flow...

Mire jó ez az egész? Szálak: overhead Szál indítás, szálak közti váltás, stack memória... Aszinkronitás: kevés szállal elvégezhető ugyanaz a munka Jobb áteresztőképesség, kiszámíthatóbb viselkedés terhelés alatt

Reactive flow 1 subscribe() Publisher 2 onsubscribe(subscription) 4 onnext(o) Subscriber Subscription 3 request(n)

Reactive flow 1 subscribe() Publisher 2 onsubscribe(subscription) 4 onnext(o) Subscriber Subscription 3 request(n)

Reactive flow 1 subscribe() Publisher 2 onsubscribe(subscription) 4 onnext(o) Subscriber Subscription 3 request(n)

Reactive flow 1 subscribe() Publisher 2 onsubscribe(subscription) 4 onnext(o) Subscriber Subscription 3 request(n)

Reactive flow 1 subscribe() Publisher 2 onsubscribe(subscription) 4 onnext(o) Subscriber Subscription 3 request(n)

Reactor project Reactive streams implementáció API-ja hasonlít a Java Stream API-hoz Források: Flux, Mono Operátorok: map, flatmap, zip, filter, cache, stb...

Példa List<String> animals = ImmutableList.of("dog", "cat", "unicorn"); Stream API Reactor animals.stream().map(string::touppercase).filter(a -> a.contains("o")).foreach(system.out::println); Flux.fromIterable(animals).map(String::toUpperCase).filter(a -> a.contains("o")).subscribe(system.out::println);

Spring + Reactive = WebFlux

Spring WebFlux Reaktív web keretrendszer Kliens és szerver implementáció Reactor project Spring Web MVC alternatíva Mellett, nem helyett

WebFlux példa @RestController public class Controller { Spring Web MVC annotációk } @GetMapping public Mono<String> handle() { return Mono.just("unicorn").flatMapMany(s -> Flux.fromArray(s.split("")) ).filter(s ->!s.equals("o")).collect(collectors.joining()); } Handler metódusok visszatérési értéke Flux vagy Mono A streamre a framework iratkozik fel A streamet tilos blokkolni

Mi blokkol jellemzően szerver oldalon? Hálózat HTTP: WebClient Egyéb: reactor-netty, salesforce/reactive-grpc, stb Fájl műveletek Java NIO, Stream API Adatbázisok Spring Data

Non-blocking Spring Data Flux, Mono egyenesen a Repository-kból NoSQL adatbázisok MongoDB, Cassandra, Couchbase, Redis Relációs adatbázisok JDBC...

R2DBC to the rescue Nem blokkoló adatbázis connector Postgres, MSSQL, H2, MySQL Spring Data R2DBC Standard Spring Data Repository-k Lightweight mapping, nem ORM Nincs: caching, lazy loading, write behind, egyéb feketemágia Nagyon fiatal projekt

Benchmarks

Setup 2 Alkalmazás Web MVC vs WebFlux 1 másodperces késleltetésű szolgáltatás meghívása REST interfész AWS EC2 t3.micro 1 GiB RAM, 2 vcpu JMeter load test, külön EC2 instance-ről

Throughput (per second)

Konklúzió Használd ha Várhatóan nagy lesz a terhelés Nem rettensz meg az érdekes framework bugoktól Ne használd ha Nem követelmény a brutális áteresztőképesség Kevésbé tapasztalt a csapatod

We are hiring! careers@supercharge.io