java - 最近正在着手开发一个云存储的系统,面临性能瓶颈
PHP中文网
PHP中文网 2017-04-17 11:01:26
[Java讨论组]

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

总结出:

  • 1.建立缓存对象,通过线程异步更新数据库以打到减少数据库读写次数来提高性能。
  • 2.引出的同步问题该如何处理。

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

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(1)
PHP中文网

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号