Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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-...
Upcoming SlideShare
Loading in …5
×

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

1,335 views

Published on

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

Published in: Technology
  • Be the first to comment

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!

×