Notre produit est une API de repos que nous devons redimensionner et rendre redondante. Notre objectif est d'utiliser nginx comme un équilibreur de charge et un proxy qui transmettra les requêtes api à trois serveurs différents, qui seront tous connectés au même jeu de réplicas MongoDB.Mise à l'échelle API REST - Architecture
Notre api a une limitation de débit basée sur la clé API de l'utilisateur. L'utilisateur aura plusieurs clients et tous signeront leurs demandes avec la même clé API.
J'ai deux questions à ce sujet:
- emplois Cron multiples doivent être exécutée sur la base. Comment pouvons-nous nous nous assurons qu'un seul des serveurs exécute les crons, mais si ce serveur est en panne, un autre les exécute à la place?
- Comment pouvons-nous appliquer les limites de vitesse combinées sur tous les serveurs. Comment faire , nous permettons une clé API pour obtenir 1000 demandes par jour sur les trois serveurs combinés?
Question sur le point 2: Que se passe-t-il s'il y a plusieurs demandes par seconde? Vous ne pouvez pas aller à la base de données pour mettre à jour le compteur 10 fois dans une seconde. – giliev
Vrai, mais la mise à jour du compteur peut être asynchrone (n'attendez pas la fin de la mise à jour de la base de données, écrivez dans la file d'attente et traitez la file d'attente à l'aide d'un travail en arrière-plan). Nous pouvons également envisager une base de données en mémoire à condition que nous ayons d'autres fonctionnalités qui peuvent nécessiter une lecture-écriture plus rapide. – Sumanth