可能是由于Equalizer的开发者多是在Linux(ubuntu)和Mac平台下进行开发与测试,在Windows平台下编译的结果通常不能很好的在集群内运行。通过一些调试,我发现需要对代码和配置脚本进行一些修改。
第一步,需要对eq::net::node:: _createRemoteCommand作如下修改,其中stringStream所构造的字符串是通过ssh执行的远程调用指令,为了在windows中能够正常运行,其指令需要用“双引号”包含。(这里的反斜杠“/”只是用于标识后面的双引号是字符而非标识符)
stringStream
<< "/""
<< quote << program << quote << " -- --eq-client " << quote
<< remoteData << node->_launchID << SEPARATOR << node->_workDir
<< SEPARATOR << node->_id << SEPARATOR << getType() << SEPARATOR
<< ownData << quote
<< "/"";
第二步,需要在使用ssh的配置文件中增加如下全局标识:
global
{
EQ_CONNECTION_CATTR_LAUNCH_COMMAND_QUOTE '''
}
其中的单引号也是要添加到ssh指令的标识符,即上面代码中的quote变量。
然后就可以利用ssh实现集群的并行绘制了,相关的可以参考以前的文章。