我正在尝试确定用于集群化ServiceMix 3.3.1/Camel 2.1/AMQ 5.3应用程序的选项.我正在执行高容量消息处理,我需要集群以实现高可用性和水平可伸缩性.
这基本上就是我的应用程序所做的... HTTP-> QUEUE-> PROCESS-> DATABASE-> TOPIC
从( "码头:http://0.0.0.0/inbound ").要(" ActiveMQ的:inboundQueue");
from("activemq:inboundQueue?maxConcurrentConsumers = 50").process(decode()).process(transform()).process(validate()).process(saveToDatabase()).to("activemq:topic:ouboundTopic" );
所以,我已经阅读了所有ServiceMix和AcitveMQ集群页面,但我仍然不确定要走哪条路.
我知道我可以使用HA的主/从设置,但这对可伸缩性没有帮助.
我读过有关经纪人的网络,但我不确定这是如何适用的.例如,如果我在群集中的多个节点上部署相同的Camel路由,它们将如何"完全"交互?如果我将HTTP生成器指向一个节点(NodeA),哪些消息将被发送到NodeB?是否在节点A/B之间共享队列/主题...如果是,如何分割或复制消息?另外,外部客户端如何准确地订阅我的"outboundTopic"(并获取所有消息等)?
或者,我一直在想我应该在多个ServiceMix实例之间共享代理.那将是更清洁的,因为只需要管理一组队列/主题,我可以通过添加更多实例来扩展.但是,现在我受限于单个经纪人的可扩展性,我又回到了单点故障......
如果有人能为我澄清权衡......我会很感激.
我刚刚想出了如何使用Condor在集群上的机器上发送要处理的作业.既然我们有很多机器,而不是每台机器都配置相同,我想知道:
是否有可能告诉condor只将我的作业(python脚本)发送到机器上,因为我的脚本依赖于这个包,所以机器上安装了numpy?
我有以下shellcript:
#!/bin/sh
cd /sw/local/bin/
export LD_LIBRARY_PATH=/sw/local/lib:/usr/local/Trolltech/Qt-4.7.2/lib:$LD_LIBRARY_PATH
./FeatureFinderRaw -in /homes/JG-C1-18.mzML -out /homes/test_remove_after_use.featureXML -threads 20
Run Code Online (Sandbox Code Playgroud)
当我从我自己的命令行运行它时它工作正常,但是当我尝试这样做时:
qsub -q ningal.q -cwd -V -o /homes/queue.out -e /queue.err featureFind_C1-18_20t.sh
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
/bin/sh: module: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `module'
./FeatureFinderRaw: error while loading shared libraries: libOpenMS.so: cannot open shared object file: No such file or directory
/bin/sh: module: line 1: syntax error: unexpected end of file
/bin/sh: error importing function definition for `module'
./FeatureFinderRaw: error while loading …Run Code Online (Sandbox Code Playgroud) 我是Solr的新手.我正在尝试创建一个将结构化数据存储在数据库中的服务器,并且可以使用Solr/Lucene进行搜索.服务器可以集群到任意数量的相同节点中以实现高可用性.
似乎标准配置Solr将索引存储在文件系统上的文件中.这似乎引入了一致性和聚类的一些问题.
如何使索引在事务上与DB保持一致?有没有办法做到这一点?(例如,通过提交Solr索引协调提交到DB的某种方式?)
有没有办法将索引存储在(关系)数据库中?这将解决一致性问题和集群问题,但我没有找到很多关于如何做到这一点的文献.
配置为群集时,每个群集节点是否需要维护自己的索引副本.目前尚不清楚Solr的多个实例是否可以更新单个索引.
或者 - 我们是否放弃接受索引不保证一致,每天重建它?人们通常对此做些什么?
我正在玩Spark.它是来自网站的默认预构建分发版(0.7.0),具有默认配置,群集模式,一个工作者(我的本地主机).我阅读了有关安装的文档,一切似乎都很好.
我有一个CSV文件(各种大小,1000到100万行).如果我使用小输入文件(例如1000行)运行我的应用程序,一切都很好,程序在几秒钟内完成并产生预期的输出.但是当我提供更大的文件(100.000行,或100万行)时,执行失败.我试图挖掘日志,但没有多大帮助(它重复整个过程大约9-10次,然后在失败后退出.此外,还有一些与从某些空源获取失败相关的错误).
第一个JavaRDD返回的结果Iterable对我来说是可疑的.如果我返回一个硬编码的单例列表(如res.add("something");返回res;),一切都很好,即使有一百万行.但是,如果我添加我想要的所有键(28个字符串,长度为6-20个字符),则该过程仅在输入较大时才会失败.问题是,我需要所有这些密钥,这是实际的业务逻辑.
我正在使用Linux amd64,四核,8GB内存.最新的Oracle Java7 JDK.Spark配置:
SPARK_WORKER_MEMORY=4g
SPARK_MEM=3g
SPARK_CLASSPATH=$SPARK_CLASSPATH:/my/super/application.jar
Run Code Online (Sandbox Code Playgroud)
我必须提一下,当我启动该程序时,它说:
13/05/30 11:41:52 WARN spark.Utils: Your hostname, *** resolves to a loopback address: 127.0.1.1; using 192.168.1.157 instead (on interface eth1)
13/05/30 11:41:52 WARN spark.Utils: Set SPARK_LOCAL_IP if you need to bind to another address
Run Code Online (Sandbox Code Playgroud)
这是我的计划.它基于JavaWordCount示例,最低限度地修改.
public final class JavaWordCount
{
public static void main(final String[] args) throws Exception
{
final JavaSparkContext ctx = new JavaSparkContext(args[0], "JavaWordCount",
System.getenv("SPARK_HOME"), new String[] {"....jar" });
final JavaRDD<String> words = ctx.textFile(args[1], …Run Code Online (Sandbox Code Playgroud) 那么群集背后的想法是什么?
您有多台机器与您传播读/写的DB的相同副本?它是否正确?
这个想法是如何运作的?当我进行选择查询时,群集会分析哪个服务器具有较少的读/写并将我的查询指向该服务器?
当你应该开始使用集群时,我知道这是一个棘手的问题,但是有人可以给我一个例子,例如100万次访问和1亿行DB.
makeClusterSNOW包的功能具有不同的簇类型" SOCK"," PVM"," MPI"和" NWS",但我不太清楚它们之间的差异,更具体地说,哪个最适合我的程序.
目前我有一个不同长度的任务队列进入负载平衡群集,clusterApplyLB并使用64位32核Windows机器.
我正在寻找四种群集类型之间差异的简要描述,这对我的使用和原因最有用.
我在Softlayer上有一个四节点Hadoop集群.主(NameNode)具有用于外部访问的公共IP地址和用于群集访问的专用IP地址.从节点(datanode)具有私有IP地址,我正在尝试连接到主节点,而无需为每个从节点分配公共IP地址.
我已经意识到设置fs.defaultFS为NameNode的公共地址允许外部访问,除了NameNode只侦听传入连接的地址,而不是私有地址.所以我在datanode日志中得到ConnectionRefused异常,因为他们试图连接NameNode的私有IP地址.
我认为解决方案可能是将公共和私有IP地址都设置为NameNode,以便保留外部访问并允许我的从属节点也连接.
那么有一种方法可以将这两个地址绑定到NameNode,以便它可以同时监听吗?
编辑:Hadoop版本2.4.1.
java hadoop network-programming distributed-computing cluster-computing
如果有人想尝试:https: //github.com/codependent/cluster-performance
我正在使用一个简单的应用程序测试Node.js(v0.11.13 - Windows 7)每秒限制请求.我已经使用Express 4实现了一个服务,该服务模拟I/O操作,例如带有setTimeout回调的数据库查询.
首先,我只用一个节点进程测试它.对于第二次测试,我启动的工作人员数量与机器的CPU数量相同.
我使用loadtest来测试服务,使用以下参数:
loadtest -n 50000 -c 220 -k http://localhost:5000/operations/timeout/20
Run Code Online (Sandbox Code Playgroud)
也就是说,总共50万个请求,220个并发客户端.
我的服务根据最后的url参数(20 mseg)设置超时(处理时间的持续时间):
router.route('/timeout/:time')
.get(function(req, res) {
setTimeout(function(){
appLog.debug("Timeout completed %d", process.pid);
res.json(200,{result:process.pid});
},req.param('time'));
});
Run Code Online (Sandbox Code Playgroud)
这些是结果:
INFO Max requests: 50000
INFO Concurrency level: 200
INFO Agent: keepalive
INFO
INFO Completed requests: 50000
INFO Total errors: 0
INFO Total time: 19.326443741 s
INFO Requests per second: 2587
INFO Total time: 19.326443741 s
INFO
INFO Percentage of the requests served …Run Code Online (Sandbox Code Playgroud) 我有一个Wildfly 8.2.0.Final应用服务器使用full-ha配置文件在域模式下运行集群.该集群由两个wildfly,master和slave实例组成,每个实例都在自己的虚拟机上运行.
我的项目在应用程序服务器上部署为war-file.出于测试目的,我的负载均衡器使用循环法分配请求.
匿名用户可以使用按钮来使用此项目提供的服务,该按钮将首先调用两个步骤然后登录.登录将使用在注册阶段创建的会话,提供在注册调用期间创建的凭据.
登录端点是请求范围的CDI bean,其中包含保存用户信息的成员.用户信息是SessionScopped EJB Bean,它在会话实例化期间创建,并注入到登录端点CDI bean中.用户信息应该在集群成员之间分配.
现在有趣的部分:
java ×2
apache-camel ×1
apache-spark ×1
condor ×1
consistency ×1
hadoop ×1
javascript ×1
linux ×1
lucene ×1
multicore ×1
mysql ×1
node.js ×1
python ×1
qsub ×1
r ×1
rest ×1
scalability ×1
session ×1
shell ×1
snow ×1
solr ×1
transactions ×1
weld ×1
wildfly ×1