一、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)

随着企业应用的复杂度不断增加,越来越多的企业开始将应用拆分为多个微服务,通过微服务之间的协作完成整个业务流程。这种架构方式能够使应用更加稳定、扩展性更强,但同时也带来了一些新的问题,例如负载均衡,服务发现等。本文将介绍如何通过SpringCloud来解决微服务架构下的负载均衡问题。什么是负载均衡?负载均衡(LoadBalancing)是指在多个服务器、网

随着网站访问量的增加,单一服务器往往难以承受高并发流量,出现了负载均衡来解决这个问题。负载均衡是一种将流量分配到多台服务器上的技术,可以提高网站的可用性和稳定性。这里介绍如何在ThinkPHP6中使用Nginx实现负载均衡。安装Nginx首先需要安装Nginx。以Linux系统为例,可以使用以下命令安装:sudoaptupdatesudoaptin

Linux是一款优秀的操作系统,广泛应用于服务器系统中。在使用Linux系统的过程中,服务器负载问题是一种常见的现象。服务器负载是指服务器的系统资源无法满足当前的请求,导致系统负载过高,从而影响服务器性能。本文将介绍Linux系统下常见的服务器负载问题及其解决方法。一、CPU负载过高当服务器的CPU负载过高时,会导致系统响应变慢、请求处理时间变长等问题。当C

Redis是一款开源的内存高速缓存数据库,拥有高并发、高性能的特点,在分布式系统中得到了广泛的应用。其中,Redis的分布式事务功能是其最受欢迎的特性之一,可以实现多个Redis集群之间的数据同步和负载均衡。本文将介绍Redis实现分布式事务的负载均衡与容量规划。一、Redis分布式事务在Redis中,分布式事务指的是将多个命令作为一个整体进行执行,其中任何

Gin框架是Golang的一种Web开发框架,许多项目都采用了该框架。当我们的项目发展到一定规模时,如何提高我们的服务可用性和性能就成了一个重要的话题。这时,反向代理和负载均衡就变得非常重要。本文将讨论Gin框架中如何使用反向代理和负载均衡来提高我们的服务可用性和性能。反向代理反向代理是指我们的服务被放在一个代理服务器的后面,客户端请求先到达代理服务器,代理

Swoole是一种针对PHP语言的轻量级高性能网络通讯库,它的出现大大提高了PHP应用的性能和可扩展性。而Nginx是一款流行的Web服务器,也被广泛用于反向代理和负载均衡。在Swoole中使用Nginx的反向代理与负载均衡可以更好地发挥Swoole的优势。下面是使用Nginx实现Swoole反向代理与负载均衡的教程。安装Nginx首先需要安装Nginx,可

Vue是现在流行的前端框架之一,它是一种轻量级的JavaScript框架,可以帮助开发者建立高效的单页应用程序。而Apache则是一个流行的Web服务器软件,它支持反向代理和负载均衡。在Vue应用中使用Apache进行反向代理和负载均衡可以优化应用程序的性能和可扩展性。本文将介绍如何在Vue应用中使用Apache进行反向代理和负载均衡。什么是反向代理和负载均

在现代Web应用程序开发中,数据库负载均衡是一项至关重要的技术。随着应用程序的规模不断扩大,单一数据库服务器的性能和可靠性很容易成为瓶颈。为了解决这个问题,许多开发人员选择使用数据库负载均衡技术。在本文中,我们将介绍如何在PHP编程中实现数据库负载均衡。什么是数据库负载均衡?数据库负载均衡是一种通过将负载分散到多个服务器上来提高应用程序性能和可靠性的技术。这


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 Linux新版
SublimeText3 Linux最新版

记事本++7.3.1
好用且免费的代码编辑器

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

禅工作室 13.0.1
功能强大的PHP集成开发环境