我将 Amazon RDS 用于我的数据库服务,并希望使用只读副本功能在我的只读副本卷之间分配流量。我目前将我的数据库的连接信息存储在一个配置文件中。所以我的想法是,只要我的应用程序执行读取,我就可以创建一个从配置文件中的只读副本端点/地址列表中随机选择的函数。
只要我不在写入时执行它,这个想法是否有问题?
我将 Amazon RDS 用于我的数据库服务,并希望使用只读副本功能在我的只读副本卷之间分配流量。我目前将我的数据库的连接信息存储在一个配置文件中。所以我的想法是,只要我的应用程序执行读取,我就可以创建一个从配置文件中的只读副本端点/地址列表中随机选择的函数。
只要我不在写入时执行它,这个想法是否有问题?
我的猜测是,如果您的服务有足够的流量到达您想要平衡负载的多个 rds 只读副本的位置,那么您前面还有多个应用程序服务器在负载平衡器后面运行。
因此,您最好让某些应用服务器实例集群,每个集群都指向一个特定的只读副本。也许您可以通过可用区来执行此操作。
这里的想法是,您的负载均衡器将用作正确分配最终导致数据库读取的传入请求的机制。如果您在不同的副本之间随机读取数据库,您可能会遇到意外的峰值,其中太多的流量恰好被定向到一个数据库副本,从而导致您的服务出现延迟峰值。
最大的挑战是无法保证只读副本与主副本或在进行更新时彼此保持最新。如果您每次执行读取时都选择不同的只读副本,如果其中一个只读副本落后,您可能会看到一些奇怪的情况:N 次读取中的一个将获得陈旧数据,从而提供不一致的系统视图。
从一致性的角度来看,为每个事务或会话选择一个随机只读副本可能更容易处理。