J'utilise sso pour développer un site Web multi-sous-domaines avec des bases de données indépendantes, comme indiqué ci-dessous :
www.example.com (site Web de l'entreprise et magasin) - www_db
blog.example.com - blog_db
forum.example.com - forum_db
account.example.com - connexion, inscription, account_db (utilisateur)
J'ai un problème, sur un forum, les utilisateurs doivent pouvoir ajouter des posts, puis lors du rendu de la liste des posts, je dois récupérer les données utilisateur pour chaque post : nom d'utilisateur, avatar, etc., mais puisque les utilisateurs et les posts sont dans des bases de données différentes, que dois-je faire ?
Je ne comprends pas comment il est publié, je pense récupérer l'utilisateur par user_ids depuis la publication via API mais il y a trop de demandes
D'accord, faisons-le une par une :
Je suppose qu'il s'agit d'une question d'authentification, auquel cas vous pouvez optimiser en mettant en cache chaque utilisateur et ses autorisations dans MessageQueue
向 AccountService
发出请求以获取该特定用户的权限。如果您有大量流量,这可能会对网络造成沉重负担 - 但这可以通过在 ForumService
.
De plus, vous pouvez implémenter une API de passerelle qui effectue l'acquisition initiale de l'utilisateur à la première demande, puis propage ensuite les données utilisateur au service sous-jacent.
La même situation s'applique avec auth. Vous pouvez obtenir ces utilisateurs un par un et les mettre en cache aussi longtemps que vous le jugez nécessaire. Bien entendu, vous perdrez temporairement une certaine cohérence des données, mais vous gagnerez en disponibilité et réduisez le trafic réseau (Eventual Consistency). Vous pouvez également utiliser AuthService
发出 UserChangedNotification
et réduire les incohérences au minimum absolu.
https://obeycode.com/articles/7/Terminologie simple des microservices---Introduction
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!