热门标签 | 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)

推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 护墙_搭建LVS负载均衡NAT和DR模式
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了搭建LVS负载均衡NAT和DR模式相关的知识,希望对你有一定的参考价值。 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 14亿人的大项目,腾讯云数据库拿下!
    全国人 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • 抖音服务器带宽有多大,才能供上亿人同时刷?
    最近看到一个有意思的提问:抖音服务器带宽有多大,为什么能够供那么多人同时刷?今天来给大家科普一下。 ... [详细]
  • LVS-DR直接路由实现负载均衡示例
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • pm2常用的命令用法介绍pm2是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, ... [详细]
  • 域名解析系统DNS
    文章目录前言一、域名系统概述二、因特网的域名结构三、域名服务器1.根域名服务器2.顶级域名服务器(TLD,top-leveldomain)3.权威(Authoritative)域名 ... [详细]
  • 目录Atlas介绍Atlas部署Atlas基本管理Atlas结合MHA故障恢复读写分离建议Atlas介绍Atlas是由Qihoo360Web平台部基础架构团队开发维护的一个基于My ... [详细]
  • php网站设计实验报告,php网站开发实训报告
    本文目录一览:1、php动态网站设计的关键技术有哪些软件,及搭建步骤需要哪些页面,分别完成 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
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社区 版权所有