Chapter 7. Stateful Streaming

Stateful streaming underpins the most important components of an event-driven microservice, as most applications will need to maintain some degree of state for their processing requirements. “Materializing State from Entity Events” briefly covered the principles of materializing an event stream into local state. This chapter takes a much deeper look at how to build, manage, and use state for event-driven microservices.

State Stores and Materializing State from an Event Stream

Let’s start with some definitions:

Materialized state

A projection of events from the source event stream (immutable)

State store

Where your service’s business state is stored (mutable)

Both materialized state and state stores are required and used extensively in stateful microservices, but it’s important to distinguish between them. Materialized states enable you to use common business entities in your microservice applications, whereas state stores enable you to store business state and intermediate computations.

Each microservice design must also take into account where the service will store its data. There are two main options for storing and accessing state:

  • Internally, such that the data is stored in the same container as the processor, allocated in memory or on disk.

  • Externally, such that the data is stored outside of the processor’s container, in some form of external storage service. This is often done across a network.

Figure 7-1 shows examples of both ...

Get Building Event-Driven Microservices now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.