Batch chiamate procedura remota

Il batch consente a un cliente di inviare una sequenza arbitrariamente ampia di messaggi di chiamata a un server. Il batch generalmente utilizza protocolli di flusso di byte affidabili, come TCP/IP, per il trasporto. Quando si esegue il batch, il client non attende mai una risposta dal server e il server non invia risposte alle richieste in batch. Di solito, una sequenza di chiamate batch deve essere terminata da un RPC legittimo e non batch per svuotare la pipeline.

L'architettura RPC è progettata in modo che i client inviino un messaggio di chiamata e quindi attendano che i server rispondano che la chiamata ha avuto esito positivo. Ciò implica che i client non calcolano mentre i server elaborano una chiamata. Tuttavia, il client potrebbe non volere o non aver bisogno di un riconoscimento per ogni messaggio inviato. Pertanto, i client possono utilizzare le funzioni batch RPC per continuare l'elaborazione durante l'attesa di una risposta.

Il batch può essere considerato come il posizionamento di messaggi RPC in una pipeline di chiamate a un server desiderato. Il batch presuppone quanto segue:

  • Ogni chiamata di procedura remota nella pipeline non richiede alcuna risposta dal server e il server non invia un messaggio di risposta.
  • La pipeline di chiamate viene trasportata su un trasporto di flusso di byte affidabile come TCP/IP.

Per un client che utilizza il batch, il client deve eseguire chiamate di procedura remota su un trasporto basato su TCP/IP. Le chiamate in batch devono avere i seguenti attributi:

  • La routine XDR risultante deve essere 0 (null).
  • Il timeout della chiamata della procedura remota deve essere 0.

Poiché il server non invia alcun messaggio, i client non vengono avvisati di eventuali errori che si verificano. Pertanto, i client devono gestire i propri errori.

Poiché il server non risponde a tutte le chiamate, il client può generare nuove chiamate che vengono eseguite parallelamente all'esecuzione delle chiamate precedenti da parte del server. Inoltre, l'implementazione TCP/IP può memorizzare nel buffer molti messaggi di chiamata e inviarli al server con una sottoroutine write . Questa esecuzione sovrapposizione riduce il sovraccarico di comunicazione tra processi dei processi client e server e il tempo totale trascorso di una serie di chiamate. Le chiamate in batch vengono memorizzate nel buffer, quindi il client deve eventualmente eseguire una chiamata di procedura remota non in batch per svuotare la pipeline con un riconoscimento positivo.