-
Notifications
You must be signed in to change notification settings - Fork 818
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
负载均衡策略中的一致性哈希策略存在无法感知已摘除的下游列表问题 #1221
Comments
这个实际的逻辑是,如果key1过期,会在新的map里丢弃这个key,而不是不更新。 |
你好,你的邮件我已收到,谢谢!
|
丢弃key是一个定期执行的,在定期删除过期key之前,如果这个key1再次被使用,对应的Touch就会更新,key1就不属于过期key了,不会丢弃,而是继续使用 |
是的,但更新的时候如果key1是未过期的,是会被更新掉的,所以还是没有很理解具体的问题是? |
这个更新是在下游列表有更新的时候才会触发,在下游变更不是很频繁的场景,这个脏数据会存在很长时间。接上面的例子,一直到11点有变更,那么10点-11点期间key1的数据都是不对的。
|
你有可以复现的代码吗?我没理解「此时会直接去cachedConsistInfo中找key1对应的下游列表,此时会获取到未更新的脏数据,并更新key1对应Touch时间」这句话是什么意思?如果key1直接return,这里会拿新的数据重新build |
没有理解这里面的问题是什么,如果可以的话,能提供一个模拟复现场景的最小化单元测试用例以及期望结果的断言么 |
Describe the bug
负载均衡的一致性哈希策略,在下游列表发生变更时,有概率性不更新该列表,导致获取到错误的列表
To Reproduce
代码路径:kitex/pkg/loadbalance/consist.go
代码片段:
[Steps to reproduce the behavior:
Expected behavior
每次下游列表发生变更触发updateConsistInfo时都应保障数据是最新的
Screenshots
无
Kitex version:
0.8.0
Environment:
Additional context
无
The text was updated successfully, but these errors were encountered: