当前位置:网站首页>金仓数据库KingbaseES客户端编程接口指南-JDBC(10. JDBC 读写分离最佳实践)
金仓数据库KingbaseES客户端编程接口指南-JDBC(10. JDBC 读写分离最佳实践)
2022-08-04 07:22:00 【沉舟侧畔千帆过_】
10. JDBC 读写分离最佳实践
对于不同场景,可根据实际需要选择不同的读写分离配置,以达到不同的预期效果。
10.1. 读写分离最大性能
概念
不考虑备机数据延迟造成的主备不一致问题,所有节点均可承担读负载。
适用场景
应用对强一致性不要求,比如历史报表业务;或者应用有自己的处理规避方式,比如影响业务逻辑的关键查询都放在一个事务内的DML语句后面。
配置
前端 KES 的读写分离
URL:
jdbc:kingbase8://192.168.0.100:54321/test?ConfigurePath=jdbc.conf
配置文件 jdbc.conf:
USEDISPATCH=true SLAVE_ADD=192.168.0.101,192.168.0.102 SLAVE_PORT=54321,54321 nodeList=node1,node2,node3 HOSTLOADRATE=33
后端 KES 的读写分离集群
后端采用全异步备机,主库配置为:
synchronous_standby_names='' synchronous_commit=off
NOTE
前端配置解释
表 10.1.1 JDBC的配置项: JDBC配置集群节点信息
节点地址
一般建议连接串上写主节点的地址,其它备机地址配置SLAVE_ADD和SLAVE_PORT
节点名字
nodeList指定各节点的名称,各节点的名称为./repmgr cluster show命令查询出的Name字段。要求开启读写分离时必须配置此项,不允许为空并要与节点的地址配置顺序完全一致。各个节点名称之间用逗号分隔,如:nodeList=node1,node2,node3。
读写分离开启和主机负载
打开读写分离功能:
USEDISPATCH=true主机负载率,备机之间轮询平分:
HOSTLOADRATE=33
表 10.1.2 JDBC的配置方式: 连接串配置
只用连接串开启JDBC读写分离一主两备
jdbc:kingbase8://192.168.0.100:54321/test?USEDISPATCH=true&SLAVE_ADD=192.168.0.101,192.168.0.102&SLAVE_PORT=54321,54321&nodeList=node1,node2,node3
连接串+配置文件
连接串+配置文件开启JDBC读写分离一主两备
jdbc:kingbase8://192.168.0.100:54321/test?ConfigurePath=jdbc.conf
jdbc.conf配置文件:
USEDISPATCH=true
SLAVE_ADD=192.168.0.101,192.168.0.102
SLAVE_PORT=54321,54321
nodeList=node1,node2,node3
后端配置解释
如果'synchronous_standby_names'为空,'synchronous_commit'设置'on'、'remote_apply'、'remote_write'和'local'都提供了同样的同步级别:事务提交只等待本地刷写磁盘。
下表以一主两备的三个节点集群为例:
sync_state
synchronous(repmgr.conf配置)
synchronous_standby_names(数据库配置-old)
synchronous_standby_names(数据库配置-new)
全备节点为sync
all
ALL (*)
ALL (node_name2,node_name3)
全备节点为quorum
quorum
ANY 1(*)
ANY 1(node_name2,node_name3)
同步节点为sync,其余为potential
sync
1 (*)
1 (node_name2,node_name3)
全备节点为async
async
空
空
10.2. 读写分离(读已提交)最大一致性
概念
需要考虑备机数据延迟造成的主备不一致问题,只有强同步或主节点可承担读负载。
适用场景
应用需要强一致性,比如严格依赖查询数据做后面的逻辑分支处理,一个事务插入,后一个事务马上查询这条数据,此时就会需要严格一致性。
强同步节点的定义
首先是主备之间是同步模式,其次备库的同步级别必须是remote_apply。
JDBC对强同步节点的验证方式
select application_name, sync_state from pg_stat_replication返回的'sync_state'必须是'sync'。
配置
前端 KES的JDBC读写分离
在 读写分离最大性能 的基础上,增加一个控制参数“可分发节点选择列表策略”:
指定可分发节点选择列表策略,1表示所有在线节点均可分发,2表示只分发主节点和同步备机节点,默认取值为:'1'。
readListStrategy=2后端KES的读写分离集群
主库配置:
# 1(*) 或者 ALL (*)
synchronous_standby_names='1(*)' synchronous_commit=remote_apply
10.3. 读写分离(可重复读)最大一致性
概念
一个事务内的两次相同查询需要获得的数据是完全一致的,此时不能分发,只能全部走主机,备机节点此时无法承担读负载,只用作数据备份,不对外提供服务。
适用场景
应用原来就依赖于严格的RP做业务处理。
配置
前端 KES 的JDBC读写分离
在 读写分离最大性能 的基础上,增加一个控制参数“可分发节点选择列表策略”:
指定可分发节点选择列表策略,1表示事务都不分发,2表示事务中的写语句之前的读语句可以分发,默认取值为:'2'。
TransactionDispatchStrategy=1后端KES的读写分离集群
主库配置参见 读写分离(读已提交)最大一致性 。
边栏推荐
- 解决循环依赖import cycle not allowed的最佳解决办法
- 使用GBase 8c数据库的时候,遇到这种报错
- 2022年7月总结
- likeshop外卖点餐系统【100%开源无加密】
- 反序列化字符逃逸漏洞之
- 使用requests post请求爬取申万一级行业指数行情
- 两日总结四
- The national vocational skills contest competition of network security emergency response
- 有人试过用NPGsql驱动连接openGauss开发应用的吗?
- GBase 8c中怎么查询数据库配置参数,例如datestyle。使用什么函数或者语法呢?
猜你喜欢
随机推荐
babylon 里面加gltf 模型
dalle:zero-shot text-to-image generation
详解CAN总线:常用CAN连接器的使用方法
IntelliJ新建一个类或者包的快捷键是什么?
「PHP基础知识」转换数据类型
无人驾驶运用了什么技术,无人驾驶技术是
24.循环神经网络RNN
Distributed Computing Experiment 2 Thread Pool
在安装GBase 8c数据库的时候,报错显示“Host ips belong to different cluster”。这是为什么呢?有什么解决办法?
powershell和cmd对比
MySQL BIGINT 数据类型
LeetCode每日五题01:两数之和 (均1200题)
a标签下载图片,不要预览
第一次用postgreSQL,想装主从,用的12.7 tar.gz版本。安装好后没在 share目录下找到样例配置recovery.conf.sample,是安装方式不对,还是路径不对?
卷积神经网络CNN
entity、domain、vo、pojo的区别与联系
MotionLayout的使用
【愚公系列】2022年07月 Go教学课程 027-深拷贝和浅拷贝
CSDN21天学习挑战赛——day1 正则表达式大总结
data:image/jpg;base64格式数据转化为图片



![(19)[系统调用]SSTD hook 阻止关闭](/img/73/e9d591af366db17965d0bf1cf192b7.png)
![[想要访问若依后台]若依框架报错401请求访问:error认证失败,无法访问系统资源](/img/aa/701fef9d8d7eaf25082e1289799b77.png)




