- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望通过在服务提供者和服务客户端之间放置一个缓存层来减轻每次访问数据库的“查找服务”的压力。我希望这个缓存层是持久的,并且可以容纳比 RAM 允许的更多的对象,所以普通的 Guava Cache 是行不通的。我研究过 EhCache 和 CouchBase 之类的东西,但出于各种原因决定自己动手。
为这个持久缓存层编写原始代码非常容易。然而,我对缓存的了解足以让我意识到有很多并发问题需要处理,而且我很确定我不会一次就把所有问题都解决掉。例如,存在“thundering herd”问题,其中缓存未命中可能会导致大量同时向支持服务请求完全相同的对象。令我震惊的是,这正是 LoadingCache 已经处理的事情类型。尝试让 Guava 完成处理并发的困难工作,然后插入我自己的子类来进行实际的对象检索和存储,这似乎是一个合理的想法吗?我不确定我将子类化或覆盖的确切界限在哪里,但我可以弄清楚这是否只是一个完全被误导的想法。我还没有看到扩展/自定义 Guava 缓存的示例,所以如果有任何示例和/或文档可供查看,我会对这些感兴趣。
最佳答案
我最终做的事情非常简单。我制作了一个普通的 LoadingCache,并在 load 和 reload 方法中执行了一些额外的操作。这给了我钩子(Hook)(即 CacheLoader 的加载和重新加载方法)在我的本地数据库中查找一个对象,如果我找不到它就调用远程服务并持久化它,而不用担心许多线程会尝试由于 Guava 提供的所有并发保护,得到相同的对象。
我确信这与缓存的预期使用方式相去甚远,因为我实际上将缓存上的 maximumSize 设置为 0,以便始终调用我的加载函数。 (出于各种原因,我希望每次都从持久存储中提供对象,而不是从 RAM 中)。我还没有对它进行彻底的测试,但它似乎表现得如我所愿。整体效果是一个拉通式“对象镜像”,充当上游服务的 self 更新副本。
关于java - 将Guava Cache作为我自己的持久化缓存的 "helper"是否可行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15957152/
对于我的一个项目,我终于需要使用我的第一个多态类(std::cout 除外)。 我正在研究如何确保至少在某些情况下我有 100% 的去虚拟化调用。 这段代码是否合法可行? dynamic_cast 有
最近有一个编译问题,用这个片段说明: struct Base { }; template struct A : Base { A(){} A(Base&&) {} }; A foo()
注意:这是一个冗长的问题,需要对 MVVM“设计模式”、JSON 和 jQuery 有很好的理解.... 所以我有一个理论/主张 DHTML 中的 MVVM 是可能的 和可行的 并且想知道您是否同意/
我有一台 Mac 服务器,我正在构建 PHP 代码以允许用户上传图像、文档甚至视频文件。研究这个肯定让我很紧张,我希望上传的内容没有病毒。 自己构建一些东西会是一个巨大的挑战吗?您会这样做,还是会
根据文档,ASP.NET 项目(尚)不支持新的 PackageReference https://learn.microsoft.com/en-us/nuget/consume-packages/pa
我是一名优秀的程序员,十分优秀!