¿Cuál es la mejor manera de conectar Java a mi backend Node.js?

Comenzaría con la escala y la posición en la que se encuentra la quora. ¡Sabemos que es grande y probablemente no sea mantenido por una sola persona! Esto significa que necesitarás colaborar.

Además de la capa de servicio (aplicaciones + servidores web) es probable que haya un acumulador de estadísticas para aprender de los usuarios, etc. Probablemente no forme parte de la capa de servicio porque son 2 aplicaciones separadas con diferentes necesidades de recursos.

Por lo tanto, estamos tratando con un par de aplicaciones y bases de datos diferentes que conforman quora como plataforma para sus preguntas y respuestas.

Sabiendo esto, elegiría un lenguaje de back-end con el que estoy más familiarizado, pero también uno que no me obligue a ninguna estructura. Como soy un desarrollador web con un fuerte nivel de experiencia en desarrollo móvil, optaría por Nodejs.

Nodejs es Javascript en el servidor. Esto significa que no necesito saber múltiples lenguajes lógicos para crear una aplicación. ¡Javascript funciona en teléfonos móviles en forma híbrida! ¡Javascript funciona en el navegador! El rendimiento sabio nodejs es tan capaz como php, .net o cualquier otro lenguaje de back-end cuando se trata de servir a la web.

En los patrones arquitectónicos debemos considerar un par de cosas. Es necesario enviar notificaciones. Es necesario revertir los cambios en las respuestas. ¡Es necesario almacenar y mostrar el marcado! Iría por un almacenamiento de documentos que nos permita poner devoluciones de llamada cada vez que se realiza un evento de creación. Ideal para notificar cuando las personas responden preguntas.

Mis herramientas prevertidas en resumen:

  • Nodejs con express
  • Rethinkdb
  • Reaccionar en la interfaz (nativa y web)

La forma en que generalmente habla entre procesos / idiomas en estos días es mediante protocolos de red. TCP / HTTP, etc.

El servidor Java recibe una solicitud HTTP y luego envía una solicitud al servidor Node, o viceversa.

Hay 10 formas diferentes de hacer IPC (comunicación entre procesos), pero para los servidores donde se implementará en algún clúster de producción, los protocolos de red son la única buena manera de hacerlo, de lo contrario los procesos tendrían que estar en la misma máquina, y eso no es Una buena solución.

En última instancia, los contenedores (Docker) son el nombre del juego en este momento, y generalmente exponen un solo puerto al mundo.

Depende de cuán profundo necesite la integración.

Puede crear una integración muy estrecha ejecutando JVM dentro de su nodo y llamar a sus funciones.

Si su Java se está ejecutando en un servidor diferente, puede usar cualquier transporte: Rest, rpc, websockets, etc.

Supongo que la palabra de moda del día es: microservicios. Ve a google eso.

Exponga su código Java y Node al exterior a través de una API simple (solo arroje una interfaz RESTful en ambos extremos). Esto mantiene el acoplamiento suelto, le permite probar de forma independiente, etc.

¿Por qué tendrías un código de fondo en el nodo, si quieres que Java también esté allí?

Su código de front-end en Javascript o mecanografiado debe hacer llamadas http usando promesas u observables a sus servicios de back-end que puede escribir en Java.

API web bebé!

Puede leer más sobre esto aquí API web – Wikipedia

La lista es interminable: IPC, sockets, process.exec () del nodo o la buena y antigua API HTTP

ATB