2016-08-09 2 views
1

Je suis impliqué dans le développement d'un ensemble de microservices avec des capacités de traitement distribuées avec l'aide d'Akka.NET.Auto-échelle: courir partout ou sur demande?

Typiquement, ils se composent d'un répartiteur et de quelques travailleurs. Dispatcher affecte par défaut le travail à son agent local, mais lorsqu'il détermine [en quelque sorte] que l'hôte actuel est surchargé, il attribue le travail aux travailleurs distants.

Disons que nous avons 10 hôtes (VM) et 30 services de ce type (sémantiquement différents).

La question est: comment les mettre à l'échelle correctement? La première solution consiste à exécuter 3 services par hôte avec la possibilité d'adapter automatiquement chaque service à la demande sur les 9 autres machines. Et réduire l'échelle quand il n'est pas nécessaire après un certain temps. La deuxième solution consiste à toujours exécuter les 30 services sur les 10 hôtes.

Répondre

2

À un niveau élevé, vous devez considérer la tolérance aux pannes, la localisation, la récupération, les problèmes informatiques généraux distribués tels que la PAC etc ..

Sauf si vous avez des besoins de mise à l'échelle pour différents services, je serais probablement aller la deuxième approche de les exécuter sur tous les hôtes. Cela donne une plus grande tolérance aux fautes et semble conceptuellement plus simple que l'auto-mise à l'échelle. Cependant, cela suppose que vous ayez des besoins similaires pour chaque type de service et que tous les services soient affectés par une panne ou une défaillance d'un hôte. Si un service particulier a des besoins différents (par exemple, SLA différent, besoins non fonctionnels, machine plus puissante nécessaire, etc.), il y a plus d'arguments en faveur de déploiements plus spécialisés par service.