Page 271 - 《软件学报》2026年第1期
P. 271

268                                                        软件学报  2026  年第  37  卷第  1  期


                 统中的每个事务最终提交或者内部中止, 那么我们称这个系统提供事务可用性; 如果一个系统给定副本可用性, 提
                 供事务可用性, 则称这个系统提供高可用性. 在事务隔离层面, 可串行化与高可用性矛盾, 大多数数据库提供弱隔
                 离性而非可串行化.
                    近年来, 确定型数据库系统越来越受到数据库研究界的关注. 但确定性分布式事务处理系统中确保高可用性
                 的问题很少受到关注, 文献        [51] 设计并实现了一个面向队列的复制事务处理系统                QR-Store. 该系统提供了复制层
                 的两种实现方法. 一种实现方法是中间件复制使用                ZooKeeper 作为中间件来实现复制层. Leader 服务器和副本服
                 务器充当    ZooKeeper 集群的客户端. 当    Leader 服务器发出写请求时, 副本服务器发出读请求以获取复制的数据.
                 ZooKeeper 集群是一个高可用的系统, 它不会构成单点故障, 因为它使用内部复制和共识协议来确保正确的故障
                 转移. ZooKeeper 使用的一致性协议称为        ZAB, 该方法简化了复制层在服务器节点的实现但是增加了中间件的开
                 销. 另一种实现方法是集成复制, 这种方法将基于              quorum  的复制协议与事务处理协议相融合, 有效地消除了中间
                 件开销. 采用这种实现方式, 领导者服务器节点向副本发送复制的数据消息. 在接收到复制的数据消息后, 副本以
                 确认消息的形式回复到领导服务器. 根据所能容忍的节点故障的数量, 存在最少数量的确认消息来确认成功的复
                 制. 令节点故障次数记为       f, 使得给定节点的副本总数为         n=2f+1. 确认消息的个数为     f+1. 这种方式可以确保系统的
                 高可用性同时减少开销.
                    电子商务、金融科技和云应用等领域对高并发交易量的需求日益增加. 这与多核机器的日益占优凸显了追求
                 更高的多线程事务处理的吞吐量和并行性的需求. 由于读取和写入相同数据项的竞争操作, 事务执行必须防范并
                 发异常, 以维持所需的隔离级别. 事务在冲突时的高效处理对于数据库高可用性很重要. 文献                             [49] 在事务分区的
                 基础上, 考虑调度事务的执行顺序来增加并发度. 为此, 将分区重新写入捆绑事务的调度来对事务的执行顺序进一
                 步细化. 此外, 对于并发控制协议所针对的非捆绑交易, 提出了一种主动延迟策略来减少连带惩罚. 分区数据库                                (和
                 变体) 在静态可分区的高争用工作负载上表现良好, 但时变工作负载通常使它们不切实际. 为了解决这个问题, 文
                 献  [52] 提出了  Strife——一种新的事务处理方案. 它动态地将事务聚集在一起, 并在没有任何并发控制的情况下执
                 行大多数事务. Strife 使用一种快速动态聚类算法, 该算法利用随机抽样和并发联合查找数据结构的组合, 在执行
                 批处理之前对批处理进行在线分区. 实验结果表明, 在高争用工作负载上, Strife 的性能比基于锁的协议和乐观协
                 议高出   2  倍.
                  2.2.3    负载均衡
                    随着计算技术的发展, 云计算为用户服务增加了一种新的范式, 允许在任何时间、任何地点以按需付费的方
                 式访问信息技术服务. 由于云服务的灵活性, 许多组织正在将其业务转移到云上, 云中的负载均衡是云计算领域的
                 一个挑战. 一个有效的负载均衡技术应该通过有效地利用虚拟机资源来优化和确保高用户满意度, 从而提供系统
                 的高可用性    [53] .
                    文献  [54] 指出, 负载均衡提供了将工作负载平均分配到可用资源上的便利. 其目标是在任何服务组件出现故
                 障的情况下, 通过提供和取消提供应用程序实例并合理利用资源来提供持续的服务. 此外, 负载均衡通常以最小化
                 任务响应时间和提高资源利用率为目标, 以较低的成本提升系统性能和可用性. 文中主要讨论了依赖于负载均衡
                 器标准的各种动态负载均衡技术, 并将其分为通用负载均衡                   (包括虚拟机迁移和基于负载估计的算法)、基于自然
                 现象的负载均衡      (如遗传算法、蜜蜂启发、ACO          和  PSO  等)、混合负载均衡、基于代理的负载均衡             (代理用于云
                 资源发现、协商、组合和管理. 多个代理可以协同工作, 以满足用户的 QoS 要求和资源使用)、基于任务的负载均
                 衡  (包括一些基于任务的调度算法等)、基于集群的负载均衡                  (根据服务器性能、存储容量等参数划分不同集群).
                    常用的负载均衡算法通常根据底层环境可以分为                  3  类: 静态、动态和自然启发算法        [55] . 静态负载均衡算法的
                 执行过程依赖于系统状态的先验知识及其属性和能力. 先验信息的例子可以包括记忆力、存储容量和处理能力.
                 这些信息代表了系统的负载情况. 动态负载平衡算法在动态环境下负载平衡算法考虑了系统前面的状态. 自然启
                 发的负载平衡算法表示基于人类本性的生物过程或活动进行数学建模, 以采用云计算中的自然过程进行负载均
                 衡. 这些智能算法的发展对于复杂、动态的系统具有更好的表现.
                    基于  Throttled  算法  (throttled algorithm, TA) 的负载平衡是一种动态算法, 负载均衡器在收到客户端的请求时,
   266   267   268   269   270   271   272   273   274   275   276