主动数据传输与远程过程调用:分布式事务环境的关键要素
立即解锁
发布时间: 2025-08-27 00:05:02 阅读量: 3 订阅数: 8 


事务管理与分布式数据库的挑战和解决方案
### 主动数据传输与远程过程调用:分布式事务环境的关键要素
#### 1. 网络资源连接的不同风格
在网络资源连接方面,会话、消息传递和远程过程调用(RPC)是不同的风格,各有优势。会话速度快且安全,但固定缺乏灵活性;RPC 则易于编写和执行,更为灵活,但需要知识工程机器周期来保证性能。
为避免重复执行调用,采用远程过程机制的解决方案需谨慎。通常,调用者会在数据包上添加唯一的调用者标识和调用序列号,接收者则跟踪每个调用者的最后序列号。若调用者等待回复,可询问接收者工作进展;若接收者无响应,建议中止事务。同时,为减少通信开销,应避免逐包确认,选择端到端确认策略。
在单机上,可使远程过程调用速度接近本地过程调用,但受地址空间切换成本限制。在多机之间,优化则包括将调用封装在一个数据包中,并确保服务器执行时间足够短。
以 Tuxedo 实现为例,在通过事务性 RPC 执行客户端 - 服务器通信时,监视器会传播事务上下文,通过 RPC 发送请求并获取回复。系统调用运行时例程进行编组,每个节点都有公告板,名称到服务器的映射在共享内存中进行节点内处理。消息被发送到 Unix 消息队列,每个服务器进程有一个队列。为实现负载均衡,Tuxedo 在公告板上记录服务器统计信息,并按服务名称设置优先级,动态优先级方案会覆盖静态方案。
#### 2. 远程过程调用的机制
交互式事务的实现需要与事务处理中的活跃设备建立灵活的通信路径,可通过不同方法实现,其中之一是程序间通信。在数据库密集型操作中,实现交互式事务处理机制有多种替代方法和模型,最常用的三种基本协议为:
- 发送/接收
- 入队/出队
- 请求/回复
RPC 主要执行的是请求/回复协议,可视为发送/接收的特殊情况。RPC 是一种有效的方法,因为过程调用是一种合适的通信方式。经典的 RPC 是同步的,在客户端 - 服务器模型中,客户端等待服务器回复,这使一个服务器能处理多个客户端,也让程序员在并行环境中能顺序思考,还允许不同语言在客户端 - 服务器设置中共存。
RPC 提供了一种接口语言,让程序员为每个服务器过程编写定义,但也带来了一些问题:
- 应支持哪些语言?
- 允许哪些类型的参数?
- 是处理所有数据类型还是部分数据类型?
应用程序的可补偿性也是一个主要问题。程序员将接口定义包含在调用服务器过程的每个客户端程序中,软件将接口定义编译为客户端和服务器的过程,这些过程对客户端和服务器隐藏通信细节,使过程看起来像普通的过程调用,但并非所有与事务相关的问题都能得到补偿。
每个程序在进行数据库调用时,都应以事务标识符作为参数,为避免错误和方便使用,应使这一过程对应用程序透明,这需要提前规划。在系统设计中,还应考虑容错性,例如在分布式环境中,事务处理管理器(TPM)应能处理其他处理器上的进程,可通过备份进程在故障发生后启动来实现。
#### 3. 模拟研究环境
由于长事务处理存在诸多未知因素,且合适的软件不一定可用,通过实验进行研究是明智的选择。例如,可使用模拟来理解并行事务执行等现象。模拟有助于更好地理解事务处理机制的工作原理,特别是与执行特性相关的特定问题。信息科学家通过建模来理解自然现象,基于先验知识提出假设,然后通过实验验证这些假设。
数据流架构为事务分配不同类型的并行操作,可利用操作间并行性和流水线,但这使优化成为难题,同时也为更有效的解决方案提供了可能。在这一领域的研究较少,但对并行事务执行和与异构数据库管理系统(DBMS)的交互性发展非常重要,特别是研究多操作、复杂事务的执行,有助于为并行 DBMS 环境设计优化器。
事务执行优化的关键是选择低成本的执行策略,由于搜索所有可能策略的空间不可行,解决方案通常采用启发式方法。启发式方法基于对事务执行本质的洞察,为并行环境设计启发式查询优化器,需要理解执行策略的行为,建模是深入了解基本概念并制定优化启发式方法的途径。
通过构建合适的模型,可以测试多个假设,例如在主内存价格大幅下降的情况下,使用大量内存进行特定操作的好处,以及大容量主内存是否能显著提高性能。还可通过模拟器对之前讨论的替代策略进行实验,包括:
- 主动和被动数据传输
- 系统驱动和用户驱动的方法
- 请求调度、路由和控制的替代方案
- 是否采用事务服务器
- 单线程和多线程解决方案
- 进程间和进程内通信
- 系统消息传递替代方案和 RPC
可以构建一个工作模型,如由多个通过消息传递进行通信的处理器组成的客户端 - 服务器集合,每个处理器可直接访问其部分数据库。存储在其他处理器上的信息元素(IE)可能需要通过网络传输,对分布式数据库的查询可表示为数据流图。
每个处理器可运行一个或多个操作进程,实验的挑战在于研究操作间并行性。将 IE 从一个进程传输到另一个远程进程时,需先进行封装,由发送操作系统将其放到网络上,接收操作系统再从网络中检索并处理。但通过网络发送 IE 会产生发送和接收处理器的 CPU 成本、实际传输成本和延迟,因此元组在网络上的传输速率由通道和 CPU 容量决定,而这些资源是共享且受约束的。
由于存在多个相互作用的约束,建议开发模拟器来研究复杂事务的执行特性。模
0
0
复制全文
相关推荐










