Introduction to EventMesh

CI status CodeCov Code Quality: Java Total Alerts License GitHub Release Slack Status

Apache EventMesh (Incubating) is a dynamic event-driven application runtime used to decouple the application and backend middleware layer, which supports a wide range of use cases that encompass complex multi-cloud, widely distributed topologies using diverse technology stacks.

Features

  • Communication Protocol: EventMesh could communicate with clients with TCP, HTTP, or gRPC.
  • CloudEvents: EventMesh supports the CloudEvents specification as the format of the events. CloudEvents is a specification for describing event data in common formats to provide interoperability across services, platforms, and systems.
  • Schema Registry: EventMesh implements a schema registry that receives and stores schemas from clients and provides an interface for other clients to retrieve schemas.
  • Observability: EventMesh exposed a range of metrics, such as the average latency of the HTTP protocol and the number of delivered messages. The metrics could be collected and analyzed with Prometheus or OpenTelemetry.
  • Event Workflow Orchestration: EventMesh Workflow could receive an event and decide which command to trigger next based on the workflow definitions and the current workflow state. The workflow definition could be written with the Serverless Workflow DSL.

Components

Apache EventMesh (Incubating) consists of multiple components that integrate different middlewares and messaging protocols to enhance the functionalities of the application runtime.

  • eventmesh-runtime: The middleware that transmits events between producers and consumers, which supports cloud-native apps and microservices.
  • eventmesh-sdk-java: The Java SDK that supports HTTP, TCP, and gRPC protocols.
  • eventmesh-connector-plugin: The collection of plugins that connects middlewares such as Apache Kafka, Apache RocketMQ, Apache Pulsar, and Redis.
  • eventmesh-registry-plugin: The collection of plugins that integrate service registries such as Nacos and etcd.
  • eventmesh-security-plugin: The collection of plugins that implement security mechanisms, such as ACL (access control list), authentication, and authorization.
  • eventmesh-protocol-plugin: The collection of plugins that implement messaging protocols, such as CloudEvents and MQTT.
  • eventmesh-admin: The control plane that manages clients, topics, and subscriptions.

Contributors

Each contributor has played an important role in promoting the robust development of Apache EventMesh (Incubating). We sincerely appreciate all contributors who have contributed code and documents. The following is the list of contributors in EventMesh-related repositories.