This document provides an overview of event-driven architecture and distributed transactions with microservices. It discusses event-driven programming and what constitutes a distributed transaction when using microservices. It then covers some common solutions for distributed transactions like the 2PC and Saga patterns. The Saga pattern uses a choreography or orchestration approach and events to coordinate transactions across services. Message brokers like Kafka, RabbitMQ and Azure Event Hub are discussed for facilitating event-driven architectures. Vert.x and Spring WebFlux are presented as reactive frameworks that are non-blocking and scale well.