数据库访问的弹性化---WebLogic和Oracle RAC的整合:Active GridLink
1. 什么是Active GridLink Data Source
从Oracle WebLogic Server 10.3.4版本开始引进了一种单数据源实现来支持Oracle
RAC集群。它对FAN事件进行响应来提供快速连接故障转移、运行时连接负载均衡和RAC实例优雅停机。在全局事务ID级别支持XA关联。这个新的特性叫做WebLogic
Active GridLink for RAC,在WebLogic Server中叫做GridLink Data
Source。
- Fast Connection Failover (快速故障转移,FCF)
- Run time Connection Load Balancing (运行时连接负载均衡,RCLB)
- Grid Affinity (连接亲和力)
- Scan Addresses (SCAN地址)
AGL data source通过Oracle Notification
Service(ONS)使用快速故障转移来响应Oracle
RAC事件。它保证AGL数据源的连接池包含有效的连接(包括回收重用的连接)而无需修剪和测试连接。它还保证一旦新的节点可用时新创建的连接建立在新节点上。
AGL数据源使用快速故障转移:
---提供不间断的故障探测
---从连接池中终止并移除无效的连接
---对于计划内或计划外的RAC节点停电执行优雅的关机
---自适应集群的结构变化,比如添加和删除节点
---分布运行时工作请求到所有活动的RAC实例
3. Run time Connection Load
Balancing
AGL data source基于数据库发布的FAN事件使用运行时连接负载均衡(RCLB)将连接分布到Oracle
RAC实例。它简化了数据源配置并且改善了连接性能,独立于数据库之外。
运行时连接负载均衡允许WebLogic服务器
---基于终端节点的容量比如CPU、可用性和响应时间来调整工作分布
---响应Oracle RAC集群结构变化
---针对高性能和高可扩展性的连接池管理
4. Grid Affinity
AGL Data source利用Oracle RAC数据库提供的连接亲和力功能连接关联需要使用到Oracle
JDBC驱动和11.1.0.6或更高版本的Oracle RAC数据库。
连接亲和力能够让连接池选择直接连接到一个特定的Oracle
RAC实例,为客户端应用提供最好的性能。连接池使用运行时连接负载均衡来选择一个Oracle
RAC实例,创建第一个连接并指定一个亲和力背景。所有后续连接请求都会使用第一个连接的亲和力背景并被路由到相同的Oracle
RAC实例直到会话或事务终止。
5. SCAN Addrsses
单一客户端访问名称(SCAN)是Oracle RAC
11gR2的新特性,它为客户端访问在集群中运行的Oracle数据库提供了一个单一的名称。这个特性的好处是如果集群中的节点增加或者删除后,客户端的连接信息不需要进行修改。使用一个单一的名称,能够使客户端使用简单的JDBC
thin
URL来访问起群众的任何一个数据库,不论这些集群中的服务器是否是处于活动状态。SCAN为连接数据库的客户端提供了负载均衡和失败转移的功能。
6. 通过WebLogic配置Active GridLink
下面我们通过测试环境在WebLogic服务器里配置一个Active DataLink连接到Oracle RAC。
实验环境:Oracle11.2.0.3 RAC + WebLogic12.1.3
6.1 登录到WebLgic控制台,在Domain
Strunture下依次展开Services-->Data Sources
6.2 点击“New”按钮选择“GridLink Data Source”
在JNDI Name框中填入:jdbc/gridlinkDS
Database Driver选择默认的驱动,然后点击“Next”按钮
6.4 此处再次点击“Next”按钮
6.6 按各自实际情况填入JDBC URL,其语法格式为:
jdbc:oracle:thin:@{scan-listener-host}:{scan-listener-port}/{service-name}
我们测试环境的11gRAC SCAN IP地址为192.168.1.55、监听端口1521、实例名racdb
再填入连接数据库的用户名和口令,这里我们选用了scott。完成后点击“Next”按钮。
6.7 点击“Test All
Listeners”,绿色信息显示测试JDBC连接成功。成功后再次点击“Next”。
相关信息可以在数据库服务器上通过运行命令onsctl debug获得,如下所示
6.10
选择GridLink数据源要关联的应用服务器,此处测试环境我们选择了AdminServer,最后点击“Finish”。
6.11 点击已经创建的“jdbc/gridlinkDS”配置连接池参数。
我们设置Initial Capacity(初始容量)为50,Maximum
Capacity(最大容量)为100。
最后点击“Save”保存并且点击页面左上方的“Activate
Changes”这时GridLink便会依据我们设置在Oracle RAC上创建初始连接。
分别登录到RAC两个节点查询v$session视图,检查用户名为scott的连接数(此处因为我们配置的GridLink数据源是用scott用户连接的)。可以看到racdb1节点有25个,racdb2节点有26个。
至此Active GridLink DataSource全部配置完成。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?