jdbc oracle 负载均衡,JDBC/RAC 负载均衡小结
JDBC/RAC 负载均衡小结中文社区 (MOSC)中间件 (MOSC)0 RepliesLast updated on February 16, 2015This question is Not Answered.下面是这几天大概看了一下相关的jdbc driver的代码做的一个简单的总结。[Environment]RAC URL:jdbc:oracle:thin...

JDBC/RAC 负载均衡小结
中文社区 (MOSC)
中间件 (MOSC)
0 Replies
Last updated on February 16, 2015
This question is Not Answered.
下面是这几天大概看了一下相关的jdbc driver的代码做的一个简单的总结。
[Environment]
RAC URL:
jdbc:oracle:thin:@(DESCRIPTION=(ENABLE=BROKEN)(ADDRESS_LIST=(ADDRESS=(HOST=*.*.*.*)(PROTOCOL=TCP)(PORT=*****))(ADDRESS=(HOST=*.*.*.*)(PROTOCOL=TCP)(PORT=****))(LOAD_BALANCE=NO)(FAILOVER=YES))(CONNECT_DATA=(SERVICE_NAME=KHQNWpd0)(SERVER=DEDICATED)))
[JDBC Driver Process Logic]
每次创建新的JDBC Connection时,
STEP 1: Driver根据rac串里的 ADDRESS_LIST配置解析出可连的instance列表,同时根据 LOAD_BALANCE=YES|NO)(FAILOVER=YES|NO)
生成连接尝试以及重试策略 ConnStrategy,具体逻辑在 oracle.net.resolver.NavDescriptionList.setActiveChildren()
里。
为了方便理解,这里假设 ADDRESS_LIST 配了3个节点,N1,N2,N3
下面是一个简单总结,每次连接时,生成ConnStrategy,里面包含连接列表:
FAILOVER=YES LOAD_BALANCE=YES
-------------------------------------------
random select one node from (N1,N2,N3), 假设出来的是N2
然后再 random select one node from (N1,N3),假设出来的是N3
则:
ConnStrategy(列表: N2, N3, N1)
FAILOVER=YES LOAD_BALANCE=NO
-------------------------------------------
直接按照rac url配置的列表:
ConnStrategy(列表: N1, N2, N3)
FAILOVER=NO LOAD_BALANCE=YES
-------------------------------------------
random select one node from (N1,N2,N3)
FAILOVER=NO LOAD_BALANCE=NO
-------------------------------------------
总选列表的第一个 N1
STEP 2: 现在 ConnStrategy 列表有了(例如上例中FAILOVER=YES,LOAD_BALANCE=NO)
ConnStrategy(列表 N1, N2, N3),开始一一尝试,如果需要的话,意即,列表中
前一个失败了,则尝试列表下一个,直到试过列表里面所有的。
开始按照列表尝试(例如先尝试与N1)建立tcp socket连接,如果tcp socket建立成功
(i.e. listener是好的),则开始 STEP 3
如果遇到了IOException,则再尝试与下一个(N2) 建立tcp socket连接,如果tcp socket
建立成功, 则开始 STEP 3
如果再次遇到 IOException, 依上面逻辑类推。
STEP 3: JDBC 连接建立 packet交互过程 (这一步,前提是tcp socket建立成功)
3.1
To view full details, sign in with your My Oracle Support Community account.
Don't have a My Oracle Support
Community account? Click to get started!
My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.Oracle offers a comprehensive and fully integrated stack of cloud applications and platform services. For more information about Oracle (NYSE:ORCL), visit oracle.com. © Oracle | Contact and Chat | Support | Communities | Connect with us

| Legal Notices | Terms of Use
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)