2016-11-23 2 views
0

ich meine Java-Web-Anwendung in Kubernetes eingesetzt DEPLOYMENTS mit und war in der Lage, es zu skalieren und es zu einer Datenbank POD zu verbinden, aber dann wollte ich die Datenbank skalieren, aber wie Sie wissen, ist nicht möglich in kubernetes und die MYSQL REPLICA nicht für die Produktion empfohlen. Also habe ich vitess ausprobiert und konnte meine Datenbank skalieren, weiß aber nicht wie oder wo ich meine Java-Webanwendung DEPLOYMENTS/REPLICAS erstellen und über vtgate mit der Datenbank verbinden soll. Und gibt es eine andere Möglichkeit, mysql-Datenbank durch kubernetes zu skalieren?Connect Java-Anwendung auf YouTube Vitess Datenbank

Antwort

1

Es ist wichtig zu beachten, dass Vitess kein transparenter Proxy ist, dass Sie zwischen der App und MySQL auf der Verbindungsebene nur einfügen können. Vitess verwandelt eine Reihe von MySQL-Servern in eine Cluster-Datenbank, und Sie müssen Ihre App gegen einen Vitess-Treiber anstelle des normalen MySQL-Treibers erstellen.

Wenn Sie bereits JDBC verwenden, sollten Sie außer der Verbindungsverwaltung nicht viele Codeänderungen benötigen, da es eine Vitess implementation of the JDBC interface gibt. Einige Abfragekonstrukte werden jedoch von Vitess möglicherweise noch nicht unterstützt. Daher müssen Sie sie möglicherweise in ein gleichwertiges Formular umschreiben, das unterstützt wird.

Sobald Ihre App mit Vitess kompatibel ist, ist die Bereitstellung in Kubernetes die gleiche wie zuvor, außer dass Sie die App-Pods auf connect to the VTGate service via DNS zeigen.

Für andere Möglichkeiten, MySQL in Kubernetes ohne Vitess zu skalieren, gibt es eine wichtige neue Funktion in Kubernetes 1.5 mit dem Namen StatefulSet, mit der Sie Datenbanken wie MySQL skalieren können, ähnlich wie ein Deployment zustandslose Pods skalieren kann. Vitess selbst wird durch die Nutzung von StatefulSet auch in Kubernetes besser skalierbar sein.

jedoch StatefulSet mit reinem MySQL wird meist nur helfen, durch eine Erhöhung der Anzahl der Slaves Nur-Lese-Verkehr skalieren. Wenn Sie den Schreibdatenverkehr skalieren müssen, müssen Sie wahrscheinlich anwendungsdefiniertes Sharding implementieren. An diesem Punkt werden die erforderlichen Änderungen an Ihrer App mit ziemlicher Sicherheit viel mehr sein, als wenn Sie sie ändern, um Vitess zu unterstützen.

+0

Vielen Dank – montatich

Verwandte Themen