猿问

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

根据当前的开发进度,已经利用hazlecast做了存储对象的缓存,但是,对于每次写文件时候replica的更新并没有做缓存,每有一个写文件操作请求,都会直接去数据库中更新replica的信息,导致当一个写动作引发连续的写请求的时候,就会连续的去更新数据库,为了降低数据库的读写次数,我们想放个全局的缓存对象在内存中,然后异步得将缓存中的replica更新到数据库中。而这样又会引出另一个问题,多个客户端写同一个文件的同步问题,这又该如何在缓存中处理呢?

总结出:

  • 1.建立缓存对象,通过线程异步更新数据库以打到减少数据库读写次数来提高性能。

  • 2.引出的同步问题该如何处理。

 开发语言,java。


holdtom
浏览 102回答 1
1回答

慕桂英546537

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

相关分类

Java
我要回答