Comunicacion entre los procesos

Hola a todos.

Soy nuevo en el foro, pero ya tengo unos 7 años programando con Java, pero estoy teniendo un problema que me esta quitando el sueño, pero bueno el problema es el siguiente, en un equipo Unix (HP NonStop Tandem OSS) tengo varios procesos trabajando con hilos, pero estos se intercambian mensajes por medio del protocolo de TCP/IP (Cliente-Servidor) pero esto ya me esta empezando a afectar porque hasta el momento tengo casi 200 procesos corriendo al mismo tiempo, entonces lo que necesito es saber si los procesos de Java se pueden comunicar de alguna otra forma, tal vez por localidades de memoria o algún otro medio.

Espero me puedan ayudar y bueno si tienen alguna duda de algo en lo que los pueda ayudar estoy para apoyar a la comunidad.

Saludos y gracias de ante mano!

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Si corres todo dentro de una

Si corres todo dentro de una sola aplicacion se pueden comunicar por memoria directamente, pero no creo que sea la solución porque aun asi tendras 200 tareas interamente que aún necesitan hacer el trabajo.

Revisa si puedes escalar tu servidor ( 200 procesos deberían ser NADA para un servidor cualquiera ) o como puedes optimizar lo que esta haciendo tu aplicación.

Imagen de ezamudio

pero qué problemas?

Dices que "te está empezando a afectar" pero no dices cómo, ni qué problemas tienes o qué...

No entendí bien si tienes UN proceso con 200 hilos que se comunican entre ellos, o 200 procesos cada uno de un hilo y que se comunican entre ellos usando TCP, o 200 procesos de varios hilos cada uno y que se comunican entre ellos usando TCP...

No es buena idea que este

No es buena idea que este todo junto ya que en ciertos momentos el usuario necesita reiniciar algún proceso y estando juntos se perderian todas la funciones, entonces al estar separados puede reiniciar un solo proceso sin afectar el funcionamiento de los demas, ahora bien de la frase "200 procesos deberian ser nada" efectivamente son nada para el equipo, pero la administración y supervición se vuelve complicado y confuso.

ezamudio, tienes toda la

ezamudio, tienes toda la razón no he explicado de manera correcta mi problema, si tengo 200 procesos independientes cada proceso es servidor TCP y cliente de otro proceso TCP, cada proceso tiene alrededor de 5 a 10 hilos ya que es un sistema transaccional se debe de almacenar todo lo que esta haciendo el proceso, realmente mis aplicaciones son muy estables y no tienen falla, el problema es la administración que llevan los operadores y sus malas configuraciones, me reportan problemas de fallas y cuando reviso simplemente estaban apuntando a un puerto que no es, entonces el cliente me esta pidiendo que quite los puertos porque son demasiados, entonces investigando en equipos HP NonStop hay algo llamado comunicación interproceso que permite comunicar a las aplicaciones sin necesidad de hacer conexión Cliente - Servidor, pero si utilizo esas herramientas mis aplicaciones quedarían obsoletas para cualquier otro equipo y perdería la gran ventaja que tengo con java que es la portabilidad, por eso hago la pregunta, existe algo similar que sea funcioncional en todos los equipos que permitan cambiar mensajes sin necesidad de realizar una conexion TCP ya que se encuentran en el mismo equipo.

Saludos y gracias por sus comentarios.

Imagen de echan

Creo depende del modelo de

Creo depende del modelo de distribucion al que quieras migrar y cualquiera te pudiera servir: modelo de actores, colas de mensajes, etc. En java hay varias opciones ActiveMQ, Vertx, Akka, etc, etc.

Probablemente Vertx tiene el modelo de programación distribuida mas accesible:

https://github.com/vert-x/vertx-examples/tree/master/src/raw/java/eventb...

Imagen de ezamudio

ZooKeper

Entiendo entonces que tu problema no es de programación sino de administración. Tienes un sistema funcionando en esquema de microservicios, 200 procesos comunicándose entre ellos, y el problema es la configuración y monitoreo de los mismos.

Tal vez Apache Zookeper te sirva, seguramente le tienes que hacer a tus procesos para que sean administrables desde este software pero probablemente valga la pena, échale un ojo, espero solucione tu problema.