在多个主机上并行执行

时间:2013-12-05 05:40:08

标签: java mysql multithreading parallel-processing

我的数据库中有以下数据。

LOGANAME    DOWNLOADED

LOGNAME字段告诉我要下载和处理的日志,DOWNLOADED是我在成功下载日志后设置为true的标志。由于要下载大量日志,我希望运行下载和标记为多个主机下载的过程。所以基本上我做了一个数据库查询来获取DOWNLOADED ='false'的所有logname,然后下载它们并设置DOWNLOADED ='true'。现在,当我在多个主机上运行相同的进程时,所有这些进程都会下载所有日志。有没有办法对此进行编码以确保主机不下载相同的日志?

1 个答案:

答案 0 :(得分:1)

在从流程下载任何日志之前,通过触发DOWNLOADED SQL

true标记标记为Update
UPDATE TABLENAME SET DOWNLOADED = `true` where DOWNLOADED = `false` AND LOGNAME = LOG_NAME_TO_DOWNLOAD 

并检查UPDATE语句的输出是否已影响了多少行。如果受影响的行数大于0,则继续从该进程下载日志,否则跳过该日志文件并处理另一个日志文件。

我认为LOGNAME是唯一的,即此列为Primary Key或具有所有不同的值。