-
-
Notifications
You must be signed in to change notification settings - Fork 559
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docs: messaging architecture #2216
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This a great piece of architecture
|
||
Pipes are used a lot in Ockam messaging, more on pipes in [Pipes and Channels](./Pipes_Channels.md) | ||
|
||
## Mutual accessibility with return routes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As Backtracing is not always allowed by the forwarder on the routes from A
to B
, there may not be a return path by these hops but it doesn't mean B
cannot reach A
by another route that must be known before-head.
Routes could be A->Fr1; Fr1->Fst2; Fst2->B
and `B->Fst3->Fr1->A'
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes. Backtracing is enough to make workers mutually accessible, but it's not required.
Even more, with some state on both ends you can configure forwarding workers to create backtracing routes even if routes in the middle are not backtracing.
For example our Stream channel implementations: messages in the stream are not tracing return route, but add the "reply stream" metadata to the messages.
|
||
<img src="./images/retries.jpg" width="100%"> | ||
|
||
To provide at-least once delivery between workers which don't have additional logic, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You may quote or use any other artifact to visually group the delivery types
To provide at-least once delivery between workers which don't have additional logic, | |
To provide `at-least once` delivery between workers which don't have additional logic, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For consistency will use at-least-once, at-most-once and exactly-once without quoting.
7ca5aaa
to
538fdd6
Compare
@dvermd Thanks for review. |
ef2f89d
to
81f9a86
Compare
Introduce pipes and channels List delivery properties Cover Accessibility, Reliability and Ordering Introduce asymmetrical workers and sessions as implementation tools Add pipes directory with pipe implementations and their requirements
81f9a86
to
048084b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great, let's merge these 👍
Adding architecture docs to describe messaging properties and building blocks
Checks