-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
Added prefix match for consistent hash #103
base: master
Are you sure you want to change the base?
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.