Antes que nada, tengo una pregunta conceptual: ¿la palabra "distribuida" solo significa que la aplicación se ejecuta en varias máquinas? o hay otras formas en que una aplicación se puede considerar distribuida (por ejemplo, si hay muchos módulos independientes interactuando juntos pero en la misma máquina, ¿está distribuido?).¿Cómo construir una aplicación java distribuida?
En segundo lugar, quiero construir un sistema que ejecute cuatro tipos de tareas, habrá múltiples clientes y cada uno tendrá muchas tareas de cada tipo que se ejecutarán periódicamente. Por ejemplo: customer1 tendrá task_type1 hoy, task_type2 después de dos días y así sucesivamente, puede haber customer2 que tenga task_type1 para ser ejecutado al mismo tiempo como customer1's task_type1. es decir, hay una necesidad de concurrencia. La configuración para ejecutar las tareas se almacenará en DB y los resultados de estas tareas también se almacenarán en DB. los clientes utilizarán el sistema desde un navegador web (páginas html) para interactuar con el sistema (básicamente, configurar tareas y ver los resultados). Pensé en usar un servicio web de descanso (usando JAX-RS) donde las páginas html se comunicarían con y en el back-end usar hilos para ejecución concurrente. Preguntas:
- Esto suena simple, pero yo que va en la dirección correcta? o debería usar otras tecnologías o conceptos como Java Beans, por ejemplo?
2. Si mi enfoque es correcto, ¿necesito usar un lenguaje de script como JSP o puedo enviar formularios html directamente a las URL restantes y obtener el resultado (usando JSON, por ejemplo)?
- Si quiero distribuir la aplicación, ¿es posible con mi idea? Si no, ¿qué necesitaría usar?
Lo siento por tener muchas preguntas, pero estoy realmente confundido acerca de esto.
¿realmente espera que 'task_type1',' task_type2', etc. va a requerir mucha CPU? ¿Has * probado * para confirmar eso? ¿Realmente van a haber muchos usuarios que utilicen la aplicación al mismo tiempo? Puede ser que un solo servidor pueda manejar la carga correctamente y que la distribución de la aplicación complicaría las cosas sin ningún beneficio adicional. Segundo, no asuma que necesita hilos porque "las tareas deben ser ejecutadas al mismo tiempo". A menos que necesite aprovechar múltiples CPU, un solo hilo que retire tareas de una cola de trabajo probablemente funcionará bien. –
@AlexD las tareas en sí no son intensivas en la CPU, pero si recibo muchos clientes con muchas tareas, esto podría ser un problema en el futuro, estoy considerando la escalabilidad para el futuro. Supongo que un servidor manejaría por ahora. Pero quería saber cómo distribuirlo en caso de que lo necesite. es decirQuería entender los conceptos de distribución. – Sami
@AlexD En cuanto a los hilos, necesito que las tareas se ejecuten en momentos específicos; por ejemplo, puede haber task_type1 para ser ejecutado a las 10:00 a.m. para customer1 y otro task_type1 para customer2 también a las 10:00 a.m. Necesito algún tipo de concurrencia en la ejecución. es decir: procesar las dos tareas en paralelo. – Sami