2016-06-26 3 views
3

Ich habe den neuen Docker Swarm-Modus untersucht, der in Docker 1.12 verfügbar sein wird. In diesem Docker Swarm Mode Walkthrough Video erstellen sie einen einfachen Nginx-Dienst, der aus einem einzelnen Nginx-Container besteht. Im Video haben sie 4 Knoten im Swarm-Cluster. Während der Skalierungsdemonstration erhöhen sie den Replikationsfaktor auf 10 und erstellen so 10 Kopien des Nginx-Containers auf allen vier Computern im Cluster.Im Docker Swarm-Modus gibt es keinen Grund, einen Dienst mehr als die Anzahl der verfügbaren Hosts zu replizieren?

Ich bekomme, dass das Video nur eine Demonstration ist, aber in der realen Welt, was ist der Punkt der Schaffung von mehr Repliken eines Containers (oder Service) als es Knoten im Swarm-Cluster sind? Es erscheint unsinnig, da zwei Container auf derselben Maschine die endlichen Rechenressourcen dieser Maschine ohnehin teilen. Ich verstehe nicht, was der Vorteil ist.

Meine Frage ist also, gibt es irgendwelche realen Vorteile, einen Docker-Dienst oder einen Container über die Anzahl der Knoten im Swarm-Cluster hinaus zu replizieren?

Dank

Antwort

0

Sie haben ein RabbitMQ oder anderes Queue-System mit einer hohen Belastung auf Daten. Sie können mehr Container mit Arbeitern als Knoten starten, um die hohe Datenlast auf Ihrem RabbitMQ zu bewältigen.

+0

Können Sie erklären, warum RabbitMQ davon profitieren würde? Ist dies, weil RabbitMQ (und andere Warteschlangen-Systeme vielleicht) single threaded sind? –

0

Hardwareressourcenbeschränkung ist nicht die einzige Sache, die berücksichtigt werden muss, wenn Sie Ihre Services repliziert haben.

Ein einfaches Beispiel wäre, wenn Sie einen Dienst haben, um Sicherheitsdetails bereitzustellen. Der Ressourcenverbrauch dieses Dienstes ist gering (Lesen eines Datensatzes von Db/Cache und Senden). Wenn jedoch 20 oder 30 Anfragen von demselben Dienst bearbeitet werden, werden die Anfragen in die Warteschlange gestellt.

Ja, es gibt bessere Möglichkeiten, um mein Beispiel zu implementieren, aber ich glaube, es ist gut genug zu veranschaulichen, warum man einen Dienst auf dem gleichen Host/Knoten replizieren könnte.

2

Es hängt davon ab, wie die Anwendung Threading und mehrere Anforderungen behandelt. Eine Single-Thread-Anwendung oder ein Job, der jeweils nur eine Anfrage bearbeitet, kann einen Bruchteil der Betriebssystemressourcen verwenden und davon profitieren, dass mehrere Instanzen auf einem einzelnen Host ausgeführt werden. Eine Anwendung, die darauf abgestimmt ist, Anforderungen gleichzeitig zu verarbeiten und das Betriebssystem vollständig zu nutzen, wird keinen Vorteil sehen und wird in der Tat eine Strafe für die Beseitigung von Ressourcen zur Ausführung mehrerer Instanzen der Anwendung mit sich bringen.

Verwandte Themen