Múltiples Aplicaciones, Una Base de Datos

Es probable que deba implementar múltiples IPF applications que todos utilizan el mismo MongoDB base de datos. Esto significa que todas las aplicaciones tendrán el mismo serviceName a pesar de que no se supone que deban estar en un agrúpese. Esto resultará en la formación de un mega-clúster, lo cual probablemente no sea lo que usted desea.

Para distinguir entre tipos de IPF applications que debe unir un clúster, utilice el service-name propiedad de configuración.

El problema

IPF utiliza la misma plataforma base para todas las aplicaciones en tiempo de ejecución, las cuales se inicializan de la misma manera:

  • Mismo ActorSystem nombrado ipf-flow

  • Misma Primavera ApplicationContext

  • La misma jerarquía de anulación de configuración

Cuando se ejecutan múltiples aplicaciones en el mismo entorno, todas utilizando Akka Cluster Bootstrap con MongoDB como el servicio mecanismo de descubrimiento, todos terminarán formando un mega-clúster porque no tienen service name, y por lo tanto utilizará el nombre de servicio predeterminado, que es el ActorSystem’s name, which in this case will be `ipf-flow universalmente:

1
Figura 1. El mega-clúster no deseado

En la imagen anterior, todos los nodos de todas las aplicaciones se han unido al mismo mega-clúster, lo cual no es el comportamiento deseado. Lo que debemos quiere que cada aplicación cree su propio clúster sin esta interferencia.

Un nombre de servicio es Akka Cluster La forma en que Bootstrap resuelve este problema, donde hay múltiples nodos que pertenecen a diferentes clústeres y, sin embargo, compartiendo el mismo backend de descubrimiento.

Para especificar un nombre de servicio, establezca esta configuración con el mismo valor en todos los nodos de un tipo específico. La configuración clave es akka.management.cluster.bootstrap.contact-point-discovery.service-name.

Así que en todos los nodos de la Aplicación 1 podríamos especificar:

akka.management.cluster.bootstrap.contact-point-discovery.service-name = app-1

Y en la Aplicación 2 especificamos:

akka.management.cluster.bootstrap.contact-point-discovery.service-name = app-2

Lo que resultará en esta topología:

2
Figura 2. Un clúster por aplicación

Verifique esto accediendo a la Akka Cluster de Gestión HTTP Gestión de /cluster/members URL para observar el correcto configuración de los clústeres.