我们有一个应用程序,它由所有连接到同一个 Percona 数据库实例的微服务组成。目前它只是一个没有复制的 16 核/32 GB 内存的实例。我们的问题之一是,有时我们的一个微服务会导致数据库负载如此之高(甚至只是读取),这使得所有微服务都无法使用。
我们正在考虑创建一个由三个节点组成的 Percona 集群,并为每个微服务选择节点。大多数“写入”的服务将连接到一个实例,其余的将连接到其他两个实例。这样,如果某些微服务导致读取负载很高,它不应该完全压倒我们的基础设施。
我的问题:
- 这甚至是个好主意吗?我们不应该让 ProxySQL 处理流量拆分吗?ProxySQL 可能意味着没有隔离。
- 我们应该有更多的 CPU 更少的实例,还是更少的 CPU 更多的实例?拥有更多实例意味着在高负载情况下运行微服务的隔离度更高。
- 拥有不同 CPU 的节点是个好主意吗?例如,让“写入实例”与“读取实例”相比具有更多 CPU。
- 如果我们将微服务定向到“他们的 Percona 实例”,当他们的实例完全死亡时,我们还能拥有某种 HA 吗?
注意:我们可能会在 GCE 中使用 Percona XtraDB click-to-deploy:https ://console.cloud.google.com/marketplace/details/click-to-deploy-images/percona?project=goout-cloud&folder&organizationId=74390800864