O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

An overview of the Eventuate Platform

1.046 visualizações

Publicada em

Eventuate is a platform that tackles the distributed data management challenges inherent in a microservice architecture.


Publicada em: Software
  • Seja o primeiro a comentar

An overview of the Eventuate Platform

  1. 1. @crichardson Overview of the Eventuate Platform Chris Richardson Founder of Eventuate.io Founder of the original CloudFoundry.com Author of POJOs in Action @crichardson chris@chrisrichardson.net http://microservices.io http://eventuate.io Copyright © 2020. Chris Richardson Consulting, Inc. All rights reserved
  2. 2. @crichardson Agenda Overview of Eventuate Using Eventuate Tram Event Sourcing with Eventuate Local
  3. 3. @crichardson About Eventuate Distributed data management platform for microservices Programming model based on Transactional, asynchronous messaging Sagas CQRS Event Sourcing Java/JVM (Spring Boot/Micronaut), NodeJS, .NET http://eventuate.io/
  4. 4. @crichardson Microservice Architecture Database per Service Saga CQRS Choreography- based Saga Orchestration- based saga Domain Event Async Request/ Response Event SourcingTransactional Outbox Motivating Pattern Solution Pattern Solution A Solution B General Specific Eventuate Local Eventuate through microservices patterns Key distributed data management patterns Key enabling patterns Idempotent Consumer Needed for loose design-time and runtime coupling Implements queries that span servicesImplements transactions that span services Eventuate Tram
  5. 5. @crichardson Eventuate architecture Eventuate framework Eventuate framework Relational database Message broker Eventuate CDC service Send message Publish event Consume message/event Transactional Outbox/ Event Sourcing Service Service Idempotency Sharding
  6. 6. @crichardson About the Eventuate CDC service Publishes messages inserted into the message/events table to the message broker: Tails MySQL/Postgres transaction log Uses polling for other databases Spring Boot application/available as a Docker container Scaling - CDC per service database
  7. 7. @crichardson Supported infrastructure Databases: Postgres, MySQL, SQL server, etc. Message Brokers: Apache Kafka, Apache ActiveMQ, RabbitMQ and Redis Streams
  8. 8. @crichardson start.eventuate.io: enhanced Spring Initialzer
  9. 9. @crichardson Described in my book Examples are all Eventuate-based https://microservices.io/book
  10. 10. @crichardson Agenda Overview of Eventuate Using Eventuate Tram Event Sourcing with Eventuate Local
  11. 11. @crichardson Eventuate Tram = Transactional messaging and sagas for services using traditional persistence
  12. 12. @crichardson Eventuate Tram features Transactional messaging Events Commands Saga orchestration
  13. 13. @crichardson Eventuate Tram architecture Eventuate Tram framework Eventuate Tram framework Message broker Eventuate CDC service Publishes messages inserted into MESSAGE table Relational database: MySQL Postgres, …. MESSAGE Table INSERT INTO MESSAGE…. Subscribe to messages Apache Kafka ActiveMQ RabbitMQ Service Service
  14. 14. @crichardson ACID transaction Eventuate Tram: sending a message ChannelEventuate Tram Producer Eventuate Tram Consumer Optional partition key Message Scalable Ordered, at-least once delivery DB
  15. 15. @crichardson ACID transaction Eventuate Tram: consuming a message Channel Message Eventuate Tram DB Built-in idempotent consumer Scalable Ordered, at-least once delivery
  16. 16. @crichardson Transactional messaging Implements transactional outbox
  17. 17. @crichardson Events: publishing Events = Messages++ aggregateType = channel aggregateId is the partition key = ensures ordering of events from a given aggregate
  18. 18. Events: consuming
  19. 19. @crichardson About commands Builds on transaction messaging Asynchronous Request/response Request message has headers: commandType - used to select command handler replyTo - channel to send reply to
  20. 20. Sending commands
  21. 21. @crichardson Handling commands
  22. 22. @crichardson Saga orchestration - orchestrator Sequence of steps step = (Ti, Ci) Saga’s Data https://github.com/eventuate-tram/eventuate-tram-sagas-examples-customers-and-orders
  23. 23. @crichardson Customer Service command handler Route command to handler Reserve credit Make reply message
  24. 24. @crichardson Agenda Overview of Eventuate Using Eventuate Tram Event Sourcing with Eventuate Local
  25. 25. @crichardson About Eventuate Local Event Sourcing framework for Java/Spring Boot/Micronaut Event store built on open-source technologies Database: “JDBC” databases: MySQL, Postgres, SQL Server, … Message broker: Apache Kafka
  26. 26. @crichardson Eventuate Local architecture Eventuate Local framework Eventuate Local framework Apache Kafka Eventuate CDC service Publishes messages inserted into EVENTS table Relational database: MySQL Postgres, …. EVENTS Table INSERT INTO EVENTS…. SELECT … FROM EVENTS Subscribe to messages Service Service Event Store
  27. 27. @crichardson Command-side logic
  28. 28. @crichardson Customer command processing
  29. 29. @crichardson Customer applying events
  30. 30. @crichardson Creating a Customer save() concisely specifies: 1.Creates Customer aggregate 2.Processes command 3.Applies events 4.Persists events
  31. 31. @crichardson Command side event handler Implements idempotency
  32. 32. @crichardson Query-side logic
  33. 33. @crichardson Query-side event handler
  34. 34. @crichardson @crichardson chris@chrisrichardson.net http://eventuate.io Questions?