Java 服务端架构
Spring、Netty、日志框架与工程化实战
🎨 视觉封面并行计算框架JPPF3.3.4试用
先说一个挺有意思的事情,就在OneCoder准备记录试用过程的时候,给大家截图下载页面的时候,发现最新版本变成3.3.4了。于是,我也只好重新下载了:)
关于JPPF的介绍,可访问其官网:http://www.jppf.org
下载页面:http://www.jppf.org/downloads.php
想要运行JPPF并行计算任务,需要至少一个Node节点(执行任务的节点),一个driver节点(调度任务的节点),和本地调用节点
依次分别运行driver包里的startDriver.bat和node包里的startNode.bat启动driver和node

然后,开发jppf应用,JPPF在application-template包中提供了任务模版,只需参照文档稍作修改即可:
public static void main(String args[]) {
TaskFlowOne taskOne = new TaskFlowOne();
try {
// create the JPPFClient. This constructor call causes JPPF to read
// the configuration file
// and connect with one or multiple JPPF drivers.
jppfClient = new JPPFClient();
// create a JPPF job
JPPFJob job = new JPPFJob();
// give this job a readable unique id that we can use to monitor and
// manage it.
job.setName( "Template Job Id");
// add a task to the job.
job.addTask(taskOne);
job.setBlocking( true);
// Submit the job and wait until the results are returned.
// The results are returned as a list of JPPFTask instances,
// in the same order as the one in which the tasks where initially
// added the job.
List<JPPFTask> results = jppfClient.submit(job);
JPPFTask jTask = results.get(0);
System. out.println(jTask.getResult());
// process the results
TaskFlowTwo taskTwo = new TaskFlowTwo();
job.addTask(taskTwo);
job.setBlocking( true);
List<JPPFTask> resultsTow = jppfClient.submit(job);
JPPFTask jTaskTow = resultsTow.get(1);
System. out.println(jTaskTow.getResult());
} catch (Exception e) {
e.printStackTrace();
} finally {
if ( jppfClient != null)
jppfClient.close();
}
}
一个并行计算的任务,就是一个JPPFJob,每个job含有多个task,task之间是并行执行的,如果有多个nod节点,会按照其负载均衡策略分配到多个node上执行。通过client提交(submit)job后,会返回执行结果,为一个JPPFTask列表,列表里包含你add到job中每个task及其运行结果,作为后续计算处理之用。任务调用支持阻塞和非阻塞。
admin-ui中还提供了对节点状态和资源占用,任务信息等监控,总体来说上手很快,很好用:

所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
猜你想读 · 相关文章推荐
JPPF并行计算框架类加载机制研究
<p 不算什么深入的研究,主要是了解下JPPF中类的加载和隔离机制。</p <p JPPF中类的加载采用的是分布式类加载技术。这样既可在Node节点运行在node上并不存在的类。也就是类可以仅在用户的Client端存在。</p <p style="text-align: center;" <img alt="" src...
JPPF-log4j远程日志管理
<p 利用JPPF进行并行计算,计算任务运行在远端节点上,那么如何收集运行在远端的任务日志,用于跟踪和分析呢?</p <p JPPF框架对此也有封装,主要的实现思路是,通过自定义实现一个log4j的appender,对外提供JMX服务。客户端(监控端)实现一个监听器,监听远端日志,这样即可把远端日志采集到本地进行统一的...
Java 利用ASM读取变量值(Field value)问题研究
最近在学习Spring源码的过程中,遇到了spring-asm工程的重新打包的问题,于是突然就想研究一下asm这个开源字节码操作工具。秉承我的一贯风格,想到啥就立马学啥。 对于开源产品,我的一贯风格就是通过其官方提供的源码版本管理地址(svn/git等),直接下载最新代码,构建Java工程,直接通过工程依赖的方式研究学...
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com