WIP RFC: Expressive ZoneConfig#7660
Conversation
|
Review status: 0 of 1 files reviewed at latest revision, 1 unresolved discussion, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 67 [r1] (raw file):
We should sketch out how we're going to configure hierarchy. You mention above encoding the hierarchy in the attribute, but we currently allow multiple attributes to be specified at the node level. How do we know which one contains the diversity hierarchy? Per our discussion today, I'm wondering if we should always attempt to maximize diversity and leave the constraints for controlling which nodes are candidates. More specifically, a zone config would specify a number of replicas and an expression with positive and negative constraints which would control which stores are candidates for the replicas. Stores would be configured with a diversity label. After determining the candidate stores for a replica the allocator would make a best effort to maximize replica diversity at all levels of the diversity hierarchy for the candidate set. So if the candidate set included 3 racks there would be an effort made to place the replicas on different racks. If the candidate set included 4 different data centers there would be an effort made to place the replicas in different data centers. If you want all of the replicas in a particular data center, you specify a positive constraint on the candidates. Comments from Reviewable |
|
Review status: 0 of 1 files reviewed at latest revision, 1 unresolved discussion, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 67 [r1] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 3 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 112 [r1] (raw file):
We don't have to support regexes if we allow larger numbers of partially-redundant attributes (e.g. ("country:us", "region:us-west", "az:us-west-1") instead of just "us-west-1"). docs/RFCS/expressive_zone_config.md, line 145 [r1] (raw file):
Probably not. Per-replica attributes are useful now as a kind of pseudo-diversity constraint, but with real diversity constraints there's little reason to use them. In particular, it wouldn't make sense to use per-replica attributes for things like hardware type; it's only useful for location. (it doesn't make sense to say e.g. "two ssd replicas and one hdd", because we generally assume homogenous replicas. If the hdd node is a follower it will be chronically behind, and if it's a leader (we don't have any way to ensure that the SSDs become leader) it will slow down the rest of the group. However, non-homogenous replicas seem to be a common request from users so we may want to leave room to support this in the future). Comments from Reviewable |
|
Review status: 0 of 1 files reviewed at latest revision, 3 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 112 [r1] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 3 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 112 [r1] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 3 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 112 [r1] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 3 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 112 [r1] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 3 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 145 [r1] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 3 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 145 [r1] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 3 unresolved discussions, some commit checks pending. docs/RFCS/expressive_zone_config.md, line 145 [r1] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 3 unresolved discussions, some commit checks pending. docs/RFCS/expressive_zone_config.md, line 67 [r1] (raw file):
|
667a3b7 to
40f19f5
Compare
|
Review status: 0 of 1 files reviewed at latest revision, 5 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 132 [r2] (raw file):
Is the ordering important here? It isn't clear to me how we'll be measuring diversity. If I only have the tags docs/RFCS/expressive_zone_config.md, line 150 [r2] (raw file):
Is Comments from Reviewable |
|
Review status: 0 of 1 files reviewed at latest revision, 5 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 132 [r2] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 5 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 132 [r2] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 5 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 132 [r2] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 5 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 132 [r2] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 5 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 132 [r2] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 5 unresolved discussions, some commit checks failed. docs/RFCS/expressive_zone_config.md, line 132 [r2] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 5 unresolved discussions, some commit checks failed. docs/RFCS/expressive_zone_config.md, line 132 [r2] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 5 unresolved discussions, some commit checks failed. docs/RFCS/expressive_zone_config.md, line 132 [r2] (raw file):
|
|
Brief notes I wrote down after the meeting. Let me know if I missed anything. https://docs.google.com/document/d/1IeNHe3qysz2DEoOjBFMooFRUV7-Se8_J8SBpfW6hQZ0/edit?usp=sharing |
|
Looks complete to me. Let's trim down the portions of the RFC which have fallen into disfavor (e.g. |
|
Updated the RFC to talk about locality as KV vs hierarchical tags as well as stripping out the SQL stuff. |
|
Review status: 0 of 1 files reviewed at latest revision, 9 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 40 [r4] (raw file):
While working near the allocator code today, I discovered that we only respect the attributes for docs/RFCS/expressive_zone_config.md, line 203 [r4] (raw file):
This feels like a significant pitfall. Seems very easy for this to be fouled up by the administrator. docs/RFCS/expressive_zone_config.md, line 205 [r4] (raw file):
Having read the write-ups of both locality options, I'm leaning in favor of this one. docs/RFCS/expressive_zone_config.md, line 230 [r4] (raw file):
This paragraph seems repetitive with the one above. And for this configuration, it seems like trying to diverse both levels simultaneously will lead to the desired outcome. I'm not sure what that algorithm looks like, but it seems feasible. Comments from Reviewable |
|
Review status: 0 of 1 files reviewed at latest revision, 10 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 205 [r4] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 10 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 225 [r4] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 8 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 40 [r4] (raw file):
|
|
I've updated the RFC to clear up most of the issues. It now uses the order of tags for hierarchy and will warn the users via logs + admin UI about any issues with replication. The only unresolved question is about weak negative constraints, but I don't see any need to include those initially as there isn't a strong use case. |
|
Review status: 0 of 1 files reviewed at latest revision, 9 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 143 [r5] (raw file):
How would we discover this mismatch? Would we try to pick a "winning" order in the meantime or would each node just use its own order for its rebalancing decisions? The latter could result in thrashing so it may be worth trying to converge (via gossip?) on a single order even if the configurations are inconsistent. Also consider when a new attribute is introduced (or an old one removed). This would be rolled out gradually, so not all nodes would have the same set of attributes. I suggest that locality attributes should be ignored unless every candidate node has a value for them. Comments from Reviewable |
|
Review status: 0 of 1 files reviewed at latest revision, 9 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 143 [r5] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 9 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 143 [r5] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 9 unresolved discussions, all commit checks successful. docs/RFCS/expressive_zone_config.md, line 143 [r5] (raw file):
|
|
Any final comments before merging and beginning the implementation? |
|
Review status: 0 of 1 files reviewed at latest revision, 7 unresolved discussions, some commit checks failed. Comments from Reviewable |
|
LGTM Review status: 0 of 1 files reviewed at latest revision, 8 unresolved discussions, some commit checks pending. docs/RFCS/expressive_zone_config.md, line 162 [r6] (raw file):
Does this syntax work in yaml? The Comments from Reviewable |
|
Review status: 0 of 1 files reviewed at latest revision, 8 unresolved discussions, some commit checks failed. docs/RFCS/expressive_zone_config.md, line 162 [r6] (raw file):
|
|
Review status: 0 of 1 files reviewed at latest revision, 8 unresolved discussions, some commit checks failed. docs/RFCS/expressive_zone_config.md, line 162 [r6] (raw file):
|
Very much WIP. RFCified on request of @petermattis.
See #4868.
@bdarnell
This change is