本文的第 1 部分概括介绍了 DB2 pureScale 架构和技术。
当思考群集数据库和 DB2 LUW 集成至 pureScale 功能的各种可靠组件的优势时,很容易从概念的角度记住这项技术(有关详细信息,请参见本文的第 1 部分)。然而,真正具有挑战性的是拟定最佳途径,促使 pureScale 功能为贵企业的应用程序服务。为了提供对这项挑战的洞察,我们运用以下两种不同方法连接到 pureScale 群集:负载平衡和客户端亲和性 (client affinities)。
DB2 pureScale 负载平衡
通过将客户端连接到 DB2 pureScale 群集实现负载平衡。启用 WLB 后,群集成员各自保存服务器优先级列表。成员彼此之间定期沟通,询问其他会员的系统负载并刷新各自的服务器列表。
为每个列表上的每位成员分配权限。服务器列表据此为每位成员设计了连接,并将其返回到 DB2 客户端。评估优先级并将工作路由至高优先级成员,这样群集中的每位成员均接近平等处理状态。
由于只需要一个数据库目录或连接对象即可连接 DB2 pureScale 群集,无需对数据库目录或应用程序代码进行任何更改,即可根据需要向 pureScale 系统添加成员或从中删除成员。只需使用一个命令,即可在群集中添加或删除成员或其他缓存设备。轻松管理容量的功能不仅适用于不断增长的业务应用程序,而且还支持企业渡过处理高峰期。企业不需要“超大型的”系统便可在非高峰期处理高峰期的业务活动。
WLB 能够有效处理 OLTP ">工作负载,在短时间内完成事务,并能在成员之间轻松移动。当客户端应用程序需要在事务范围以外的地方持久保存值,比如说,当通过 WITH HOLD 使用序列或声明游标,或者使用 PRESERVE ROWS 属性来创建临时表并定义它们的时候,数据库服务器会限制客户端使用 WLB。
启用 WLB 十分容易,只需设置一个必要属性即可。例如,如果您使用的是基于 Java 的连接,只需将 enableSysplexWLB 连接属性设置为“true”。对于非 Java 应用程序,同样可以使用 db2dsdriver.cfg 文件中的 enableWLB 参数配置 WLB。
在定义 WLB 连接后,默认情况下会激活自动客户端重新路由 (ACR)。激活 ACR 后,如果成员处于离线状态(无论是有意还是无意),系统会自动将请求重新路由到剩余的在线群集成员。当成员重新恢复在线状态后,先前不可用的成员连接和事务也将随之恢复。
pureScale 的 WLB 组件可通过将事务分配给经评估具有最多新请求处理可用资源的成员,帮助消除各种潜在瓶颈。这有助于确保公平利用所有系统资源。
本示例展示了如何通过在 URL 中设置 enableSysplexWLB JDBC 属性并通过应用程序代码进行属性文件设置来启用 WLB。此 URL 通过端口 60200 连接到 DB2 pureScale 成员 172.16.42.102 上的数据库 SAMPLE。
jdbc:db2://172.16.42.102:60200/SAMPLE:enableSysplexWLB=true;
下面的示例演示了如何使用属性文件在应用程序代码内设置 enableSysplexWLB 属性:
String url = jdbc:db2://172.16.42.102:60200/SAMPLE;Properties properties = new Properties();properties.put(“user”, “yourID”);properties.put(“password”, “yourPassword”);properties.put(“enableSysplexWLB”, “true”);
Connection con = DriverManager.getConnection( url, properties );
客户端亲和性
连接 pureScale 群集的第二种方法称作客户端亲和性连接。当在整合数据库资源或者一个群集上运行多个应用程序时,可以考虑采用这种方法。
当根据客户端亲和性进行连接时,需要将各应用程序指定为 pureScale 群集中的单一成员。应用程序的所有连接和请求都是通过这个指定成员进行处理的。pureScale 群集中的其他成员可以在计划内或计划外中断时使用。
但是,WLB 能够与 OLTP 应用程序有效配合,而客户端亲和性连接能够有效地进行批量处理,这有利于保存专用成员的数据库内存堆。与 WLB 一样,客户端亲和性连接是通过 JDBC 属性或在 db2dsdriver.cfg 文件中进行配置的。