0

我计划在我的负载平衡 web 应用程序中使用分布式缓存。所以我将尝试抽象出apache ehcache和memcached之间的共同功能。

我的目标是能够进行简单的配置切换来选择要使用的缓存解决方案。我应该走 SPI 路线,例如 XML 解析器是如何连接的吗?

4

3 回答 3

1

修复界面后,这确实是一个创建模式的问题。依赖注入是我最喜欢的,如果缓存选择策略是动态的,你可以使用 spring bean factory 在运行时决定。Spring 支持 Web 应用程序上的“会话”范围,这意味着您可以让工厂根据需要决定每个会话。

否则,一个简单的服务定位器也应该可以解决问题。

http://en.wikipedia.org/wiki/Service_locator_pattern

于 2008-12-12T09:30:37.617 回答
1

从我的头顶...

  • 使用常见的缓存相关方法创建接口(add()、remove()、refresh() 是最明显的方法)。
  • 创建该接口的实现,该实现在下面使用所需的缓存(“MyEhCacheImplementation”和“MyMemCachedImplementation”或类似的东西)。
  • 创建一个 CacheFactory,它根据简单的值(如数字、字符串或枚举)返回某种类型的缓存。不要忘记为默认实现做一个后备!
  • 创建某种方式在初始化时将该单个值注入工厂,例如,如果您有一些在启动期间读取各种设置的类,或者您正在使用 Spring applicationContext.xml 或类似的东西,您需要为缓存创建一个初始化方法它接受一个参数,调用工厂并返回正确类型的缓存和/或将其设置到您使用它的某个位置。

我相信这就是你在结构上需要让它可靠地工作的所有东西,这样你就可以随时扩展它。

于 2008-12-12T10:16:24.013 回答
1

Spring 也有一个缓存提供程序模块,它完全可以满足您的需求。不过,我只是不确定是否支持 memcached。即使没有,为它编写一个适配器也可能比手动滚动你自己的界面要少。见https://springmodules.dev.java.net/docs/reference/0.8/html_single/#cache

于 2008-12-21T04:45:11.133 回答