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