如何在java代码中动态区分memcahce实例?
有人能提出任何设计模式来动态区分java代码中的memcahce实例吗? 以前在我的应用程序中,只有一个memcache实例是这样配置的 步骤1: dev.memcached.location=33.10.77.88:11211 dev.memcached.poolsize=5 步骤2: 然后我在代码中访问memcache,如下所示如何在java代码中动态区分memcahce实例?,java,design-patterns,memcached,Java,Design Patterns,Memcached,有人能提出任何设计模式来动态区分java代码中的memcahce实例吗? 以前在我的应用程序中,只有一个memcache实例是这样配置的 步骤1: dev.memcached.location=33.10.77.88:11211 dev.memcached.poolsize=5 步骤2: 然后我在代码中访问memcache,如下所示 private MemcachedInterface() throws IOException { String location =stringPara
private MemcachedInterface() throws IOException {
String location =stringParam("memcached.location", "33.10.77.88:11211");
MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(location));
}
然后,我使用上面的MemcachedInterface()在代码中调用该memcache,如下所示
步骤3:
MemcachedInterface.getSoleInstance()强>
然后我使用MemcachedInterface()获取/设置数据,如下所示
private MemcachedInterface() throws IOException {
String location =stringParam("memcached.location", "33.10.77.88:11211");
MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(location));
}
MemcachedInterface.set(MEMCACHED_CUSTS,{});
resp=MemcachedInterface.get(MEMCACHED_CUSTS)强>
我的问题是,如果我在我们的架构中引入一个新的memcache实例,配置如下:
private MemcachedInterface() throws IOException {
String location =stringParam("memcached.location", "33.10.77.88:11211");
MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses(location));
}
步骤1:
dev.memcached.location=33.10.77.89:11211
dev.memcached.poolsize=5
因此,第一个memcache实例位于33.10.77.88:11211,第二个memcache实例位于33.10.77.89:11211
在这之前没关系……但是
在这种情况下,如何处理步骤2和步骤3,以动态获取MemcachedInterface
1) 我应该在步骤2中再使用一个名为MemcachedInterface2()的接口吗
现在实际问题来了,
我的应用程序中有4个Web服务器。以前所有服务器都在写入MemcachedInterface(),但现在我将介绍另外一个memcache实例,例如:MemcachedInterface2()ws1和ws2应写入MemcachedInterface(),ws3和ws4应写入ex:MemcachedInterface2()中
因此,如果我再使用一个名为MemcachedInterface2()的接口,如上所述
这是一个代码负担,因为我应该将使用WS3和WS4的所有类更改为Ex:MemcachedInterface2()
有人能推荐一种代码更改有限的方法吗?xmemcached支持固定哈希,这将允许您的客户端从池中选择正确的memcached服务器实例。你可以参考这个答案了解更多细节 所以,如果我理解正确,你必须
MemcachedInterface
周围有自己的包装器类,因此必须向该接口添加一些方法,以便能够向现有客户机添加/删除服务器。请参阅用户指南(向下滚动一点):就我所见,您在不同的机器上运行重复的代码,就像并行web服务一样。因此,我建议将其区分开来
--Dcom.projectname.servername=server-1
祝你的设计好运 您应该在配置中将所有memcached服务器实例列为分隔的空间 e、 g。 33.10.77.88:11211 33.10.77.89:11211 因此,在您的代码(步骤2)中: 在第三步中,你不需要改变任何东西<代码>MemcachedInterface.getSoleInstance()代码> 您可以在memcached教程文章中阅读更多内容: 使用Memcached提高Java企业性能,第1部分:体系结构和设置 使用Memcached提高Java企业性能,第2部分:数据库驱动的web应用