简介

本系列文章的上一篇对复制是什么做了一个概述。本篇文章根据发布服务器,分发服务器和订阅服务器的组织方式和复制类型来讲述常用复制的几种模式。

模式的选择

选择复制的模式取决于多个方面。首先需要考虑具体的业务需求,在此之后还需要考虑硬件和网络的限制。对于业务需求来说考虑的角度可以分为两个部分:自治和延时。自治是指”数据不被影响的程度”,比如说一个业务场景:公司的总部在北京,发布服务器和分发服务器全在总部,各个地区的分部有订阅服务器,使用快照复制来接收推送订阅总部每个月一次的公司员工通讯录。在这个业务场景中,订阅服务器仅仅是接收发布服务器发布的通讯录信息,对于这些信息的修改是不会回传给总部服务器的,这个业务场景的自治程度就是非常低的。而对于延时来说,就是”在发布服务器上的数据修改应用到订阅服务器上的时间”,比如还是上面那个例子,每次订阅服务器的订阅周期是一个月,在此期间总部的通讯录可能经过了多次修改,但一个月以后才会同步到订阅服务器,那么这种场景的延时是非常高的。

其次就是硬件和网络的限制,比如将发布服务器和分发服务器设置在一台服务器上,在现有的情况下CPU是否能够承受这些负担?或是使用快照复制,发布服务器和订阅服务器之间的网络宽带是否能够承受在一定发布周期内的数据量传输?

在简单了解了模式选择的标准后,下面我们来看常用的几种复制模式。

以发布服务器为中心的复制模式

这种模式多个订阅服务器以一个发布服务器为中心进行订阅,如图1所示。

图1.多个订阅服务器以发布服务器为中心的模式

这种模式也是复制模式中最简单的模式,这种模式可以使用快照发布和事务发布。不难看出,这种情景的自治性是比较低的,因此这种模式适用于以下几种业务场景。

  • 订阅服务器用于报表生成.
  • 发布服务器用来发布类似前文所说的员工通讯录,产品资料等主(Master)信息
  • 使用事务发布,使得订阅服务器承担部分负载
  • 在发布服务器Down了以后,作为紧急备用服务器

当然,这种模式的缺陷也是显而易见的。

  • 首先是发布服务器和分发服务器在同一台服务器上对CPU和内存的消耗服务器硬件是否能够承受是一个问题
  • 在OLTP环境中如果每天要修改的数据量过大,比如超过10%,那么需要传送到的订阅服务器的数据量过大也是不得不考虑的一个问题

以发布服务器和分发服务器为中心的复制模式

这种模式其实和上一种模式区别不大,只是分离了发布服务器和分发服务器,如图2所示。

图2.以发布服务器和分发服务器为中心的复制模式

这种模式是将分发任务对CPU,内存和网络带来的负载转移到另一台分发服务器了。从而减轻发布服务器的压力和支持更多的订阅服务器。此外,我们知道一个分发服务器支持多个发布服务器的,因此也可以多个发布服务器使用一个分发服务器。

这种模式还有一个好处是可以将分发服务器放到DMZ区域和订阅服务器连接以避免发布服务器直接暴漏在外网。

当然了,这种模式最重要的一点是发布服务器和分发服务器一定要有可靠的网络连接,这种模式和图1提到的第一种模式适用的业务场景基本一致。

发布-订阅的复制模式

这种模式使得发布服务器也是订阅服务器,如图3所示。

图3.发布-订阅复制模式

这种模式适用于服务器A和服务器B的网络非常昂贵但服务器B和各个订阅服务器的网络成本很低的情况。比如,公司的总部在北京,服务器A在北京,服务器B是上海分公司的,各个订阅服务器通过局域网和服务器B进行连接。在这个例子中,服务器A和服务器B通过VPN进行连接,这个费用是相当昂贵的,而服务器B和各个订阅服务器通过局域网连接的成本可以忽略。

以订阅服务器为中心的复制模式

这种模式以订阅服务器为中心,如图4所示。

图4.以订阅服务器为中心复制模式

这种模式适用的场景比如:各个区域将各自的业务数据汇总到总部这种类型的业务场景。

多个发布服务器和多个订阅服务器的复制模式

这种模式适用于数据对等的环境,一个简化的版本如图5所示。

图5.多个发布服务器和多个订阅服务器

这种模式非常适合业务数据对等的环境,比如说这类业务场景,一个销售公司在同一个城市有3个分店,这三个分店之间是对等的,它们之间通过复制来同步库存。使得每个店都可以了解其它分店的库存情况。这类业务场景适合使用多个发布服务器和多个订阅服务器的复制模式。

具有可更新订阅的事务发布模式

这种模式非常类似图1中所说的模式,但这种模式允许订阅服务器更新数据。如图6所示。

图6.具有可更新订阅事务的发布模式

在这种模式下,比如订阅服务器B更新了数据,这个数据会传送回发布服务器,如果发布服务器接收了这个数据,那么这个数据会同时同步到其它订阅服务器。

合并发布模式

合并发布模式适用于所有服务器共享一部分数据的场景,如图7所示。

图7.合并发布模式

这种模式下,每个服务器并不是互相订阅,而是互相共享。这种模式同样适用于图5所述的业务模式。

