Note that there are some explanatory texts on larger screens.

plurals
  1. POArchitecture: Distributed Data Processing w/ Node Failure Tolerance
    primarykey
    data
    text
    <p>I have lots of pieces (tens of thousands) of data/jobs that need frequent recurring processing. The jobs to be processed are stored in a SQL Server 2012 (Web Ed) database that gets updated with new jobs frequently and/or may have jobs deleted from it.</p> <p>Sample:</p> <pre><code>Id | WorkItem 1 | Copy X to Y 2 | Ping stackoverflow.com 3 | Verify backupset 4 | Send an email </code></pre> <p>My goal is to distribute the job processing across multiple nodes, both for performance reasons and to ensure jobs get processed even if a node fails.</p> <p>Two considerations:</p> <ul> <li>I need to be sure that all jobs eventually get executed by <em>some</em> node, and that this continually happens as jobs are added to the database driven queue.</li> <li>I'd like all nodes to some work, and prevent a single node from fetching most of the work, hence implementing some kind of round-robin seems to make sense.</li> </ul> <p>Because the entire system needs to be resistant to node failure, I can't really "assign" the work to nodes as I don't know what's up and what isn't. My initial thoughts to work around this were to have each node "fetch" one or more jobs from the database, process them, and then return data to the SQL database. However, there are some issues then:</p> <ul> <li>Nodes need to be aware what other nodes are already processing, so jobs don't get incorrectly processed twice. This means jobs would need to be marked as being processed.</li> <li>Many of these jobs are incredibly small, but need to be executed very frequently (maybe every 10-30 seconds). Constantly updating who is processing jobs and then releasing the job, and then processing again seems like major database overhead.</li> <li>What happens if a node dies mid-processing? Is there a way to recover from this?</li> </ul> <p>What is the most efficient way to solve this problem? Thank you!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload