code cov   code cov   code cov   code cov

Parallec.io

Akka上的快速并行异步HTTP / SSH / TCP / UDP / Ping客户端Java库. 聚集100,000个API,并在20行代码中的任意位置发送结果. 查看生产用例 .
PingHTTP调用 8000台服务器,并在12秒内汇总响应. Parallec的意思是Paralle l C lient(读作" para-like"). 来自eBay Cloud的开源 .

可扩展 Web服务器管理 资产发现和远程任务执行 API汇总 编排 数据提取/ ETL 负载测试
在生产中部署 8,000服务器HTTP | 演示 啾啾由造物主阿卡 本周精选在#Scala | OSCHINA - 2015年百强

汇总的错误消息-调试友好且具有完全可见性. 在并发环境中调试有麻烦吗? 不再! 所有异常 ,超时, 堆栈跟踪 ,已发送请求和已接收响应时间都将自动捕获并汇总ParallelTask响应 中,可用于异步轮询.


Response Handler & Context

方便的响应上下文会传递处理响应时所需的任何对象. 无论如何处理数据,然后将其发送到任何地方.

Read More

Exceedingly User Friendly

直观的构建器模式API使并行请求极其容易. 从列表,字符串,文本,json路径,本地或URL的cms查询中输入目标主机 .

Read More

Auto Progress Polling

自动进度轮询可处理异步API(例如"下载程序包"或"创建计算"),从而启用任务级别的并发控制和业务流程.

Read More

Scalable & Fast

Infinite scalablility with flexible task level concurrency control without creating 1,000 threads thread pools. Ping / HTTP 8,000 servers with response aggregation in 12 seconds.

Read More

90%+ Code Coverage

高测试覆盖率可验证我们构建的每个功能. 自信地使用和贡献. 经过验证的可靠性,在生产中的单个任务中可以达到100,000台以上的服务器.

Check Coverage

Feature Packed

任务和主机级别的进度跟踪和取消, 能力任务调度灵活处理程序位置状态聚集 ,任务记录,以及更多 .

Read More

Try Parallec Now

监视,配置推送,命令执行,通过从大量HTTP / TCP代理或无代理并行SSH轮询进行发现. 完美嵌入到主服务器中,以20行代码管理100,000个端点.
了解更多信息 :为什么在当今的云软件中广泛使用这种轮询和聚合引擎.

Send Aggregated API Data Anywhere

特殊的超级便捷响应上下文使您可以在处理响应时传入/传出任何对象. 现在,您可以在20行代码中将聚合数据发送到任何地方,到Kafka,Elastic Search,Redis,MongoDb等. 更多功能...

6行示例入门.

import io.parallec.core.*;
import java.util.Map;

ParallelClient pc = new ParallelClient();
pc.prepareHttpGet("").setTargetHostsFromString("www.google.com www.ebay.com www.yahoo.com")
.execute(new ParallecResponseHandler() {
    public void onCompleted(ResponseOnSingleTask res,
        Map<String, Object> responseContext) {
        System.out.println( res.toString() );  }
});

对相同目标示例的不同请求. Read more..

pc.prepareHttpGet("/userdata/sample_weather_$ZIP.txt")
    .setReplaceVarMapToSingleTargetSingleVar("ZIP",
        Arrays.asList("95037","48824"), "www.parallec.io")
    .setConcurrency(10)
    .execute(new ParallecResponseHandler() {...}...

20行使用响应上下文的示例 :汇总100个网站状态以进行弹性搜索.

ParallelClient pc = new ParallelClient();
org.elasticsearch.node.Node node = nodeBuilder().node(); //elastic client initialize
HashMap<String, Object> responseContext = new HashMap<String, Object>();
responseContext.put("Client", node.client());
pc.prepareHttpGet("")
        .setConcurrency(1000).setResponseContext(responseContext)
        .setTargetHostsFromLineByLineText("http://www.parallec.io/userdata/sample_target_hosts_top100_old.txt", HostsSourceType.URL)
        .execute( new ParallecResponseHandler() {
            public void onCompleted(ResponseOnSingleTask res,
                    Map<String, Object> responseContext) {
                Map<String, Object> metricMap = new HashMap<String, Object>();
                metricMap.put("StatusCode", res.getStatusCode().replaceAll(" ", "_"));
                metricMap.put("LastUpdated",PcDateUtils.getNowDateTimeStrStandard());
                metricMap.put("NodeGroupType", "Web100");
                Client client = (Client) responseContext.get("Client");
                client.prepareIndex("local", "parallec", res.getHost()).setSource(metricMap).execute();
            }
        });
node.close(); pc.releaseExternalResources();

Maven Import

<dependency>
	<groupId>io.parallec</groupId>
	<artifactId>parallec-core</artifactId>
	<version>0.10.3</version>
</dependency>

Gradle Import

compile 'io.parallec:parallec-core:0.10.3'

有关发送到Kafka,异步运行,并行SSH和TCP的更多示例和完整代码 .

从列表,字符串,行文本,json路径,本地或远程URL 设置目标主机 .

Why Parallec ?

与基于Java线程池的解决方案相比,parallec可以对每个任务进行可调整的并发控制,而没有线程大小的限制(1,000个线程池看起来不太好). 与单线程Node.js解决方案相比,Parallec支持使用多核进行并行计算密集型响应处理. 阅读更多

Workflow

Flow Overview

我们的目标是执行一个任务,即向目标主机列表触发一个统一的或非统一的HTTP / SSH / TCP / UDP / PING请求列表,然后调用用户定义的处理程序来处理每个响应. 检查基于 Parallec的Actor的并发和限制模型 .

Read API Overview

Try with Sample Code

大多数文件都是独立的,具有主要功能,可以直接运行. 样本spark服务器是一个单文件可执行Web服务器,它演示了并行的SSH / HTTP / Ping功能.

by  ICOPY.SITE