#透明应用程序故障转移
TAF是一项客户端功能,能最大程度地减少数据库连接因实例或网络故障而失败时对最终用户应用程序的中断。
# 新增JDBC URL配置参数
YashanDB JDBC URL新增有如下参数:
参数名称 | 数据类型 | 参数说明 |
---|---|---|
failover | string | 是否开启TAF,参数值为ON或OFF,默认为OFF。 * ON:表示开启TAF,当故障发生时应用程序会自动切换到已配置的其他数据库节点。 * OFF:表示关闭TAF,且暂不支持在OFF状态下自动重连当前数据库节点。 |
failoverType | string | 故障转移的类型,支持NONE、SESSION和SELECT,默认为NONE。 * NONE:表示不使用故障转移。 * SESSION:表示发生故障后重连并重置Statement句柄。 * SELECT:表示在SESSION类型的基础上,切换连接后重新执行因故障而执行出错的SELECT语句(此时,SELECT语句不能为带LOB类型的绑定参数的查询语句),但不支持再对切换前已获取的对象进行二次操作。 |
failoverMethod | string | 故障转移的方式,该值将决定从主节点到备节点的故障转移速度。 * BASIC:表示在故障转移时再建立连接。 |
failoverRetries | int | 重试次数,默认值为5。 |
failoverDelay | int | 重试间隔时间(单位:秒),默认值为1。 |
单机:
jdbc:yasdb://192.168.1.2:1688/yashan?failover=on&failoverType=session&failoverMethod=basic&failoverRetries=5&failoverDelay=1
主备:
jdbc:yasdb:primary://192.168.1.2:1688,192.168.1.3:1688,192.168.1.4:1688/yashan?poolTimeout=180&failover=on&failoverType=session&failoverMethod=basic&failoverRetries=5&failoverDelay=1
负载均衡:
jdbc:yasdb:loadBalance://192.168.1.2:1688,192.168.1.3:1688,192.168.1.4:1688/yashan?failover=on&failoverType=session&failoverMethod=basic&failoverRetries=5&failoverDelay=1
# 新增接口
描述TAF功能的接口有如下接口:
类 | 返回类型 | 方法 | 参数 | 说明 |
---|---|---|---|---|
YasConnection | void | registerTAFCallback(YasFailover yasFailover, Object ctxt) | [1] yasFailover:用户注册实现callbackFn方法的实体类 [2] ctxt:用户想要保存的任何对象 | 注册TAF回调函数的实现类,如果注册了回调函数,failoverRetries和failoverDelay参数不生效,TAF链接失败时不会尝试进行重连。 |
YasFailover | void | callbackFn (Connection conn, Object ctxt, int type, int event) | [1] conn:当前的链接 [2] ctxt:用户想要保存的任何对象 [3] type:故障转移类型 [4] event:event | TAF的回调函数,该方法由应用程序继承实现。目前只支持FO_BEGIN、FO_ERROR、FO_RETRY、FO_END,在FO_ERROR事件中如果返回FO_RETRY则表示再尝试进行一次连接。 |