Skip to content
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

Merged
merged 1 commit into from
Nov 30, 2021
Merged

Conversation

hairyhum
Copy link
Contributor

@hairyhum hairyhum commented Nov 16, 2021

Adding architecture docs to describe messaging properties and building blocks

Checks

Copy link
Contributor

@dvermd dvermd left a 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
Copy link
Contributor

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'

Copy link
Contributor Author

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.

documentation/architecture/messaging/Accessibility.md Outdated Show resolved Hide resolved
documentation/architecture/messaging/Accessibility.md Outdated Show resolved Hide resolved
documentation/architecture/messaging/Accessibility.md Outdated Show resolved Hide resolved
documentation/architecture/messaging/Accessibility.md Outdated Show resolved Hide resolved

<img src="./images/retries.jpg" width="100%">

To provide at-least once delivery between workers which don't have additional logic,
Copy link
Contributor

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

Suggested change
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,

Copy link
Contributor Author

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.

documentation/architecture/messaging/Reliability.md Outdated Show resolved Hide resolved
documentation/architecture/messaging/Delivery.md Outdated Show resolved Hide resolved
documentation/architecture/messaging/Pipes_Channels.md Outdated Show resolved Hide resolved
documentation/architecture/messaging/Pipes_Channels.md Outdated Show resolved Hide resolved
@hairyhum hairyhum force-pushed the hairyhum/architecture-messaging branch 2 times, most recently from 7ca5aaa to 538fdd6 Compare November 22, 2021 22:01
@hairyhum
Copy link
Contributor Author

@dvermd Thanks for review.

@hairyhum hairyhum force-pushed the hairyhum/architecture-messaging branch 2 times, most recently from ef2f89d to 81f9a86 Compare November 29, 2021 22:50
@hairyhum hairyhum marked this pull request as ready for review November 29, 2021 22:50
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
@hairyhum hairyhum force-pushed the hairyhum/architecture-messaging branch from 81f9a86 to 048084b Compare November 29, 2021 23:09
Copy link
Member

@mrinalwadhwa mrinalwadhwa left a 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 👍

@hairyhum hairyhum merged commit 048084b into develop Nov 30, 2021
@hairyhum hairyhum deleted the hairyhum/architecture-messaging branch February 4, 2022 19:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants