-
Notifications
You must be signed in to change notification settings - Fork 689
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
Use LinearCache to optimize StreamEndpoint discovery. #6906
base: main
Are you sure you want to change the base?
Conversation
Signed-off-by: Tero Saarni <[email protected]>
8f2cf3c
to
7bc7a34
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #6906 +/- ##
==========================================
+ Coverage 80.70% 80.79% +0.08%
==========================================
Files 131 131
Lines 19816 19802 -14
==========================================
+ Hits 15993 15999 +6
+ Misses 3533 3514 -19
+ Partials 290 289 -1
|
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.
before I review, we are extremely interested in this but is there a way to have this behind a feature flag?
Coming from a bit of ignorance but could contour be updated in place and things should just work or would it require to restart all the envoy pods?
I have not worked with go-control-plane and xDS subscription versioning details, so this should be carefully reviewed. I'd appreciate extra eyes on this. If necessary, we can add a feature flag, but I'm not sure if it is needed - see below.
I don't believe Envoy pods need to be restarted. As far as I understand, Envoys are completely unaware of the algorithm the server uses; they simply return the last received version info to the server. I'm still working on fully understanding the difference between the cache implementations. I created https://github.com/tsaarni/grpc-json-sniffer to gain more insight into this issue. |
I've ran some test scenarios and documented them here https://gist.github.com/tsaarni/db319d5d9935d18f8856fcdd9b2a89ae The go-control-plane cache implementations have some details that might be interesting to study as well |
This change attempts to improve performance in clusters with a large number of endpoints, as discussed in #6743 (comment). The PR replaces use of Envoy go-control-plane
SnapshotCache
withLinearCache
for EDS.The
LinearCache
was previously considered but not adopted due to complications outlined by @skriss in a prior PRThis PR attempts to mitigate this by generating unique version prefix at each startup.
Fixes #6743