Envisagez la situation suivante: Il existe une demande de mise à jour sur l'entité A pour créer la sous-entité A.B. il y a peut-être beaucoup de B sur A, chaque B a une adresse email unique. L'entité A est une entité partagée, et la même requête peut se produire sur plusieurs serveurs en parallèle (micro-service évolutif). Afin de créer A.B, nous devons vérifier que B n'existe pas déjà en tant que sous-entité sur A (en fonction de l'adresse e-mail de B)Verrouillage de ressources et logique métier
Le service qui gère cette demande de mise à jour doit verrouiller A (par son identifiant unique) afin de sécuriser la mise à jour.
Mes questions sont plus conceptuelles que techniques:
Est-ce que le verrouillage de la ressource A dans ce cas, fait partie de la logique métier de cette tâche de mise à jour? Envisageriez-vous de placer le verrou de ressource dans un intergiciel distinct de celui qui gère la procédure de vérification et de mise à jour? (l'autre option est de traiter la serrure dans le cadre de la logique métier et de le mettre directement dans le middleware responsable de la logique métier.)
merci pour le commentaire. Comme je suis conscient et sûr que c'est complexe, je n'ai certainement pas l'intention de le faire moi-même - mais utilisez redis. Ma question concerne la place dans le code où nous aimerions obtenir le verrou sur la ressource: pendant le flux de code principal - pointez la section dans le code qui a besoin d'un verrou et verrouillez et déverrouillez cette section, ou faites comme une action pré-handle, c'est-à-dire dans un middleware précédent spécifiquement pour le verrouillage. – user132440
BTW: il peut être le cas que la cohérence est impossible en redis –
Oh, et comme je l'ai dit, ce n'est pas la logique métier, donc il devrait faire partie de la logique de persistance. De préférence, vous ne devriez pas coder le code de verrouillage get et release - il devrait faire partie du framework que vous utilisez. –