我有与 AWS RDS (MYSQL) 通信的 Web 应用程序。现在我们想要扩展我们的数据库实例以减少主流量。因此 AWS RDS 提供了“Read Replica”功能,我们通过它分配流量以减少主服务器上的负载。现在这里的问题是我的 Web 应用程序如何知道将读取流量重定向到只读副本实例。我们可以实现此功能的最佳方法是什么。
问问题
1627 次
2 回答
1
没有灵丹妙药;您有一个用于主数据库的端点和一个用于每个只读副本的端点。您必须在应用程序代码中考虑到这一点,即有一个指向您的只读副本的读取数据库连接池和一个指向您的主数据库的写入数据库连接池。在您的应用程序代码中,当您进行读取时,您使用读取连接和写入,即主连接。您可以使用通用设计技术在一定程度上将其隐藏在应用程序代码的其余部分(在持久层中),但其他层必须告知持久层他们想要什么类型的连接。
顺便说一句,为什么使用 RDS + MySQL 而不是使用 Aurora?Aurora 的一个优势是您可以为所有只读副本获得一个端点,并且 Aurora 将负责跨可用副本进行负载平衡。使用 RDS + MySQL,每个副本都有一个端点,并且必须自己进行负载平衡。
于 2019-10-22T11:51:30.033 回答
0
Heimdall 代理可以以强一致性拆分读/写。它在 AWS、Azure 和 GCP Marketplace 上可用。代理通过 API 监控 RDS 状态,以确保正确的故障转移和查询路由。当倾向于在只读副本之间不均匀地分配负载时,它也不依赖于 DNS。Heimdall 代理可以更好地利用您的副本。
于 2021-03-12T21:20:01.347 回答