Skip to content
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

关于从注册中心获取缓存地址的问题 #364

Open
LeoZhw opened this issue Oct 6, 2019 · 0 comments
Open

关于从注册中心获取缓存地址的问题 #364

LeoZhw opened this issue Oct 6, 2019 · 0 comments

Comments

@LeoZhw
Copy link

LeoZhw commented Oct 6, 2019

我读源码的时候发现,缓存寻址的流程大概是这样的:
DefaultAddressResolver : IAddressResolver 这个类先通过 IServiceCacheManager 从注册中心取到缓存ServiceCache 信息,然后根据ServiceCache中的缓存描述符哈希查找出本地的 ConsistentHash ,完成寻址操作。DefaultAddressResolver 会通过事件监听和注册中心的节点数据保持一致。

我有两个的问题:
1.关于Surging.Core.Caching.AddressResolvers.Implementation.DefaultAddressResolver 类: 为什么不直接使用从注册中心拿到的缓存信息,而是还要在本地做一个备份,查找两次呢。我看到有一个 if (descriptor == null) 的判断,就是说不为空的时候就不需要查找注册中心,只需要查本地,是为了这种考虑吗,减小注册中心的负担?
2. 关于Surging.Core.Caching.HashAlgorithms.ConsistentHash 类:AddNode方法会循环Hash(key)+1建1000个本地缓存节点,1000个不同的key对应同一个value,全部存在一个字典里。请问一下,为什么会创建这么多呢,是什么样的考虑呢?而且查找也只有第一个节点能被查找到吧?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant