Attualmente sto lavorando a un progetto che è un sistema di valutazione online come codeforces . In questo sistema, l'utente può inviare il codice e il sistema compilerà, eseguirà e genererà l'output su un set di input specifico e abbinerà l'output con il risultato del sistema, quindi fornirà un verdetto.
C'è una parte in due di questo sistema. Il front-end è in PHP e il back-end è in Java. Sono responsabile per la parte Java. Il mio primo approccio è stato creare un'app web. PHP invia una richiesta http a Java che il file deve compilare ed eseguire. Ma dopo un po 'di tempo mi sono reso conto che se eseguo la compilazione e l'esecuzione ogni volta che arriva la richiesta, il sistema diventa troppo lento. Se arrivano 300 richieste alla volta, il sistema crollerà. Il mio pensiero era di 300 richieste gestite da 300 thread. Ma ogni thread fa un lavoro pesante come compilare, eseguire e controllare l'output.
Poi stavo scrivendo un programma java standalone che ha uno scheduler. Questo programma di pianificazione controlla il database, ottiene i nuovi dati e li compila, li esegue e quindi aggiorna e database. Questo rende il sistema asincrono.
Ma il problema è nel secondo approccio, PHP e Java hanno entrambi bisogno di mantenere la stessa classe di entità (sto usando Hibernate). Ciò rende il sistema altamente accoppiato. Ogni volta che PHP apporta un cambiamento, devo anche cambiare la mia lezione.
Quale sarebbe il design per questo tipo di applicazione.
Grazie. :)