我正在使用greenplum集群,您只能在其中向主数据库提交查询。 我在application.conf中有主节点ip。 但是由于高可用性等原因,用于主节点的IP切换到了不同的机器。
application.conf条目:
database = {
connectionPool = "HikariCP"
dataSourceClass = "org.postgresql.ds.PGSimpleDataSource"
properties = {
serverName = "103.10.11.6"
portNumber = "5432"
databaseName = "test"
currentSchema = "public"
user = "user"
password = "user123"
}
numThreads = 10
}
现在使用以下命令加载
:val db = Database.forConfig("database")
我可以捕获ConnectionException或对计算机执行ping操作,并为当前主服务器标识IP。
但是,我该如何覆盖配置中的serverName
变量并在运行时重新加载。
这是一个好的设计吗?
答案 0 :(得分:1)
您应该将域名而不是IP地址设置为serverName
。该域记录必须指向主记录。
这种方法将大部分高可用性问题留在网络级别,并且不会将其泄漏给应用程序代码。