使用JDBC进行openGauss的读写分离及负载均衡
读写分离
读写分离是什么
读写分离顾名思义,就是将读操作和写操作分离开来,形成一种主备的结构,主机负责写操作,从机负责读操作。openGauss数据库组装成集群并使用JDBC连接时,支持一主多备情况下的读写分离,当URL中配置服务器地址时,可以通过URL中的属性标示来区分JDBC返回的连接是否是区分主机和备机。
优越特性
- 自动寻主
读写分离一定程度上依赖主机的识别,这里会介绍openGauss数据库的自动寻主机制。openGauss数据库应用场景下,典型配置为一主两备。当主机宕机后,备机会升主,这时和旧主机相连的连接都会失效,所以为了能够让业务以最快的速度恢复使用,我们在驱动层设计一种“自动寻主”的机制,该机制可以找到主备切换后的主机,并且整个寻主过程对于上层应用来说是透明的,上层应用的开发人员不需要自动寻主的具体细节,只需做上一定适配即可实现业务的高可用。
- 性能提升
对比PostgreSQL 的读写分离,PostgreSQL 在数据库资源占用超过85%时,查询数据库情况语句会出现失效,针对这一问题我们做了优化。
查询语句修改为
select local_role, db_state from pg_stat_get_stream_replications();
有效的避免了PostgreSQL 在读写分离方面出现的问题。
相关参数
hostRecheckSeconds参数,I