【问题标题】:How to split Read traffic between multiple AWS RDS read replica and master?如何在多个 AWS RDS 只读副本和主副本之间拆分读取流量?
【发布时间】:2019-10-22 11:20:03
【问题描述】:
我有一个与 AWS RDS (MYSQL) 通信的 Web 应用程序。现在我们要扩展我们的数据库实例以减少主流量。因此 AWS RDS 提供了“Read Replica”功能,我们通过它分配流量以减少主服务器的负载。现在这里的问题是我的 Web 应用程序如何知道将读取流量重定向到只读副本实例。我们可以实现此功能的最佳方法是什么。
【问题讨论】:
标签:
amazon-web-services
amazon-rds
mysql-proxy
【解决方案1】:
没有灵丹妙药;您有一个用于主数据库的端点和一个用于每个只读副本的端点。您必须在应用程序代码中考虑到这一点,即有一个指向您的只读副本的读取数据库连接池和一个指向您的主数据库的写入数据库连接池。在您的应用程序代码中,当您进行读取时,您使用读取连接和写入,即主连接。您可以使用通用设计技术在一定程度上将其隐藏在应用程序的其余代码中(在持久层中),但其他层必须告知持久层他们想要什么类型的连接。
顺便说一句,为什么使用 RDS + MySQL 而不是使用 Aurora? Aurora 的一个优势是您可以为所有只读副本获得一个端点,并且 Aurora 将负责跨可用副本进行负载平衡。使用 RDS + MySQL,每个副本都有一个端点,并且必须自己进行负载平衡。