Bea被Oracle收购以后,我们可以看到WebLogic和Oracle数据库之间的更紧密结合。
Note: The WebLogic Type 4 JDBC Oracle driver described in this document has been deprecated as of release 10.3 of WebLogic Server. It will be removed in the next release of WebLogic Server. Instead of this deprecated driver, use the Oracle Thin Driver that is also provided with WebLogic Server.
现在在WebLogic 10.3.4中,为了增强对RAC的支持,Oracle推出了Gridlink Data Source,取代原先的Multi Data Source:
http://download.oracle.com/docs/cd/E17904_01/web.1111/e13737/jdbc_intro.htm#BHCBACAG
Enhanced Oracle RAC Support
This release provides a new data source type, a GridLink Data Source, to provide enhanced support for Oracle RAC.
Multi Data Source
原来的Multi Data Source的工作原理是为每台RAC的结点配置一个Datasource,然后把所有的这些Datasource聚合起来配置一个Multi Data Source。虽然Multi Data Source也提供Failover(容错)和Load Balancing(负载均衡),但是功能相对有限。
1) 配置比较复杂
需要为每一个RAC 结点手动配置一个Data Source,添加和删除节点都需要WebLogic管理员手动操作。
2) Failover是data source级别的,不是connection 级别的
Multi Data Source需要开启Test Reserved Connections ( TestConnectionsOnReserve) 功能。这个功能开启以后,当应用向一个Data Source申请一个Connection的时候,WebLogic server需要先测试这个Connection再返回。如果这个测试失败,WebLogic会重建一个连接。如果重建再失败,Data Source就会被标识成dead,然后WebLogic自动Failover到下一个Multi Data Source里面的Data Source。
当一个Data Source被标识成dead以后,WebLogic会主动的每隔一段时间(缺省120秒)查询数据库结点。如果测试成功,这个Data Source会被重新启用。
对一个已经获得并在使用的connection,WebLogic无法实现Failover。
3)Load Balancing仅仅是简单的round robin
如果一个应用开启了多个Connection,那么根据round robin的原则,这多个Connection可能会来自多个不同的数据库结点。这个实际上有性能上的影响。
Gridlink Data Source
新推出的Gridlink Data Source相对来说更有效率,因为它很大程度上借助了数据库的功能。它使用了Oracle的ONS(Oracle Notification Service)的特征。看下图:
数据库RAC端的ONS服务采集RAC结点的运行数据。这些数据传给Gridlink Data Source的ONS监听客户端。UCP-RAC模块分析这些数据并给出建议,Gridlink Data Source通过这些数据/建议来实现连接池的Failover,Load Balancing和其他的一些特性。
我们来看看Gridlink Data Source的一些改进功能:
1)首先,配置变得简单了
你只需要配置一个Gridlink Data Source,它就会处理与后台的RAC数据库的通讯。相对Multi Data Source,WebLogic管理员的工作量减少很多。
如果你配置了Oracle的SCAN服务就更简单了,RAC结点的添加删除都是自动完成,因为对Gridlink Data Source来说,它只知道一个SCAN地址就好了。就好象一个域名一样,你不需要知道后面用了多少IP来实现。
2)更快速有效的Failover
使用ONS,Gridlink Data Source可以实时的捕捉到RAC端的信息。如果有结点出错,Gridlink Data Source很快将与其对应的Connection标识为不可用。这样就避免了Multi Data Source中需要不断主动测试Connection所带来的overhead。
3)实时的Load Balancing
同样因为ONS的数据,Gridlink Data Source可以知道哪些RAC结点很忙,哪些很闲,于是它可以有效的将哪些来自空闲RAC的Connection分配给应用请求,实现实时的Load Balancing。
4)沉稳应对RAC结点的关闭
如果是有计划的关闭,Gridlink Data Source会等当前Active的事务结束再关闭Connection。新的Connection请求将被发送到其他的RAC结点。
如果是突发的RAC结点关闭,Gridlink Data Source也会沉着的将当前的事务rollback,然后将新的Connection请求发送到其他的RAC结点。
5)全局事务的Connectoin会尽量在一台RAC结点上
前面讲过Multi Data Source的Round Robin策略会造成同一个事务的多个Connection被发送到不同的RAC结点上。
Gridlink Data Source在一个事务的第一个Connection创建后会将该事务的所以后续Connection请求发送到同一个RAC结点上。这样可以减少后台同步处理,提高全局事务的运行效率。
创建Gridlink Data Source
创建的过程不复杂,和一个普通的Data Source差不多,都从这里开始:
名字之类的配置,注意数据库类型就是Oracle,呵呵,当然了,RAC就是Oracle的:
XA的配置页面掠过,到了输入RAC地址的页面:
其实两个选择都一样,一个是一个一个的添加server,然后由WebLogic生成JDBC URL:
一个是自己输入JDBC URL:
没有区别,怕写错就让WebLogic生成,掠过测试页面,下一步就是关键的ONS客户端配置:
如果您使用SCAN的话,这里可以就输入SCAN的地址。
Wallet可以用来加密ONS的通讯,这里不表。
掠过测试页面,只要target一下就好了:
大功告成!
该贴被xiaoyang编辑于2011-11-3 9:39:39