为了账号安全,请及时绑定邮箱和手机立即绑定

不知道各位有何更好的解决方案,甚至不利用缓存,可以打破这道性能瓶颈的?

不知道各位有何更好的解决方案,甚至不利用缓存,可以打破这道性能瓶颈的?

holdtom 2023-05-04 09:05:33
根据当前的开发进度,已经利用hazlecast做了存储对象的缓存,但是,对于每次写文件时候replica的更新并没有做缓存,每有一个写文件操作请求,都会直接去数据库中更新replica的信息,导致当一个写动作引发连续的写请求的时候,就会连续的去更新数据库,为了降低数据库的读写次数,我们想放个全局的缓存对象在内存中,然后异步得将缓存中的replica更新到数据库中。而这样又会引出另一个问题,多个客户端写同一个文件的同步问题,这又该如何在缓存中处理呢?总结出:1.建立缓存对象,通过线程异步更新数据库以打到减少数据库读写次数来提高性能。2.引出的同步问题该如何处理。 开发语言,java。
查看完整描述

1 回答

?
慕桂英546537

TA贡献1848条经验 获得超10个赞

首先,个人觉得,用缓存只是来解决可用性问题。如果直接将更新对象放入缓存,这个方法是不可取的,你必须保证缓存的高可用性。缓存终究只是缓存,没法保证一致性。其实你目前的状况是需要解决分布式锁的问题,可以尝试使用队列,或者paxos算法去解决。或者在全局缓存中用一个所标记去标记你要写的文件。 其实你完全没必要自己去实现这套逻辑,直接用hdfs或者其他的分布式文件系统,加上zookeeper,肯定可以解决你的问题。

查看完整回答
反对 回复 2023-05-06
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信