热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

二、服务器优化(1)负载平衡

一、SQLServerClustervs.RAC1.RACRAC,全称RealApplicationClusters,译为“真正应用群集”,是Oracle9i开始采用的一项新技术,是高可用..

一、SQLServerClustervs.RAC1.RAC RAC,全称RealApplicationClusters,译为“真正应用群集”,是Oracle9i开始采用的一项新技术,是高可用..

一、SQL Server Cluster vs. RAC

1. RAC

  RAC,全称Real Application Clusters,译为“真正应用群集”, 是 Oracle 9i 开始采用的一项新技术,是高可用性的一种。

  当一个客户端发送请求到某一台服务器的 listener(侦听器)后,这台服务器根据我们的负载均衡策略,会把请求发送给本机的 RAC 组件处理,也可能会发送给另外一台服务器的RAC组件处理,处理完请求后,RAC 会通过群集软件来访问该数据库的共享存储设备。

  RAC的每个节点都可以实现Read/Write 的实时访问,因此带来性能的提升,相当于“负载均衡”。

2. SQL Server Cluster

  SQL Server 的群集(cluster)最多可以部署16 个节点,但是,在任一时刻只有一个节点(称为主节点)在提供SQL Server 服务,其它节点都处于“休息”状态。当主节点发生故障导致SQL Server 服务停止时,listener 才通知下一个节点接管SQL Server 服务,因此该技术全称为Fail-over Cluster(故障转移群集)。

  SQL Server 数据库群集技术的最大缺点,在于数据库文件(mdf/ndf/ldf)都必须保存在共享存储(shared storage),意味着数据实际上只有一份。这是群集架构中的“单一故障点”,一旦共享存储发生故障,数据库群集就完全失效。

  SQL Server 2005 sp1 提供了镜像(Mirror)功能。主体(主节点)和镜像(即辅助节点,服务器空间,仅可以有1个)拥有各自的独立存储,意味着数据实际上是独立的2份。主体的数据可以同步提交到镜像(实时同步),也可以异步提交到镜像(主节点发出提交请求后无需等待镜像的回应)。辅助节点的副本可以通过建立快照(snapshot)实现只读访问。

  SQL Server 2012 提供了新的功能:可用性组(Availability Group)。主节点(Primary Node)和辅助副本(Secondary Replica,最多4个副本)拥有各自的独立存储。主节点的数据被单向复制到各个辅助节点,其中最多2个辅助节点可以实现同步提交,其余的辅助节点只能实现异步提交。主节点的数据可以实现Read/Write 访问;辅助节点可以直接提供3种访问模式:不可读、只读、意向读(仅允许部分访问)。

二、SQL Server为何不实现RAC功能

  既然RAC有诸多优势,SQL Server为何不实现RAC功能?

  从纯粹的技术角度来看,可以肯定 Microsoft 完全有能力实现这项技术,甚至已经有部分第三方厂家开发了SQL Server的插件以实现RAC功能。那么Microsoft 为何要说“不”呢?大致可以分为以下几种原因:

1. RAC的扩展程度有限

  RAC 可以便于用户对数据库节点数量进行扩展,但是,各个节点之间必须实现数据实时的、多向的同步,而这种同步是以牺牲性能为代价的,因此,随着节点数量的增加,性能的扩展并不是线性的,甚至可能随着节点的增加而导致性能下降。SQL Server 2012 的可用性组技术最多只允许2个辅助节点实现单向的“同步提交”,也是基于这种因素而不得不采取的一种限制措施。

  一般来说,RAC 在双机(2个节点)的时候性能最佳,双机性能大约是单机性能的1.8 倍。一般的工程经验可以按照1.6 倍性能进行设计。

  在设计近期目标时,RAC 是一项很不错的选择。如果从长远角度来看,当数据量和负载越来越大时,RAC 也就越来越显得力不从心。这也是大多数的Oracle 客户(特别是大型客户)不愿意使用RAC 的主要原因。

