技术开发 频道

DB2 pureScale实现透明的应用可伸缩性

    【IT168 技术文章】

    在横向扩展的数据库环境中节省成本的关键是实现真正透明的应 用扩展机制。透明的扩展意味着数据库引擎可以为OLTP应用提供 更大的吞吐量和更快的响应速度,而对数据本地性没有要求。

    数据的本地性表示应用所需的数据位于它所连接的服务器上,并且节点之间很少会争用相同的数据分页。在横向扩展架构中,如果采用基于网络的消息架构共享集群中的数据,数据的本地性就显得格外重要。

    依靠数据本地性实现有效扩展的横向扩展架构要求开发人员创建复杂的事务应用来实现集群感知性。集群感知的应用在开发和部 署方面不仅更加复杂,而且成本更加高昂,同时当集群发生更改时还要求重新设计应用。一些供应商可能声称它们的架构能运行任何应用,而不需要修改; 但是,如果在设计时没有实现某种形式的集群感知性,它们将不能扩展任何应用。

    透明的应用扩展意味着应用不需要具备集群感知性便可利用横向 扩展架构。DB2 pureScale是分布式平台上所特有的,其高效性源于对现代网络和硬件架构,以及pureScale的集中化锁和缓存机制的利用。

    为了减少集群中各节点之间的通信,以便实现锁管理和全局缓存服务,DB2 pureScale使用powerHA pureScale集群加速设备(以下 简称为CF)和RDMA技术来提供透明的应用可伸缩性。

    RDMA允许集群中的各个成员直接访问CF中的内存,而CF也可以 直接访问各成员的内存。举例来说,假定集群中的某成员(成员1)希 望读取未存储在本地缓冲池中的数据分页。DB2会分配一个代理 (或线程)来执行此事务; 然后,代理使用RDMA直接向CF的内存写 入数据,声称自己需要读取某个特定分页。如果成员1希望读取的分页位于CF的全局集中缓冲池中,则CF会将该分页直接推送到成员1 的内存中,而不是让该成员的代理执行I/O操作从磁盘读取它。通过使用RDMA,成员1的代理只需向远程服务器发起一个memcopy(内存复制)调用,从而避免了成本较高的进程间通信、处理器中断、IP栈调用等。简单来说,pureScale允许成员的代理通过执行看似本地的内存复制操作来执行远程内存复制操作。

    这些轻量级的远程内存调用,连同集中缓冲池和锁管理设备,意味着应用不需要连接到已经包含数据的成员。集群中的任何成员 都可以有效地从全局缓冲池接收数据分页,无论集群有多大。大 多数RD M A调用都非常迅速,这使得发起调用的DB2 进程在等待CF的响应时不需要让出已分配的CPU时间,并且不需要重新调度便可完成任务。举例来说,为了向CF通知某行即将更新(因此 需要一个X锁),某个成员的代理需要执行Set Lock State (SLS) 请求,也就是将锁信息直接写入到CF上的内存中。CF会确认集群 中的其他成员没有锁定这个行,并直接修改请求成员的内存以批准锁请求。

    这个SLS只需15微秒就可以完成整个过程,因此代理不需要让出已分配的CPU时间。代理可以持续高效运行,而不需要像其他横向扩展架构那样等待IP中断(避免不必要的上下文切换)。对于长时间运行的批量事务等特定操作来说,DB2代理有必要让出CPU时间,而 DB2会自动决定是否动态让出CPU时间。

    DB2 pureScale内置的针对集群成员的负载均衡机制是另一个重要的DB2可伸缩性特性。应用不需要具备集群感知性便可利用负 载均衡机制。DB2 for z/OS数据共享客户如今所使用的客户端驱动程序可以为DB2 pureScale提供集群负载均衡特性。
 

0
相关文章