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

特殊场景下,listen 未推送最新值 #11774

Open
Cczzzz opened this issue Feb 26, 2024 · 10 comments
Open

特殊场景下,listen 未推送最新值 #11774

Cczzzz opened this issue Feb 26, 2024 · 10 comments
Assignees
Labels
area/Config kind/question Category issues related to questions or problems

Comments

@Cczzzz
Copy link

Cczzzz commented Feb 26, 2024

特殊场景:

  • 一个主机同时启动两个进程
  • 两个进程都先get,然后做业务方法,然后listen 配置
  • 同时另外一个客户端会进行更新配置

因为两个进程会公用同一个磁盘缓存目录,第一次listen 时会读取磁盘上的md5值。所以以下情况时

时间 服务端客户端 服务端A 服务端B 磁盘缓存
T1 写入T1      
T2   Get V1   V1
T3 写入T2      
T4     Get V2 V2
T4   Listen 无返回 Listen 无返回 V2

如果配置不再更新,那么服务端A 将永远无法拿到V2 的值

@Cczzzz
Copy link
Author

Cczzzz commented Feb 26, 2024

现在想到的方式是为磁盘缓存目录追加pid ,但是如何清理历史的目录就是个问题

@KomachiSion
Copy link
Collaborator

md5应该是内存级别的比对, 如果是不同的两个进程,内存是不共享的,应该不会出现这个情况。

@Cczzzz
Copy link
Author

Cczzzz commented Feb 27, 2024

md5应该是内存级别的比对, 如果是不同的两个进程,内存是不共享的,应该不会出现这个情况。

第一次listen 是会读磁盘的

@KomachiSion
Copy link
Collaborator

可以通过不同进程指定不同缓存目录避免,或者指定nacos.cache.data.init.snapshot=false,让首次listen必定回调callback

@KomachiSion KomachiSion added the kind/question Category issues related to questions or problems label Feb 27, 2024
@Cczzzz
Copy link
Author

Cczzzz commented Feb 27, 2024

nacos.cache.data.init.snapshot

nacos.cache.data.init.snapshot go 客户端中 好像没这个配置项,java我看到了

@shiyiyue1102
Copy link
Collaborator

正常不同的服务端的本地缓存目录是不同的,不会相互影响

@Cczzzz
Copy link
Author

Cczzzz commented Feb 27, 2024

正常不同的服务端的本地缓存目录是不同的,不会相互影响
业务可能会使用固定目录

@shiyiyue1102
Copy link
Collaborator

本地

业务只能指定缓存目录的主目录,实际访问每个服务端的缓存目录nacos内部会在主目录下创建不同的缓存子目录

@shiyiyue1102
Copy link
Collaborator

我看到

在go语言sdk中也可以加上这个机制

@Cczzzz
Copy link
Author

Cczzzz commented Feb 27, 2024

本地

业务只能指定缓存目录的主目录,实际访问每个服务端的缓存目录nacos内部会在主目录下创建不同的缓存子目录

我知道,但是现在就是他们访问的是同一个服务端

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/Config kind/question Category issues related to questions or problems
Projects
None yet
Development

No branches or pull requests

3 participants