Added prefix match for consistent hash#103
Conversation
|
We found a Contributor License Agreement for you (the sender of this pull request), but were unable to find agreements for all the commit author(s) or Co-authors. If you authored these, maybe you used a different email address in the git commits than was used to sign the CLA (login here to double check)? If these were authored by someone else, then they will need to sign a CLA as well, and confirm that they're okay with these being contributed to Google. |
|
We found a Contributor License Agreement for you (the sender of this pull request), but were unable to find agreements for all the commit author(s) or Co-authors. If you authored these, maybe you used a different email address in the git commits than was used to sign the CLA (login here to double check)? If these were authored by someone else, then they will need to sign a CLA as well, and confirm that they're okay with these being contributed to Google. |
|
CLAs look good, thanks! |
1 similar comment
|
CLAs look good, thanks! |
|
Changes consistenthash's get() function from O(log n) to O(1), with a memory overhead of 6*n (where n is the number of virtual nodes). On an AWS t3.2xlarge dedicated instance, this reduces the consistenthash benchmark times by 56% (8 nodes) to 72% (512 nodes). Data available at https://docs.google.com/spreadsheets/d/1K_kmk0_Lqk6iaSDUytjkT8RNGPTptBwBEWO8q4uAn3w/edit?usp=sharing |
consistenthash/consistenthash.go
Outdated
| } | ||
|
|
||
| func New(replicas int, fn Hash) *Map { | ||
| func New(replicas int, tableExpansion int, fn Hash) *Map { |
There was a problem hiding this comment.
This is a breaking API change for anybody using this package. Also, this parameter isn't documented.
Maybe make a new NewXxx func instead taking the new parameter and make the existing New default to 6 or whatever?
| hashMap map[int]string | ||
| hash Hash | ||
| replicas int | ||
| prefixTableExpansion int |
There was a problem hiding this comment.
document these fields now that they're non-obvious?
Done. I didn't know we had external consumers of the package.
Done, and gladly. Let me know if the documentation is too verbose or unclear. |
|
@bradfitz : ping |
|
I'm not seeing any changes. Did you forget to push? |
54a257b to
86a154e
Compare
|
Oh, my. That's embarrassing. I got back to your comments in the hour after you made them, then forgot to push them up. They're pushed now. |
|
Oh, my. That doesn't inspire confidence in someone's changes, does it? I had run Fixed the issues requested (in all instances). All of the tests pass now. |
|
@bradfitz Requested changes made. Would love to see this change included so I can drop my forked repo. |

No description provided.