2016-07-23 34 views
0

Ich lerne, wie man eine Meteor App auf der Galaxie bereitstellen und ich bin wirklich verwirrt von all diesen Container Zeug.App Deployment Container Größe vs Menge

Ich versuche zu verstehen, wann es besser wäre, eine App zu skalieren, indem man die Containergröße erhöht und nicht mehr Container hinzufügt.

Wenn ich leichte Chatroom-Website zum Beispiel hatte. Warum sollte ich jemals die Containergröße aktualisieren müssen, wenn ich einfach weitere kleine Container hinzufügen kann? Am Ende ist nicht die Summe der Verarbeitungsleistung wichtig?

2 x 0.5 containers = 1 x 1 container

Die Kosten für die es so oder so tun, ist die gleiche.

Wenn ein Benutzer die Datenbank ändert, während er die App in einem Container verwendet, werden die anderen Instanzen der App, die auf anderen Containern ausgeführt werden, eine Weile dauern, um die Änderung zu bemerken? Wenn Benutzer auf verschiedenen Containern miteinander chatten würden, wäre das ein Problem, nicht wahr? Wie würdest du es vermeiden?

Die einzige Möglichkeit, die ich daraus verstehen kann, ist: Entweder fehlen CPU und RAM, oder die Fähigkeit, parallele Anforderungen zu behandeln, wird eine Notwendigkeit zu skalieren. Wenn die App zu viel Verkehr empfängt, erhalten Sie mehr Container. Wenn die App zu viel CPU und RAM verwendet, erhalten Sie einen größeren Container.

Aber wie kann App jemals zu groß werden, um in einen Behälter zu passen? Werden nicht die von der App verwendete CPU und der Arbeitsspeicher mit der Anzahl der Benutzer in Verbindung stehen, die diese Instanz der App verwenden? Könnten Sie nicht einfach das Problem lösen, indem Sie mehr Container hinzufügen und die Benutzer verteilen und die CPU- und RAM-Nutzung auf diese Weise verringern.

Und warum brauchen Sie mehr Container, um mehr Anfragen zu bearbeiten. Wird kein größerer Container auch mehr Anfragen bearbeiten?

Antwort

2

Die Frage, die Sie stellen möchten, ist zu weit gefasst. In Ihrem Fall funktionieren beide Strategien, wenn Sie die Containergröße (oder vertikale Skalierung) erhöhen und mehr Container hinzufügen (oder horizontale Skalierung), wenn sie effektiv implementiert werden.

Aber horizontale Skalierung ist die beste Option. Wenn Sie einen Cluster von Containern starten, werden sie hinter AWS Elastic Loadbalancer ausgeführt, und wenn Sie Sticky-Sitzungen aktivieren, treten in den Chat-Räumen keine Probleme auf.

diese

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-sticky-sessions.html

Lesen Sie auch dieses ruhige gut zu lesen ist.

http://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch_alarm_autoscaling.html

https://aws.amazon.com/blogs/compute/powering-your-amazon-ecs-clusters-with-spot-fleet/

Dann die Frage der Datenbank, gehe ich davon aus Sie eine übergeordneten Datenbank für Ihre Anwendung verwenden, so dass alle Behälter aus derselben DB lesen werden also nicht über die Veränderungen sorgen angewandt Von einem Container aus sehen Sie die Änderungen, die von anderen Containern übernommen wurden, wenn eine korrekte DB-Optimierung vorhanden ist. Es gibt kein Problem.

+0

Danke für Ihre Antwort. Warum würdest du sagen, dass horizontale Skalierung besser ist? – epiqueras

+0

Dies ist eine sehr gute Lektüre für Sie http://ht.ly/cAhPe – error2007s

+0

Großartig gelesen! Vielen Dank – epiqueras