总结

本文讲述了复制的几种模式以及它们的所适用的一些场景,很多更复杂的复制模式大多都是对以上几种模式的组合或者拓展。理解上述简单的复制模式是理解复杂复制模式的基础。

SQL Server复制入门(二)----复制的几种模式的更多相关文章

  1. SQL Server复制入门(二)----复制的几种模式 (转载)

    简介本系列文章的上一篇对复制是什么做了一个概述.本篇文章根据发布服务器,分发服务器和订阅服务器的组织方式和复制类型来讲述常用复制的几种模式. 模式的选择选择复制的模式取决于多个方面.首先需要考虑具体的 ...

  2. SQL Server复制入门(一)----复制简介【转】

    SQL Server复制入门(一)----复制简介 简介 SQL Server中的复制(Replication)是SQL Server高可用性的核心功能之一,在我看来,复制指的并不仅仅是一项技术,而是 ...

  3. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  4. SQL SERVER 数据库表同步复制 笔记

    SQL SERVER 数据库表同步复制 笔记 同步复制可运行在不同版本的SQL Server服务之间 环境模拟需要两台数据库192.168.1.1(发布),192.168.1.10(订阅) 1.在发布 ...

  5. 【SQL Server高可用性】数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表

    原文:[SQL Server高可用性]数据库复制:SQL Server 2008R2中通过数据库复制,把A表的数据复制到B表 经常在论坛中看到有人问数据同步的技术,如果只是同步少量的表,那么可以考虑使 ...

  6. 图解SQL Server 2008入门必会

    图解SQL Server 2008入门必会   https://jingyan.baidu.com/article/656db918eded1ee381249c0b.html 图解SQL Server ...

  7. 《SQL Server从入门到精通》

    书名 <SQL Server从入门到精通> 图片 时间 2017-6月 学习 书还可以看完不痛不痒 光盘里面是c的视频有趣这是要我学c的节奏啊,可以写一些基础sql语句也是一门语言叫T-s ...

  8. 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结

    为什么说JAVA中要慎重使用继承   这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...

  9. Decimal为SQL Server、MySql等数据库的一种数据类型

    Decimal为SQL Server.MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部份以及小数部分的位数.使用精确小数类型不仅能够保证数据计算更为精确,还可以节省储存空间, ...

随机推荐

  1. Spring Security Hello World Example--reference

    In this tutorial, we will see how we can use Spring security to protect specific resources. This Hel ...

  2. Kali Linux渗透测试实战 1.4 小试牛刀

    目录 1.4 小试牛刀 1.4.1 信息搜集 whois查询 服务指纹识别 端口扫描 综合性扫描 1.4.2 发现漏洞 1.4.3 攻击与权限维持 小结 1.4 小试牛刀 本节作为第一章的最后一节,给 ...

  3. .net core Area独立成单独的dll文件

    以前做MES项目遇到过这个情况,一个项目有7到8个大模块,生产.质量.物耗.电子看板.设备等,每个模块都有大量业务,这样使用mvc结构如果所有模块放在一个目录中,那么势必会产生很多问题,各模块代码不好 ...

  4. wpf 的依赖属性只能在loaded 事件之后才能取到

    wpf 的依赖属性只能在loaded 事件之后才能取到,在构造函数的  InitializeComponent(); 之后取不到 wpf 的依赖属性只能在loaded 事件之后才能取到,在构造函数的  ...

  5. EF t4模板将实体与DBContext分离

    在用EF DBFirst时,实体类是从数据库自动生成的,与DBContext放在同一个项目中.这样其他项目想引用实体,就会将数据库操作类暴露出来.所以,我们需要将实体分离. 新建项目EFAccess, ...

  6. Swift5 语言指南(二十一) 嵌套类型

    通常创建枚举以支持特定类或结构的功能.类似地,定义纯粹在更复杂类型的上下文中使用的实用程序类和结构可能是方便的.为此,Swift允许您定义嵌套类型,从而在它们支持的类型定义中嵌套支持枚举,类和结构. ...

  7. Nginx 负载均衡和反向代理实践

    nginx 以哪个配置文件启动 Nginx 负载均衡和反向代理实践 环境介绍 192.168.1.50    在这台主机上配置Nginx 的反向代理,负载均衡,和web1,web1使用的81号端口 1 ...

  8. SubLime Text 3 配置SublimeREPL来交互式调试程序

    1. 安装 SublimeREPL 插件 等待一下,输入sublimerepl,选择sublimeREPL,然后它就会在后台安装. 安装完之后,查看如下图 选择你要执行的*.py文件,通过这个路径,选 ...

  9. Shuffle(洗牌)

    Shuffle(洗牌)    图    map        1.Map Task的输出k v,一开始会进入溢写缓冲区中,对数据做处理,比如分区.排序等操作.        2.有几个Map Task ...

  10. jdk1.8+SpringAOP注解报java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut select错误的不知原因的解决办法[仅供参考]

    先说办法:如果Aspectweaver-1.*.*jar这三个包版本比较低, 比如1.5.0这一层次的,可以找版本高一点的包替换低版本的包,问题可以得到解决 jar包的下载地址:https://mvn ...