Skip to content

Commit e4a7720

Browse files
committed
Polishing the nitpicks from the review
1 parent aeabc6d commit e4a7720

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

documentation/modules/ROOT/pages/02-architecture.adoc

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
The architecture of an event mesh-enabled system is a paradigm shift from traditional transactional designs to an eventual consistency model.
99
This design aligns better with real-world processes, where different parts of a system may operate asynchronously yet collaboratively.
10+
1011
In this section, we explore the technologies, flow, and structure that make the event mesh architecture resilient, scalable, and developer-friendly.
1112

1213
[#tech_stack]
@@ -94,7 +95,7 @@ It will eventually settle correctly in all downstream systems.
9495
4. The endpoints receive the events and process them, updating their internal states and potentially emitting new events for downstream consumers.
9596
The potential events are transmitted to the _Event Mesh_.
9697
5. The dispatch loop continues until the event queue is empty and all the events are processed successfully.
97-
The failures are being automatically retried by the _Event Mesh_ using exponential backoff algorithm.
98+
The failures are being automatically retried by the _Event Mesh_ using exponential backoff algorithm by default.
9899

99100
image::https://www.plantuml.com/plantuml/svg/XPBHhjGW48RlUOgnzzi7wCNcsDGOeySOZG_0qkcMB8NA33MDyTsbb6CNNUCT_FF_tv0PdeYbvp0PyOf7d10coUYrFBd0HbiKTDDsbbvEi5rvdH5cPzPK4yguq4FrPa7By8mqLl1302WtpSvkMlNUIjOBGklT3Nq5al8nshu531WjShZ9L4adyLE8mPaUFLJFMda7X7xH2kalUESZsXDysGs9aRKiHNylMLuauM7lsdjdrvRGTtPnMcbxBR2xYe-mHo23i_TFy4V7Uj1AidQsODyNihuDuIxw0QzIhK0hCKxb68xgwtbEkFrQF34xkbt8Wsgt9hbowjrtUphdtJJmALoCfX5msoozk6glhoFNvvY51hxEiG6cBcBF7OQqIOWSzAI9NpZbSg0sE73zpwuPUehlAeCDV7Q1yO4lZ_w_ldBafVdnK-lpyM4QU8jCeEtWG5vY2lgz98h-ANNyXjyJomfuLCxt99xGzc4olm00[width=100%]
100101

@@ -137,7 +138,7 @@ InvoiceService ..> InvoiceDB: Update Invoice records
137138

138139
The diagram illustrates the example flow of events between the applications, the Knative _Event Mesh_, and the datastores which persist settled state of the system.
139140

140-
[NOTE]
141+
[TIP]
141142
====
142143
Notice the applications aren't pulling the events from the queue.
143144
In fact they aren't aware of any.
@@ -147,6 +148,14 @@ There are *no additional* libraries needed to consume events from _Event Mesh_.
147148
The _Event Mesh_ pushes the events as _CloudEvents_ encoded as _REST_ messages.
148149
====
149150

151+
[NOTE]
152+
====
153+
The exponential backoff algorithm used by _Event Mesh_ is configurable.
154+
It uses the following formula to calculate the backoff period: `+backoffDelay * 2^<numberOfRetries>+`, where the backoff delay is a base number of seconds, and number of retries is automatically tracked by the _Event Mesh_.
155+
156+
A dead letter sink can also be configured to send events in case they exceed the maximum retry number, which is also configurable.
157+
====
158+
150159
=== _Work Ledger_ analogy
151160

152161
A good way of thinking about the _Event Mesh_ and its persistent queue backend is the _Work Ledger_ analogy.
@@ -225,7 +234,7 @@ For instance:
225234
Traditional systems often rely on synchronous calls and transactions, which can cascade failures across components.
226235
Replacing these with asynchronous event-driven communication reduces dependencies and makes the system _Eventually Consistent_.
227236

228-
For example, invoicing and notification services in an e-commerce platform can process events independently, ensuring that downtime in one service does not block the entire workflow.
237+
For example, invoicing and notification services in a ride-sharing platform can process events independently, ensuring that downtime in one service does not block the entire workflow.
229238

230239
Retry mechanisms provided by the _Event Mesh_ guarantee that transient failures are handled gracefully without data loss.
231240

@@ -237,10 +246,10 @@ The applications publish and consume events, usually via
237246
_HTTP REST_, and the only thing that is required is the _CloudEvents_ format.
238247

239248
The _CloudEvents_ format provides a common envelope for events with metadata that every event needs, such as identifier, type, timestamps, or source information.
240-
The format is a CNCF standard supported by a number of projects and doesn't enforce the use of any library.
249+
The format is a _CNCF_ standard supported by a number of projects and doesn't enforce the use of any library.
241250

242251
This makes the investment in _Knative's Event Mesh_ safe in terms of vendor lock-in.
243252
Architects can be assured that their options remain open and that solutions can be easily reconfigured down the road.
244253

245254
What's more, relying on well-known and easy-to-deploy _CloudEvents_, typically over _HTTP_, makes testing simple and straightforward.
246-
Developers don't need complex development environments because the _Event Mesh_ integration can be easily tested with regular _REST_ send or receive tests that most developers are familiar with.
255+
Developers don't need complex development environments because the _Event Mesh_ integration can be easily tested with regular _REST_ testing that most developers are familiar with.

0 commit comments

Comments
 (0)