Lutz Hühnken | @lutzhuehnken | Typesafe
Von „Enterprise“ zu „Reactive“
Von Enterprise zu Reactive
@lutzhuehnken
Reactive „for the rest of us“..
Big Data
Web Scale
HFT
Tomcat
Web MVC
RDBMS
Von Enterprise zu Reactive
@lutzhuehnken
Was ist Enterprise?
Im Sinne diesesVortrags:
• Alles, was auf Java EE basiert
• I...
Von Enterprise zu Reactive
@lutzhuehnken
Was ist Reactive?
Von Enterprise zu Reactive
@lutzhuehnken
Was ist Reactive?
Behauptet doch jeder von sich…
Von Enterprise zu Reactive
@lutzhuehnken
Was ist Reactive?
Alles Akka, oder was?
Von Enterprise zu Reactive
@lutzhuehnken
Mal anders: Fragen, die
wir immer wieder
hören
Von Enterprise zu Reactive
@lutzhuehnken
WAR?
Servlet Container?
Web Layer
Library X
(nutzt ThreadLocal)
?
Von Enterprise zu Reactive
@lutzhuehnken
Kann ich das
nutzen mit RDBMS/
JDBC?
Backend
Wie mache ich 2PC?
Von Enterprise zu Reactive
@lutzhuehnken
Thread per Request
Von Enterprise zu Reactive
@lutzhuehnken
n Threads per m Requests
Von Enterprise zu Reactive
@lutzhuehnken
n Threads per m Requests
Effekt: Kleinere Einheit der Nebenläufigkeit (Task level
...
Von Enterprise zu Reactive
@lutzhuehnken
Kleiner Exkurs: Gilt auch für Aktoren
(Überhaupt: Gemeinsamkeit (einiger) reaktiv...
Von Enterprise zu Reactive
@lutzhuehnken
n Threads per m Requests
Was heißt das für ThreadLocal?
Von Enterprise zu Reactive
@lutzhuehnken
n Threads per m Requests
Was heißt das für I/O?
Von Enterprise zu Reactive
@lutzhuehnken
n Threads per m Requests
In Tomcat / Servlet Container?
Von Enterprise zu Reactive
@lutzhuehnken
Konsequenzen (alpha)
• Servlet Container
• ThreadLocal
• Blocking I/O
werden zu A...
Von Enterprise zu Reactive
@lutzhuehnken
Jetzt habe ich aber so etwas..
try {
stmt = con.createStatement();
ResultSet rs =...
Von Enterprise zu Reactive
@lutzhuehnken
Isolieren!
Bei vert.x „WorkerVerticle“
Bei Play/Akka: Volle Kontrolle über Dispat...
Von Enterprise zu Reactive
@lutzhuehnken
Konsequenzen (beta)
• auf Servlet Container und ThreadLocal
verzichten
• Blocking...
Von Enterprise zu Reactive
@lutzhuehnken
Jetzt habe ich aber so etwas..
@Transactional
public static class GreetingService...
Von Enterprise zu Reactive
@lutzhuehnken
Von Enterprise zu Reactive
@lutzhuehnken
Vermeiden
this.entityManager.persist(greeting);
this.jmsTemplate.convertAndSend("...
Von Enterprise zu Reactive
@lutzhuehnken
Trennen
Jeder 2 PC kann durch asynchrones Messaging
ausgedrückt werden!
Von Enterprise zu Reactive
@lutzhuehnken
2PC => Messaging
Kleine Einschränkung -Voraussetzungen:
•tentative operations
•at...
Von Enterprise zu Reactive
@lutzhuehnken
Verwerten
Service A
(Reactive)
Service B
(Legacy)
Von Enterprise zu Reactive
@lutzhuehnken
Konsequenzen (1.0)
• auf Servlet Container und ThreadLocal
verzichten
• Blocking ...
Von Enterprise zu Reactive
@lutzhuehnken
Warum das Ganze?
• Wir haben gesehen: Ich kann auch meine
„normale“ Geschäftsanwe...
Von Enterprise zu Reactive
@lutzhuehnken
• Heißt nicht nur „web scale“.
• Effizient sein. Moderne Hardware nutzen
(Many Cor...
Von Enterprise zu Reactive
@lutzhuehnken
Nicht von mir! Sondern von John Rose, Java VM Architect, JFokus, Stockholm, Febru...
Von Enterprise zu Reactive
@lutzhuehnken
• Prinzipien der Supervision & Isolation
• Let it crash!
Von Enterprise zu Reactive
@lutzhuehnken
• Spaß!!
• Ernsthaft. All das ist nicht entwickelt
worden, um unser Leben kompliz...
Von Enterprise zu Reactive
@lutzhuehnken
Vielen Dank
lutz.huehnken@typesafe.com
Twitter: @lutzhuehnken
Kommt zum Typesafe-...
Nächste SlideShare
Wird geladen in …5
×

Von "Enterprise" zu "Reactive" (JAX 2015)

1.255 Aufrufe

Veröffentlicht am

Vortrag "Von Enterprise zu Reactive" von der JAX 2015.

Veröffentlicht in: Technologie
0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
1.255
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
34
Aktionen
Geteilt
0
Downloads
7
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Von "Enterprise" zu "Reactive" (JAX 2015)

  1. 1. Lutz Hühnken | @lutzhuehnken | Typesafe Von „Enterprise“ zu „Reactive“
  2. 2. Von Enterprise zu Reactive @lutzhuehnken Reactive „for the rest of us“.. Big Data Web Scale HFT Tomcat Web MVC RDBMS
  3. 3. Von Enterprise zu Reactive @lutzhuehnken Was ist Enterprise? Im Sinne diesesVortrags: • Alles, was auf Java EE basiert • Insbesondere Servlet API basierte Webapps, z.B. auf Tomcat
  4. 4. Von Enterprise zu Reactive @lutzhuehnken Was ist Reactive?
  5. 5. Von Enterprise zu Reactive @lutzhuehnken Was ist Reactive? Behauptet doch jeder von sich…
  6. 6. Von Enterprise zu Reactive @lutzhuehnken Was ist Reactive? Alles Akka, oder was?
  7. 7. Von Enterprise zu Reactive @lutzhuehnken Mal anders: Fragen, die wir immer wieder hören
  8. 8. Von Enterprise zu Reactive @lutzhuehnken WAR? Servlet Container? Web Layer Library X (nutzt ThreadLocal) ?
  9. 9. Von Enterprise zu Reactive @lutzhuehnken Kann ich das nutzen mit RDBMS/ JDBC? Backend Wie mache ich 2PC?
  10. 10. Von Enterprise zu Reactive @lutzhuehnken Thread per Request
  11. 11. Von Enterprise zu Reactive @lutzhuehnken n Threads per m Requests
  12. 12. Von Enterprise zu Reactive @lutzhuehnken n Threads per m Requests Effekt: Kleinere Einheit der Nebenläufigkeit (Task level concurrency)
  13. 13. Von Enterprise zu Reactive @lutzhuehnken Kleiner Exkurs: Gilt auch für Aktoren (Überhaupt: Gemeinsamkeit (einiger) reaktiver Systeme)
  14. 14. Von Enterprise zu Reactive @lutzhuehnken n Threads per m Requests Was heißt das für ThreadLocal?
  15. 15. Von Enterprise zu Reactive @lutzhuehnken n Threads per m Requests Was heißt das für I/O?
  16. 16. Von Enterprise zu Reactive @lutzhuehnken n Threads per m Requests In Tomcat / Servlet Container?
  17. 17. Von Enterprise zu Reactive @lutzhuehnken Konsequenzen (alpha) • Servlet Container • ThreadLocal • Blocking I/O werden zu Anti-Pattern.Vermeiden!
  18. 18. Von Enterprise zu Reactive @lutzhuehnken Jetzt habe ich aber so etwas.. try { stmt = con.createStatement(); ResultSet rs = stmt.executeQuery(query); while (rs.next()) { String coffeeName = rs.getString("COF_NAME"); int supplierID = rs.getInt("SUP_ID"); float price = rs.getFloat("PRICE"); int sales = rs.getInt("SALES"); int total = rs.getInt("TOTAL"); System.out.println(coffeeName + "t" + supplierID + "t" + price + "t" + sales + Blocking I/O, Sorgenkind JDBC
  19. 19. Von Enterprise zu Reactive @lutzhuehnken Isolieren! Bei vert.x „WorkerVerticle“ Bei Play/Akka: Volle Kontrolle über Dispatcher Nicht nur für JDBC, generell für „blocking“ code
  20. 20. Von Enterprise zu Reactive @lutzhuehnken Konsequenzen (beta) • auf Servlet Container und ThreadLocal verzichten • Blocking I/O vermeiden. Im Notfall: Isolieren.
  21. 21. Von Enterprise zu Reactive @lutzhuehnken Jetzt habe ich aber so etwas.. @Transactional public static class GreetingService { @Inject private JmsTemplate jmsTemplate; @PersistenceContext private EntityManager entityManager; public void createGreeting(String name) { Greeting greeting = new Greeting(name); this.entityManager.persist(greeting); this.jmsTemplate.convertAndSend("greetings", greeting); … Verteilte Transaktion
  22. 22. Von Enterprise zu Reactive @lutzhuehnken
  23. 23. Von Enterprise zu Reactive @lutzhuehnken Vermeiden this.entityManager.persist(greeting); this.jmsTemplate.convertAndSend("greetings", greeting); … Warum nicht separater Abgleich (Reconciliation)? In unserem kleinen Beispiel:
  24. 24. Von Enterprise zu Reactive @lutzhuehnken Trennen Jeder 2 PC kann durch asynchrones Messaging ausgedrückt werden!
  25. 25. Von Enterprise zu Reactive @lutzhuehnken 2PC => Messaging Kleine Einschränkung -Voraussetzungen: •tentative operations •at-least-once delivery •idempotent messages Item-BCancellation Tentative Op Item-A
  26. 26. Von Enterprise zu Reactive @lutzhuehnken Verwerten Service A (Reactive) Service B (Legacy)
  27. 27. Von Enterprise zu Reactive @lutzhuehnken Konsequenzen (1.0) • auf Servlet Container und ThreadLocal verzichten • Blocking I/O vermeiden. Im Notfall: Isolieren. • Distributed Tx: Vermeiden, trennen, verwerten
  28. 28. Von Enterprise zu Reactive @lutzhuehnken Warum das Ganze? • Wir haben gesehen: Ich kann auch meine „normale“ Geschäftsanwendung reactive machen, und dabei Kompromisse eingehen. • Was bringt mir das?
  29. 29. Von Enterprise zu Reactive @lutzhuehnken • Heißt nicht nur „web scale“. • Effizient sein. Moderne Hardware nutzen (Many Core, NUMA) • Von Innovation profitieren (s. Brian Goetz gestern)
  30. 30. Von Enterprise zu Reactive @lutzhuehnken Nicht von mir! Sondern von John Rose, Java VM Architect, JFokus, Stockholm, February 2015
  31. 31. Von Enterprise zu Reactive @lutzhuehnken • Prinzipien der Supervision & Isolation • Let it crash!
  32. 32. Von Enterprise zu Reactive @lutzhuehnken • Spaß!! • Ernsthaft. All das ist nicht entwickelt worden, um unser Leben komplizierter zu machen. Sondern einfacher! • Wie würdest du es mit Menschen lösen..?
  33. 33. Von Enterprise zu Reactive @lutzhuehnken Vielen Dank lutz.huehnken@typesafe.com Twitter: @lutzhuehnken Kommt zum Typesafe-Stand!
 (In der Nähe der Garderobe) Geht zu den anderen „Reactive“Vorträgen!

×