当应用程序分布在多个JVMS上时,我的一吨类将在每个JVM上具有多个实例。为此,我必须生成一个唯一ID,我必须使用单例模式类。在独立环境中运行正常。如何在分布式环境中制作Singleton模式,以便我们只能使用一个实例?
编辑:对于我的应用程序,我需要创建像
如果名称类似于Pavan Kumar,则用户ID应为pavankumar;如果在系统中已经存在该用户ID,则该用户ID应类似于pavankumar1,pavankumar2等。
如果在不同的服务器上遇到多个具有相同名称的用户的请求,则可能会导致ID重复。为此,我想在分布式环境中使用单例。
java singleton cluster-computing distributed-objects java-ee
我正在使用DO for IPC.我使用以下代码.它的工作正常在10.6和10.7但在10.8模具上甚至两种应用都是理想的.
// HELPER
NSConnection *connection =[NSConnection new];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(connectionDidDie:)
name:NSConnectionDidDieNotification
object:nil];
[connection setRootObject:syncManager];
if ([connection registerName:SYNC_SERVER_NAME] == NO){
NSLog(@"Error registering server");
}
- (void)connectionDidDie:(NSNotification *)aNotification{
NSConnection *deadConnection = [aNotification object];
id currentClient = [self.clientsList objectAtIndex:0];
NS_DURING
if([currentClient respondsToSelector:@selector(connectionForProxy)]) {
if(deadConnection == [currentClient connectionForProxy]){
// remove proxy with dead connection
[clientsList removeObjectAtIndex:0];
NSLog(@"Removed client from client list.");
}
}
NS_HANDLER
[self.clientsList removeObjectAtIndex:0];
NS_ENDHANDLER
}
Run Code Online (Sandbox Code Playgroud)
// UI App
// ------
self.server = [NSConnection rootProxyForConnectionWithRegisteredName:SYNC_SERVER_NAME host:nil];
if(nil != self.server){ …Run Code Online (Sandbox Code Playgroud) (来自Hadoop新手)
我希望在玩具Hadoop概念验证示例中尽可能避免使用文件.我能够从非基于文件的输入中读取数据(感谢http://codedemigod.com/blog/?p=120) - 它生成随机数.
我想将结果存储在内存中,以便我可以对其进行一些进一步的(非Map-Reduce)业务逻辑处理.Essetially:
conf.setOutputFormat(InMemoryOutputFormat)
JobClient.runJob(conf);
Map result = conf.getJob().getResult(); // ?
Run Code Online (Sandbox Code Playgroud)
似乎做我想要的最接近的事情是将结果存储为二进制文件输出格式,并使用等效的输入格式将其读回.这似乎是不必要的代码和不必要的计算(我是否误解了Map Reduce所依赖的前提?).
截至 2016 年,关于此的Apple 文档已过时且不起作用。例如,他们提到“保留”,但在 XCode 7.1 中默认使用 ARC 并且它不支持“保留”。我在网上尝试了各种示例,但没有一个奏效。我如何在 OSX 上编写称为分布式对象的 IPC 机制,其中客户端应用程序可以调用服务器应用程序上的类方法(就像在 LaunchDaemon 中特别编写的一个,但不是必需的)?