2. RAC不符合“性价比”、“易学易用”原则

  与SQL Server 相比,RAC 的强项在于它可以部署在高性能的小型机甚至大型机上,如果性能提供1.6倍,可以视为性能的大幅提升(但是,也意味着提升到极限了)。而SQL Server 仅可部署在PC Server 上,由于PC Server 的性能相对有限,即使通过双机部署将性能提升1.8 倍仍然不是最理想的目标。因此,从性价比角度考虑,部署尽可能多的PC Server 仍然比RAC 更具有竞争优势。

  而且,部署和维护 RAC 并不是一项简单轻松的工作,其复杂程度远远大于SQL Server 常规技术,不符合Microsoft 一贯坚持的“易学易用”原则。

  据了解,中国移动的部分省公司BI、网管、客服等模块已经采用DB2、SQL Server 等数据库,明确表明这些模块不可能使用RAC。另据报道,中国移动2009年发文,要求各省公司新建IT 系统中所需的数据库使用Syabase。

3. Microsoft有替代方法

  基于前述各项原则和理由,Microsoft有变通的方法实现负载平衡。下文会有详细讲述。

三、SQL Server的负载平衡规划

  正是由于SQL Server 部署在PC Server 上,因此可以充分利用PC Server 的极高的性价比优势实现负载平衡。值得注意的是,这里使用了“平衡”,而不是“均衡”。

  可以独立或同时实施下述方案与技术:

1. 规划设计----平衡分布

  在系统规则时,就需要设计一定的策略,将数据库分布部署在不同的数据库(甚至不同的服务器)。

  例如,工厂的流水线生产过程中的数据采集,可以根据车间与流水线的分布情况,部署多套SQL Server。

  又如,一家从事鞋服销售的电商,可以根据产品类别(鞋、童装、成人套装、等),将不同的业务数据分布部署到多套SQL Server。

  实现数据库分布部署之后,对于其中某些共通数据,既可以集中到某一套SQL Server,也可以在多套SQL Server 中通过复制(replicate)实现数据同步(如下图)。

  SQL Server 的日志传送、可用组性等技术,香港空间,实现了多个副本的read-only 访问,实际上也能承担负载平衡,但仅限于“读写分离”。

2. 技术实现----复制(replication)

推荐阅读
  • 本文介绍了数据库体系的基础知识,涵盖关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作及高级功能。通过三个阶段的学习路径——基础、优化和部署,帮助读者全面掌握数据库的使用和管理。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 深入理解一致性哈希算法及其应用
    本文详细介绍了分布式系统中的一致性哈希算法,探讨其原理、优势及应用场景,帮助读者全面掌握这一关键技术。 ... [详细]
  • MySQL 高性能实战教程
    本课程深入探讨 MySQL 的架构、性能调优、索引优化、查询优化及高可用性等关键领域。通过实际案例和详细讲解,帮助学员掌握提升 MySQL 数据库性能的方法与技巧。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 在项目中使用 Redis 时,了解其不同架构模式(如单节点、主从复制、哨兵模式和集群)对于确保系统的高可用性和扩展性至关重要。本文将详细探讨这些模式的特点和应用场景。 ... [详细]
  • 深入解析Spring Cloud微服务架构与分布式系统实战
    本文详细介绍了Spring Cloud在微服务架构和分布式系统中的应用,结合实际案例和最新技术,帮助读者全面掌握微服务的实现与优化。 ... [详细]
  • 使用LVS与ldirectord实现高可用负载均衡
    本文介绍了如何通过LVS(Linux Virtual Server)结合ldirectord工具来实现服务器的健康检查及负载均衡功能。环境设置包括一个LVS节点和两个真实服务器节点,通过配置ldirectord进行健康状态监测,确保系统的高可用性。 ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • 探讨GET与POST请求数据传输的最大容量
    在Web开发领域,GET和POST是最常见的两种数据传输方法。本文将深入探讨这两种请求方式在不同环境下的数据传输能力及其限制。 ... [详细]
author-avatar
保卫祖国666
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有