Heim > Betrieb und Instandhaltung > Docker > Gründe, warum die Datenbank nicht für Docker und Containerisierung geeignet ist

Gründe, warum die Datenbank nicht für Docker und Containerisierung geeignet ist

王林
Freigeben: 2020-04-15 10:01:07
Original
3097 Leute haben es durchsucht

Gründe, warum die Datenbank nicht für Docker und Containerisierung geeignet ist

Es gibt mehrere Gründe, warum Datenbanken nicht für Docker und Containerisierung geeignet sind:

1. Daten sind nicht sicher

Auch wenn Sie möchten Wenn Docker Daten auf dem Host speichert, kann dennoch nicht garantiert werden, dass Daten nicht verloren gehen. Docker-Volumes sind rund um die Union FS-Image-Schicht konzipiert, um dauerhaften Speicher bereitzustellen, es fehlen jedoch noch Garantien.

Mit aktuellen Speichertreibern besteht immer noch die Gefahr, dass Docker unzuverlässig wird. Wenn der Container abstürzt und die Datenbank nicht ordnungsgemäß heruntergefahren wird, sind möglicherweise Daten beschädigt.

2. Umgebungsanforderungen für die Ausführung der Datenbank

Es kommt häufig vor, dass DBMS-Container und andere Dienste auf demselben Host ausgeführt werden. Allerdings sind die Hardwareanforderungen für diese Dienste sehr unterschiedlich.

Datenbanken (insbesondere relationale Datenbanken) haben höhere IO-Anforderungen. Normalerweise verwenden Datenbank-Engines dedizierte Umgebungen, um Konflikte um gleichzeitige Ressourcen zu vermeiden. Wenn Sie Ihre Datenbank in einen Container legen, verschwenden Sie die Ressourcen Ihres Projekts. Weil Sie für diese Instanz viele zusätzliche Ressourcen konfigurieren müssen. Wenn Sie in der öffentlichen Cloud 34 GB Speicher benötigen, muss die von Ihnen gestartete Instanz über 64 GB Speicher verfügen. In der Praxis werden diese Ressourcen nicht vollständig genutzt.

Wie kann man es lösen? Sie können in Ebenen entwerfen und feste Ressourcen verwenden, um mehrere Instanzen auf verschiedenen Ebenen zu starten. Eine horizontale Skalierung ist immer besser als eine vertikale Skalierung.

3. Netzwerkprobleme

Um Docker-Netzwerke zu verstehen, müssen Sie über ein tiefgreifendes Verständnis der Netzwerkvirtualisierung verfügen. Sie müssen auch auf das Unerwartete vorbereitet sein. Möglicherweise müssen Sie Fehlerbehebungen ohne Support oder zusätzliche Tools durchführen.

4. Zustand

Es ist cool, zustandslose Dienste in Docker zu packen, die Container orchestrieren und einzelne Fehlerquellen beheben können. Aber was ist mit der Datenbank? Indem die Datenbank in derselben Umgebung platziert wird, ist sie zustandsbehaftet und erhöht das Risiko für Systemausfälle. Wenn Ihre Anwendungsinstanz oder Anwendung das nächste Mal abstürzt, kann dies Auswirkungen auf die Datenbank haben.

5. Zusätzliche Isolation ist schädlich für die Datenbank

Tatsächlich habe ich dies im zweiten und dritten Grund erwähnt. Ich führe dies aber als gesonderten Grund auf, weil ich diesen Umstand noch einmal betonen möchte. Je mehr Isolationsstufen wir haben, desto mehr Ressourcenaufwand entsteht. Durch die einfache horizontale Skalierung können wir mehr Vorteile erzielen als mit einer dedizierten Umgebung. Allerdings kann die horizontale Skalierung in Docker nur für zustandslose Computing-Dienste verwendet werden, nicht für Datenbanken.

Wir sehen keine Isolationsfunktion für die Datenbank. Warum sollten wir sie also in einen Container legen?

Empfohlenes Tutorial: Docker-Tutorial

Das obige ist der detaillierte Inhalt vonGründe, warum die Datenbank nicht für Docker und Containerisierung geeignet ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage