MLA - Middleware Layer Abstraction #53
Replies: 6 comments 6 replies
-
A few unordered thoughts on this:
|
Beta Was this translation helpful? Give feedback.
-
@phil-opp, for your comment#1, definitely we are not looking for "pick-and-mix". My hope is that for each communication patterns, we choose the best middleware provider. For example, for pub/sub pattern, Zenoh will be default since it is by far the best Rust middleware implementation. |
Beta Was this translation helpful? Give feedback.
-
When we talk about point-to-point do we strictly need a direct connection. Or, can we just use Zenoh, and create a specific topic and make two points communicate separately on this specific topic ? Knowing that any client-server communication will require that we initiate a server in addition to the Zenoh session on all nodes. This server will need additional constraints on IP and Port in order to be seen by all. This can be complex in a k8 environment, for example. I feel that the best MLA at the moment is just |
Beta Was this translation helpful? Give feedback.
-
@haixuanTao for point-to-point, I hope it is a direct link, since Zenoh may not be the best efficient way of doing that. We have experienced that performance issue in other project. |
Beta Was this translation helpful? Give feedback.
-
Since Dora needs to support log/recording, replay and monitoring for data steams (e.g., similar to ROSBag) such that developers can offline debug issues (it is critical since online debug for physical robotic physical machine is hard), I would suggest these capabilities be built into MLA. @phil-opp @haixuanTao, let me know what you think. Similarly message encoding, such as CapnProto (or protobuf, flatbuffer...) etc should also be part of MLA. |
Beta Was this translation helpful? Give feedback.
-
Since MLA will need to support Service (request/reply) as in ROS2 API, this Rust open source project may be a reference: https://github.com/cloudwego/motore Also CloudWeGo https://www.cloudwego.io/ also provides other MLA abstractions as well, such as Rust RPC framework |
Beta Was this translation helpful? Give feedback.
-
Middleware (communication) layer abstraction (MLA)
We need to implement MLA as a separate crate to provides a middleware abstraction layer that enables scalable, high performance communications for inter async tasks, intra-process (OS threads), interprocess communication on a single computer node or between different nodes in a computer network. MLA needs to support different communication patterns:
The MLA needs to abstract following details:
Rust eco-system has abundant crates to provide underlaying communications, e.g.,:
MLA also needs to provide high level APIs:
Beta Was this translation helpful? Give feedback.
All reactions