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

1.132 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.132
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
32
Aktionen
Geteilt
0
Downloads
6
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!

×