我有一个为其生成日志文件的站点列表。这些日志必须通过运行各自的进程使用 ruby 代码进行机器复制、解压缩、解析和分析。
任何人都可以建议为所有站点的日志并行运行这些进程的最佳方法吗?
我有一个为其生成日志文件的站点列表。这些日志必须通过运行各自的进程使用 ruby 代码进行机器复制、解压缩、解析和分析。
任何人都可以建议为所有站点的日志并行运行这些进程的最佳方法吗?
考虑这样的数据模型:
class Website
{
public List<WebSiteLog> Logs;
}
使用 TPL(任务并行库)的可能并行解决方案是这样的:
// var sites = your sites list
var processTask = Task.Foreach(sites, site =>
{
Task.Factory.StartNew(theSite=>
{
theSite.UnzipLogs()
}.ContinueWith(unzipTask=>{
{
theSite.ParseLogs();
}.ContinueWith(parseTask=>{
{
theSite.AnalyzeLogs();
}
});
Task.WaitAll(processTask);
这是一个非常初始的解决方案。许多异常管理、分区甚至更多的并行化UnzipLogs
都是适用的。ParseLogs
AnalyzeLogs