如何校验多个 jvm 中的内存 cache 的数据一致性?

2023-07-14 11:09:37 +08:00
 bingoup886

机器数量很多,超过 10 万,想通过定时打点上报一个内存 map 的 md5 签名来比对,但感觉有点重,有没有更轻量级的方案?

1392 次点击
所在节点    程序员
10 条回复
Red998
2023-07-14 11:16:16 +08:00
不能用 redis 么?
Nooooobycat
2023-07-14 11:29:50 +08:00
map.hashCode ()?
bingoup886
2023-07-14 11:40:22 +08:00
@Red998 是在 client 中的,宿主不属于同一个服务,用 redis 不太好
bingoup886
2023-07-14 11:40:48 +08:00
@Nooooobycat 这个返回值会收到 jdk 版本的影响吧
dode
2023-07-14 13:32:20 +08:00
给数据签名,客户端校验呢
vino2014zly
2023-07-14 13:44:14 +08:00
加个版本号,cache 更新时版本号同步更新
iosyyy
2023-07-14 13:45:34 +08:00
感觉没啥太好的办法..
不过就这个感觉可以取样假设有 1000 台随机分片出来的 client 拿到的数据一致就默认他一致 或者用消息队列也可 就是你把这些 hash 后的或者 md5 的数据都上传到消息队列统一处理🤔
bthulu
2023-07-14 16:53:39 +08:00
是大型连锁超市/药店的收银台吧?
10 万机器, 上报内存 md5 这个有啥重的? 稍微错开个点时间上传就行了. 比如一台 10 点整, 一台 10 点 200 毫秒, 一台 10 点 300 毫秒. 将 10 万台机器上传时间控制在 10 秒内, 并发就是 1 万每秒. 服务端用一台机器, 起个后台, 起个 rabitmq, 后台就开一个接口, 接收数据甩进 mq 完事. 再过半小时, 由业务后台从 mq 中读取数据进行处理就行了.
xx6412223
2023-07-14 16:54:51 +08:00
给出的描述信息太少
1 cache 是每个节点独自拉取更新或者说维护更新的
2 有什么情况可能会造成 cache 不一致

保证所有 client 的 cache 一致,,本身这个想法就有点。。。
zibber
2023-07-15 11:44:01 +08:00
设备定时上传到对象存储, 写个脚本定时扫一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/956697

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX