从AWS托管的只读副本中读取

时间:2019-08-26 19:09:02

标签: replication

我有在IKS中运行并使用Aurora RDS Postgres的spring boot java应用程序。我们已经为数据库设置了读写器副本。我们想使用只读副本进行只读查询。有没有人有任何经验?

我尝试在下面使用:

https://github.com/kwon37xi/replication-datasource/blob/master/README.md

堆栈跟踪: 设置bean属性'entityManager'时,无法创建类型为[org.springframework.orm.jpa.SharedEntityManagerCreator]的内部bean'(inner bean)#1fdff2f5';嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建名称为'((inner bean)#1fdff2f5')的bean时出错:设置构造函数参数时无法解析对bean'entityManagerFactory'的引用;嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建名称为“ org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration $ FlywayConfiguration”的bean时出错:通过构造函数实例化Bean失败;嵌套的异常是org.springframework.beans.BeanInstantiationException:无法实例化[org.springframework.boot.boot.autoconfigure.flyway.FlywayAutoConfiguration $ FlywayConfiguration $$ EnhancerBySpringCGLIB $$ 69437e9e]:构造方法引发了异常;嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建名称为'replicationDataSourceConfig'的bean时出错:调用init方法失败;嵌套的异常是org.springframework.beans.factory.BeanCurrentlyInCreationException:创建名称为'writeDataSource'的bean时出错:当前正在创建所请求的bean:是否存在不可解析的循环引用?

1 个答案:

答案 0 :(得分:0)

您的RDS群集具有两个终结点端点:常规终结点和读取终结点。

一般在这里处理写请求。 读取的内容在这里用于处理读取请求。

当群集中只有一个实例时,通用端点可用于读取和写入请求。

当一个Master和x Reader在群集中时,通用端点将重定向到Master实例,而Read一会重定向到其中一个Reader实例。

LoadBalancing由Reader实例之间的AWS RDS Service管理。

Multi-Master实例支持已在不久前发布,您应该看看此配置是否符合您的需求。

此外,请注意,主实例和读取者实例之间存在同步时间。有时,读取实例可能会有一些滞后。如果您的应用程序端点正在执行链接的写/读/写/读操作,请当心。

另一件事,强烈建议设置每个Reader实例至少与Master实例一样强大。否则,如果主服务器处理高吞吐量的请求,则读取器实例可能会有很多滞后或崩溃,因为它们无法处理工作量。

希望它将对您有帮助!