Infima Shuffle Shard Loadbalancer#15375
Conversation
|
Hi @cgetzen, welcome and thank you for your contribution. We will try to review your Pull Request as quickly as possible. In the meantime, please take a look at the contribution guidelines if you have not done so already. |
|
CC @envoyproxy/api-shepherds: Your approval is needed for changes made to |
Signed-off-by: Charlie Getzen <charliegetzenlc@gmail.com>
311958c to
8c1bdfb
Compare
|
cc @wgallagher could you take a first pass? |
b822391 to
93f3a85
Compare
93f3a85 to
940bf0a
Compare
a8b7439 to
19a3400
Compare
Signed-off-by: Charlie Getzen <charliegetzenlc@gmail.com>
mattklein123
left a comment
There was a problem hiding this comment.
Just a quick drive by until Bill gets a chance to take a look.
/wait
| patches = ["@envoy//bazel/external:boringssl_fips.patch"], | ||
| ) | ||
|
|
||
| def _com_github_cgetzen_cpp_infima(): |
There was a problem hiding this comment.
will this move to a public repo before commit?
There was a problem hiding this comment.
It is currently public here: https://github.com/cgetzen/cpp-infima
I'd like to see ownership transferred to github.com/envoyproxy, but there may be other options I haven't considered.
There was a problem hiding this comment.
I haven't reviewed the overall PR yet since it's still drafting, but just a heads up but we are unlikely to take a dependency on this external repo. I would just inline whatever code you actually need to make the PR function vs. using the library.
There was a problem hiding this comment.
Gotcha. This is a good opportunity for me to learn how licensing works.
Signed-off-by: Charlie Getzen <charliegetzenlc@gmail.com>
Signed-off-by: Charlie Getzen <charliegetzenlc@gmail.com>
|
Signed-off-by: Charlie Getzen <charliegetzenlc@gmail.com>
Signed-off-by: Charlie Getzen <charliegetzenlc@gmail.com>
Signed-off-by: Charlie Getzen <charliegetzenlc@gmail.com>
Signed-off-by: Charlie Getzen <charliegetzenlc@gmail.com>
Signed-off-by: Charlie Getzen <charliegetzenlc@gmail.com>
Signed-off-by: Charlie Getzen <charliegetzenlc@gmail.com>
| # load balancers | ||
| /*/extensions/load_balancers @snowp @mattklein123 |
There was a problem hiding this comment.
I haven't reviewed the change, but if you did go ahead and make an LB extension point to fix that issue, please PR that first and we can review independently. Would be great to get that fixed! (This PR is too large as it is). Thanks!
/wait
|
This pull request has been automatically marked as stale because it has not had activity in the last 30 days. It will be closed in 7 days if no further activity occurs. Please feel free to give a status update now, ping for review, or re-open when it's ready. Thank you for your contributions! |
|
This pull request has been automatically closed because it has not had activity in the last 37 days. Please feel free to give a status update now, ping for review, or re-open when it's ready. Thank you for your contributions! |
Commit Message: upstream: add shuffle-sharding load balancer
Additional Description:
Risk Level: Medium
Testing: TBD
Docs Changes: TBD
Release Notes: TBD
Platform Specific Features:
[Optional Runtime guard:]
[Optional Fixes #Issue]
#14663
[Optional Deprecated:]
[Optional API Considerations:]
This implements what is closest to option 1 from the google doc referenced in the issue #14663.
If I get a tentative thumbs-up, I will begin working on:
Description
Please learn more about shuffle sharding from the linked issue.
Using a Lattice to shuffle shard, we can ensure that a request isn't isolated to a single fault-boundary.
use_zone_as_dimensions: this allows one to use envoy's zone as a Lattice dimension.dimensions: A list of strings that serve as Lattice dimensions. Similar to the SubsetLb, this pulls from ENVOY_LB metadata.endpoints_per_cell: The amount of endpoints returned for a given cell. To calculate the number of endpoints available to a given unique request: endpoints_per_cell x cells. The number of cells is the multiplication of number of dimension values for each dimension (eg. "AZ" could have 3 values, "Region" could have 2 values = 6 cells)