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.

An overview of the Eventuate Platform

685 views

Published on

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

https://eventuate.io/

Published in: Software
  • Be the first to comment

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?

×