Please, 

We have the following situation:

Component X that divides a **request file** into parts, sending each part to an independent processing component Y -through a network- that will reply with a result to component Z , component Z collects all the results of the file parts into a batch **result file**.

Note:- **Request file**: file contains N number of data records that need to be processed.

What is the best practice for this situation? Is there any protocol for that?, Is there any library that can help? design patterns ??

thanx in advance.