sta*_*ker 7 java spring ehcache
"雷鸣般的群体"问题发生在高度并发的环境中(通常是许多用户).当许多用户同时向同一条数据发出请求,并且存在高速缓存未命中(高速缓存元素的数据不存在于高速缓存中)时,触发了雷鸣般的群体问题.
我找不到ehcache-spring-annotations正在解决这个问题的证据.
我是否要编写包装器并使用显式锁定机制?
小智 3
你的问题的简短答案是“不”。缓存注释旨在具有一定的通用性,而诸如“惊群”之类的问题的解决方案则是特定于实现的。
根据您的后续评论,我将假设您使用 Ehcache 作为实现。您引用的描述问题的页面提供了一些解决方案,例如使用 BlockingCache 作为底层缓存的装饰器。(他们记录此类解决方案的事实意味着 Ehcache 默认情况下不处理“惊群”问题。)
BlockingCache 似乎是最直接的解决方案,所以我将从它开始。以编程方式使用 BlockingCache 非常简单,但通过配置使用它需要您做更多的工作。您需要通过扩展 Ehcache 的 CacheDecoratorFactory 来编写自己的 BlockingCacheDecoratorFactory。完成后,您可以在 ehcache.xml 中为任何需要它的缓存进行配置。但一定要小心;不必要地将缓存转变为 BlockingCache 会对性能产生不利影响。
假设您编写了自己的装饰器工厂 org.stacker.cache.BlockingCacheDecoratorFactory,并且您有一个名为“adImages”的缓存,您希望保护它免受“雷群”问题的影响。您的新 ehcache.xml 条目可能如下所示:
<cache name="adImages"
maxElementsInMemory="5000"
eternal="false"
timeToIdleSeconds="1800"
timeToLiveSeconds="3600"
overflowToDisk="false">
<cacheDecoratorFactory class="org.stacker.cache.BlockingCacheDecoratorFactory" />
</cache>
Run Code Online (Sandbox Code Playgroud)
查看http://ehcache.org/documentation/user-guide/cache-decorators上的用户指南,了解 Ehcache 中的缓存装饰器。我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
1029 次 |
| 最近记录: |