Nous avons la configuration suivante.
Par conséquent, je n'ai pas à me soucier de la session en ce qui concerne la mise à l'échelle horizontale/l'exécution de plusieurs instances de l'application. Le cluster STM/Weblogic s'assure que la demande suivante parvient au même serveur géré.
Ce que nous avons actuellement est une application monolithique et nous essayons de passer aux microservices. De plus, nous ne voulons pas sortir de l'infrastructure actuelle (c'est-à-dire STM/cluster Weblogic/outil Auth). Ce que nous avons prévu, c'est:
Donc ma question est
Veuillez également suggérer de meilleures alternatives et ressources/liens. Merci.
Permettez-moi de partager mon opinion.
Tout d'abord, si vous pouvez garder votre application sans état, faites-le par tous les moyens :) Ce sera la meilleure solution en termes de performances et d'évolutivité.
Maintenant, si c'est impossible, vous devez conserver une couche de gestion de session distribuée.
La passerelle responsable de l'authentification pourrait générer un identifiant de session unique qui pourrait ensuite être utilisé comme clé. Cette clé pourrait être propagée à tous les microservices et faire partie de l'API ou quelque chose.
Afin d'accéder à la session, le microservice pourrait "obtenir" de la valeur par clé et travailler avec.
En termes d'implémentation: je voudrais jeter un oeil sur les solutions NoSQL. Certains d'entre eux qui peuvent répondre à vos besoins sont:
Il y a aussi d'autres solutions, je crois.
Maintenant, les performances sont cruciales ici, sinon toute la solution sera tout simplement trop lente. Donc, à ma connaissance, l'utilisation d'un SGBDR ne serait pas bonne ici, en outre, il serait potentiellement plus difficile de le faire évoluer.
J'espère que cela t'aides
1) La passerelle API doit-elle être pleine d'état alors que les autres microservices sont sans état?
Oui, comme dans 12 lignes directrices de l'application Factor tous les services doivent être apatrides.
2) Dans l'affirmative, comment les données de session utilisateur devraient-elles être partagées entre API Gateway et les microservices?
Votre API doit être sans état, donc ne partagez pas l'état de la session avec les microservices. L'approche recommandée consiste à configurer un cache Redis pour stocker les données de session.