You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: internal/ipc/design.md
+8-6Lines changed: 8 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -69,12 +69,14 @@ Also connect rpc is part of CNCF ([source](https://www.cncf.io/projects/connect-
69
69
70
70
Potential drawbacks: Performance
71
71
72
-
Using [nri/net/multiplex](https://github.com/containerd/nri/tree/main/pkg/net/multiplex) with [ttrpc](https://github.com/containerd/ttrpc) probably would be the most performance optimised solution.
73
-
It re-uses one stream over the multiplexed socket per direction and has overhead of the http protocol as protobuf gets streamed directly over the multiplexer.
74
-
However, it has stopped evolving and e.g. has not caught up on latest improvements on protobuf.
75
-
Another major downside is that it's mainly Go only, i.e., supporting alternative languages for plugins would come at a high cost.
76
-
We argue that in our use case, as the networking only happens locally so the overhead of grpc over http and the cost of opening a new yamux stream are negligible.
77
-
In addition, the main performance bottleneck will be within the actual plugins, e.g., because authentication needs to happen, disk access or because (slow) external networking access is required.
72
+
Using [nri/net/multiplex](https://github.com/containerd/nri/tree/main/pkg/net/multiplex) with [ttrpc](https://github.com/containerd/ttrpc) probably would be the most performant solution.
73
+
It re-uses one stream over the multiplexed socket per direction and does not have the overhead of the HTTP protocol as Protobuf gets streamed directly over the multiplexer.
74
+
Although lightweight, it has stopped evolving and has not caught up to the latest improvements on Protobuf.
75
+
Another major downside is that it's mainly Go only.
76
+
Plugins written in a different language would come at a high cost.
77
+
78
+
We argue that in our use case since the networking only happens locally the overhead of GRPC over HTTP and the cost of opening a new yamux stream per API request are negligible.
79
+
In addition, the main performance bottleneck will be within the actual plugins due to IO operations, additional upstream network requests and potentially authentication.
0 commit comments