sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongoose crea una conexión para soporte de múltiples inquilinos en node.js

No recomendaría crear y administrar manualmente esas conexiones separadas. No conozco los detalles de sus requisitos de inquilinos múltiples (número de inquilinos, tamaño de las bases de datos, número esperado de transacciones, etc.), pero creo que sería mejor ir con algo como Función useDb de Mongoose . Entonces Mongoose puede manejar todos los detalles del grupo de conexiones.

actualizar

La primera dirección que exploraría es configurar cada inquilino en un proceso de nodo separado. Hay algunos beneficios interesantes al ejecutar sus inquilinos en procesos de nodos separados. Tiene sentido desde el punto de vista de la seguridad (memoria aislada) y desde el punto de vista de la estabilidad (el bloqueo de un proceso de inquilino no afecta a otros).

Suponiendo que está basando el arrendamiento en la URL, configuraría un servidor proxy frente a los servidores arrendatarios reales. Su trabajo sería mirar la URL y enrutar al proceso correcto en función de esa información. Este es un proxy http de nodo muy sencillo. configuración. Cada instancia de inquilino podría tener exactamente la misma base de código, pero lanzada con una configuración diferente (que les dice qué cadena de conexión mongo usar).

Esto significa que puede diseñar su aplicación real como si no fuera multiusuario. Cada proceso solo conoce una base de datos mongo, y no es necesaria una lógica multiusuario. También le permite dividir fácilmente el tráfico más adelante en función de la carga. Si necesita dividir los inquilinos por motivos de rendimiento, puede hacerlo de forma transparente a nivel de proxy. El DNS puede permanecer igual, y puede simplemente mover el servidor en el que se encuentran las instancias detrás de escena. Incluso puede hacer que el proxy equilibre las solicitudes de un arrendatario entre varios servidores.