Ho un'applicazione, un servizio web P, che funge da proxy tra un servizio interno, IS e un servizio esterno, ES.
Al momento, quando IS invia una richiesta a ES attraverso P, e la risposta contiene dati binari, P memorizza i dati binari in una posizione temporanea. P invia quindi la posizione insieme al resto della risposta da ES a IS. IS ed ES sono comunicazioni attraverso un'API RESTful.
Per alcuni motivi storici, la posizione temporanea è al di fuori della rete in cui P e IS sono, quindi è costoso in termini di tempo. Sto cercando le possibilità di ottimizzare questo flusso, ed è lì che ho bisogno del tuo consiglio .:) Ho le seguenti opzioni:
- Codifica i dati binari da ES utilizzando Base64 e invialo come tale a IS.
- Pro: facile da codificare e non sono necessarie modifiche importanti.
- Con: la codifica richiede risorse CPU e aumenta la dimensione della risposta.
- Utilizza un formato dati che gestisca i dati binari più "naturalmente", come BSON o CBOR.
- Pro: importanti modifiche al codice necessarie.
- Con: la soluzione sembra più naturale. Tuttavia, non ho usato CBOR prima, e ho usato BSON solo un po '(principalmente nel codice client), quindi non so davvero se ci sono alcune trappole.
- Mantieni le cose come sono, ad esempio continua a utilizzare la posizione temporanea.
- Pro: Nessuna modifica .:) Nessun sovraccarico della CPU e nessuna modifica importante.
- Con: costoso in termini di tempo.
In qualche modo sono più incline al # 1, perché se # 3 richiede già molto tempo, allora # 1 non dovrebbe richiedere molto più tempo per ogni oggetto elaborato. Tuttavia, non ho avuto esperienza con la codifica Base64 massiccia e non so quali potrebbero essere le insidie. Il numero 2 è l'ultimo.
Inoltre, essendo un proxy, P non è realmente affamato di CPU, quindi potremmo avere qualche spazio CPU rimasto.
Quali sono i tuoi pensieri e consigli qui?