Ce document a été traduit par IA. Pour des informations précises, veuillez consulter la version anglaise.
Le mode multi-application en mémoire partagée présente des avantages de déploiement et d'exploitation. Cependant, avec l'augmentation du nombre d'applications et de la complexité métier, une instance unique peut être confrontée à des problèmes de concurrence de ressources et de baisse de stabilité. Pour ces scénarios, les utilisateurs peuvent adopter une solution de déploiement hybride multi-environnement afin de répondre à des besoins métier plus complexes.
Le système déploie une application d'entrée comme centre de gestion/ordonnancement, et plusieurs instances NocoBase comme environnements d'exécution indépendants. Les environnements sont isolés les uns des autres tout en collaborant, ce qui permet de disperser efficacement la pression sur une instance unique et d'améliorer considérablement la stabilité, l'extensibilité et la capacité d'isolation des pannes du système.
Au niveau du déploiement, les différents environnements peuvent s'exécuter dans des processus indépendants, être déployés en tant que conteneurs Docker distincts ou sous forme de plusieurs Deployments Kubernetes, s'adaptant ainsi de manière flexible à des infrastructures de différentes tailles et architectures.
Dans ce mode :
La création d'environnements n'est pas encore fournie. chaque application Worker doit être déployée manuellement et configurée avec les informations d'environnement correspondantes avant de pouvoir être reconnue par l'application d'entrée.
Avant déploiement :
Redis
Base de données
Le Supervisor gère la création d'applications, démarrage/arrêt, planification des environnements et proxy d'accès.
Variables d'environnement Supervisor :
Le Worker héberge et exécute les instances NocoBase.
Variables d'environnement Worker :
L'exemple suivant présente une solution de déploiement hybride multi-environnement utilisant des conteneurs Docker comme unités d'exécution, déployant simultanément une application d'entrée et deux applications Worker via Docker Compose.
Les opérations de base sont identiques au mode mémoire partagée, voir mode mémoire partagée. Ici, focus sur la configuration multi-environnement.
Après déploiement, accédez à la page Gestionnaire d'applications (App Supervisor) de l'application d'entrée, vous pouvez consulter la liste des environnements de travail enregistrés dans l'onglet Environnements, vous voyez les environnements Worker enregistrés (identifiant, version, URL, statut). Les Workers envoient un heartbeat toutes les 2 minutes.

À la création, vous pouvez sélectionner un ou plusieurs environnements. Un seul suffit généralement. Choisissez plusieurs environnements uniquement si une division des services a été effectuée sur les applications Worker, nécessitant le déploiement de la même application sur plusieurs environnements d'exécution pour réaliser la répartition de charge ou l'isolation des capacités.

La liste affiche l'environnement d'exécution et l'état de chaque application. Si une application est déployée dans plusieurs environnements, plusieurs états d'exécution seront affichés. Dans des conditions normales, la même application dans plusieurs environnements maintiendra un état unifié et devra être démarrée ou arrêtée de manière centralisée.

Étant donné que le démarrage d'une application peut entraîner l'écriture de données d'initialisation dans la base de données, afin d'éviter les conditions de concurrence dans un contexte multi-environnement, le démarrage des applications déployées dans plusieurs environnements s'effectue en file d'attente. Pour éviter les conditions de course, les démarrages multi-environnements sont mis en file d'attente.

Les applications Worker peuvent être accédées via le sous-chemin /apps/:appName/admin de l'application d'entrée.

Si une application est déployée sur plusieurs environnements, il faut choisir l'environnement cible du proxy.

Par défaut, l'adresse d'accès du proxy utilise l'adresse d'accès de l'application Worker, correspondant à la variable d'environnement ENVIRONMENT_URL. Assurez-vous que cette adresse est accessible dans l'environnement réseau où se trouve l'application d'entrée. Si vous devez utiliser une adresse d'accès proxy différente, vous pouvez la surcharger via la variable d'environnement ENVIRONMENT_PROXY_URL.