OneCoder Avatar
OneCodercoderli.com · 937 篇博文
{ } Java

Java 服务端架构

Spring、Netty、日志框架与工程化实战

🎨 视觉封面

并行计算框架JPPF3.3.4试用

📅 2013-07-10·✍️ onecoder·计算中...·⏱️ 7 分钟
#JPPF

先说一个挺有意思的事情,就在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包中提供了任务模版,只需参照文档稍作修改即可:

JAVA
 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中还提供了对节点状态和资源占用,任务信息等监控,总体来说上手很快,很好用:


 

💡 OneCoder 资源指引

所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI

🤝 技术交流与答疑

欢迎加入:C++ GESP/CSP 考级答疑群(688906745)Java/Python交流群(982860385),点击可直接加群。

📚

猜你想读 · 相关文章推荐

Java 架构演进与实战 · JPPF⏱️ 10 分钟

JPPF并行计算框架类加载机制研究

<p 不算什么深入的研究,主要是了解下JPPF中类的加载和隔离机制。</p <p JPPF中类的加载采用的是分布式类加载技术。这样既可在Node节点运行在node上并不存在的类。也就是类可以仅在用户的Client端存在。</p <p style="text-align: center;" <img alt="" src...

阅读全文 →
Java 架构演进与实战 · JPPF⏱️ 6 分钟

JPPF-log4j远程日志管理

<p 利用JPPF进行并行计算,计算任务运行在远端节点上,那么如何收集运行在远端的任务日志,用于跟踪和分析呢?</p <p JPPF框架对此也有封装,主要的实现思路是,通过自定义实现一个log4j的appender,对外提供JMX服务。客户端(监控端)实现一个监听器,监听远端日志,这样即可把远端日志采集到本地进行统一的...

阅读全文 →
Java 架构演进与实战 · Spring⏱️ 10 分钟

Java 利用ASM读取变量值(Field value)问题研究

最近在学习Spring源码的过程中,遇到了spring-asm工程的重新打包的问题,于是突然就想研究一下asm这个开源字节码操作工具。秉承我的一贯风格,想到啥就立马学啥。 对于开源产品,我的一贯风格就是通过其官方提供的源码版本管理地址(svn/git等),直接下载最新代码,构建Java工程,直接通过工程依赖的方式研究学...

阅读全文 →
OneCoder

OneCoder (lihongzheshuai)

一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com

💬 读者留言与交流

0 条讨论
✨ 支持 Markdown 语法格式
还没有留言,快来成为第一个讨论者吧!