2017-09-11 2 views
0

J'espère que ce n'est pas trop vague question ...à travers des applications de synchronisation python réseau

Je suis en train d'écrire une application python qui aura plusieurs instances de lui-même pour permettre l'équilibrage de charge et de redondance avoir lieu.

Chaque instance devra être capable de lire et d'écrire dans la base de données principale, ce qui soulève le problème de deux «passerelles» essayant de mettre à jour le même élément.

Quelqu'un peut-il recommander une approche (pas principalement à la recherche de solution de code) à cela?

Merci d'avance;)

Répondre

0

Vous avez principalement deux façons d'éviter de perdre la cohérence de votre ensemble de données:

  • soit utiliser des mécanismes de verrouillage entre les processus de python,
  • ou transactions d'utilisation lors de l'accès à la base de données.

Les mécanismes de verrouillage doivent être basés sur des communications inter-processus. En fonction de votre système d'exploitation sous-jacent, vous pouvez avoir accès à de la mémoire partagée (pensez à la primitive test-and-set, pour utiliser la mémoire partagée pour un tel objectif), des sémaphores et d'autres outils. Voir IPC Python, par exemple: https://docs.python.org/2/library/ipc.html

Les transactions dépendent de votre base de données. Par exemple, avec une base de données SQL traditionnelle, vous pouvez souvent configurer les comportements en fonction de vos besoins: auto-validation, concurrence optimiste, etc ...