哪些底层机制支持零停机时间的数据库垂直扩展?

问题描述 投票:0回答:1

我的理解是,在某些情况下,需要在不停机的情况下向单个数据库实例添加更多 CPU/内存,即“垂直扩展”它以处理更多负载。

我知道有多种方法可以扩展数据库,例如水平扩展、分片等。但这不是我在这里要问的 - 我只关心垂直扩展。

在一次采访中有人问我如何在“幕后”实现这种零停机垂直扩展。这是我想到的:

  1. 如果数据库在 VM 内运行,则无需重新启动 VM 即可更改 CPU/内存 - 称为“CPU 热插拔”,例如https://docs.oracle.com/en/virtualization/virtualbox/6.0/admin/cpuhotplug.html#:~:text=Oracle%20VM%20VirtualBox%20支持%20adding、%2Dadd%20和%20hot%2Dremove

  2. 数据库似乎也可以在 Kubernetes/Docker 之类的东西中运行,它也可以允许动态调整大小而无需停止https://kubernetes.io/docs/tasks/configure-pod-container/resize-container-resources/ 。在这种情况下,更多的 CPU 不会添加到给定的 VM/物理机,但现有的 CPU 会被不同地划分,例如https://shekhargulati.com/2019/01/03/how-docker-uses-cgroups-to-set-resource-limits/.

我感觉我错过了一些东西,所以想在这里问这个问题 - 虚拟机/Docker 之外是否存在其他机制,或者我是否以某种方式误解了垂直扩展?

database docker virtual-machine autoscaling
1个回答
0
投票

最直接的解决方案将涉及一个智能负载均衡器和两个数据库实例,该机制可以非常快速地同步数据(或者根本不需要同步数据)。

扩展场景: 负载均衡器 LB 始终处于运行状态并代理流量。
实例 A 正在为流量提供服务并且有信号可以扩展。
系统使用所需资源快速启动实例 B 并获取数据。 LB 会将连接路由到实例 B。 当所有请求都路由到 B 时,缩小 A 的规模。

© www.soinside.com 2019 - 2024. All rights reserved.