将Java应用程序连接到YouTube Vitess数据库

我使用DEPLOYMENTS将我的java web应用程序部署到了kubernetes中,并且能够将其扩展并连接到数据库POD,但是我也想扩展数据库,但是如您所知在kubernetes中不可行,并且MYSQL REPLICA不推荐用于生产。 所以我尝试了vitess,能够扩展我的数据库,但不知道如何或应该在哪里创build我的Java Web应用程序部署/ REPLICAS,并通过vtgate连接到数据库。 是否有另一种方式通过kubernetes扩展mysql数据库?

请注意,Vitess不是一个透明的代理,您可以在连接级别插入应用程序和MySQL之间。 Vitess把一组MySQL服务器变成了一个集群数据库,它需要你用Vitess驱动程序而不是普通的MySQL驱动程序来构build你的应用程序。

如果您已经在使用JDBC,那么除了连接pipe理之外,您不需要进行大量的代码更改,因为JDBC接口有Vitess实现 。 但是,Vitess可能还不支持某些查询结构,因此您可能需要将它们重写为支持的等效表单。

一旦您的应用程序与Vitess兼容,将其部署到Kubernetes中将与以前一样,除非您将应用程序窗格指向通过DNS连接到VTGate服务 。

至于在没有Vitess的情况下在Kubernetes中扩展MySQL的其他方法,还有一个重要的新function是在Kubernetes 1.5中inputBeta,名为StatefulSet,这将帮助您扩展像MySQL这样的数据库,类似于部署可以扩展无状态Pod的方式。 Vitess本身也将通过利用StatefulSet在Kubernetes中更加方便地扩展。

但是,使用纯MySQL的StatefulSet将主要通过增加从服务器数量来帮助您扩展只读stream量。 如果您需要扩展写入stream量,则可能需要实施应用程序定义的分片。 此时,对您的应用程序进行必要的更改几乎肯定会比修改它以支持Vitess更多。