加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

sql server 负载均衡集群

(2010-08-20 16:34:49)
标签:

ms

sql

server

集群

负载均衡

it

分类: 云平台

格瑞趋势(Green Trend)是一家专注于数据库集群领域的行业解决方案供应商,致力于数据库的负载均衡集群及分布式数据库集群技术的研发和推广。基于Microsoft SQL Server的内核,研发出了Moebius(莫比斯)系列集群系统,解决了困扰在广大SQL Server用户心头的两大难题: 如何构建数据库的负载均衡集群? 如何解决数据库高性能、高可伸缩性与低价格之间的矛盾?
 
您的应用系统是否正在使用SQL Server数据库?
您的客户是不是总在抱怨页面结果反馈的非常慢,一些操作的实时性得不到保障?
您的SQL Server系统的负载是不是总是维持在一个非常高的状态下?
您是不是还在为数据库的扩展而发愁呢? 

Microsoft不是提供了集群(MSCS)吗?难道不能解决这些问题吗?和Moebius for SQL Server负载均衡集群有什么区别?

Microsoft SQL Cluster Server、SQL2005镜像、或第三方的HA(高可用性)集群都是单纯的解决高可用性的,不能实现负载均衡。
 数据库只运行在一个节点上,当出现故障时,另一个节点只是作为这个节点的备份;
 因为始终只有一个节点在运行,在性能上得不到提升,系统也就不具备扩展能力;
 当现有机器的性能不能满足应用的负载时,只能更换更高配置的机器。

既然是这样,那么有没有一个集群既可以实现并行计算达到数据库的高性能,又可以保证数据库的高可用呢?能不能用低成本实现集群的持续扩展呢?
Moebius集群将会把您带入一个全新的负载均衡集群世界, 您将以最小的源代码改动,获得SQL server系统的高效运转。
Moebius for SQLServer负载均衡集群是由一组相互独立的服务器组成,通过中间件相互协作形成一个统一的整体,由多个机器共同支撑业务,实现数据库的高性能。
Moebius for SQLServer负载均衡集群支持无共享磁盘架构,集群中各机器可以不连接一个共享的设备,数据可以存储在每个机器自己的存储介质中,这样冗余的硬件架构不但可以避免单点故障而且提供了杰出的故障恢复能力。一旦发生系统失败,Moebius for SQLServer负载均衡集群对用户保证最高的可用性,保障关键业务数据不丢失。

由Moebius构建的集群中,需要更高数据库处理速度时,只需简单地增加数据库服务器就可以实现。这样可以大大减小硬件投资的风险,而且大大提高现有服务的质量,扩展非常方便。
下面,向大家详细介绍一下:

Moebius集群采用无共享磁盘架构
    Moebius集群由一组数据库服务器组成,每个服务器上安装相同的数据库,集群支持无共享磁盘架构,各机器可以不连接一个共享设备,数据可以存储在每个机器自己的存储介质中。
                       http://s8/middle/3d818452t8e3d54c59e67&690server 负载均衡集群" TITLE="sql server 负载均衡集群" />


    无共享磁盘架构,使得存储不再是单点,系统可用性提高,同时还可以充分利用集群中每个机器的CPU、I/O等硬件来实现集群的高性能。
    无需价格高昂的共享磁盘柜,只要使用2台服务器即可轻松构筑低成本的集群。

Moebius集群架构的分类
    依据数据是否分区,Moebius集群架构分为标准架构和高级架构:
    标准架构:每个节点中具有完全相同的数据,每个节点都拥有数据全集。
    高级架构:每个节点中数据是不同的,每个节点只拥有数据全集的一部分。

Moebius For SQL Server标准架构
    Moebius集群是一组相互独立的服务器,通过相互协作形成一个统一的整体。集群中多个节点相互连接,这样冗余的硬件架构不但可以避免单点故障而且提供了杰出的故障恢复能力。一旦发生系统失败,Moebius集群对用户保证最高的可用性,保障关键是业务数据不丢失。
      http://s3/middle/3d818452t749fbbd8a512&690server 负载均衡集群" TITLE="sql server 负载均衡集群" />


                                 Moebius 集群标准架构

    一个集群数据库可以看作是一个被多个应用实例访问的单一数据库。在Moebius集群中,每个SQL Server实例在各自的服务器上运行。随着应用的增加,当需要添加额外的资源时,可以在不停机的情况下很容易地增加节点。

标准架构中间件工作原理
    中间件驻留在每个机器的数据库中,监测数据库内数据的变化,并将变化的数据同步到其它数据库中。数据同步完成后客户端才会得到响应,同步过程是并发完成的,因此同步到多个数据库和同步到一个数据库的时间基本相等;另外同步过程是在事务环境下完成的,保证了多份数据的数据一致性。
      http://s6/bmiddle/3d818452t8e3d5ad64235&690server 负载均衡集群" TITLE="sql server 负载均衡集群" />




    正因为中间件宿主在数据库中,所以中间件不但能知道数据的变化,而且知道引起数据变化的SQL语句,根据SQL语句的类型智能地采取不同的数据同步策略以保证数据同步成本的最小化:
    1. 数据条数很少,数据内容也不大,则直接同步数据。
    2. 数据条数很少,但是里面包含大数据类型,比如文本,二进制数据等, 则先对数据进行压缩然后再
        同步,从而减少网络带宽的占用和传输所用的时间。
    3. 数据条数很多,此时中间件会获取造成数据变化的SQL语句, 然后对SQL语句进行解析,分析其
        执行计划和执行成本,并选择是同步数据还是同步SQL语句到其他的数据库中。在对表结构进行调整
        或者批量更改数据的时候,这种同步策略非常有用。

Moebius For SQL Server高级架构
    在高级架构中,采用数据分区技术,依据某种规则把数据分散到多个数据库中。
      
数据为什么分区?
    1.当数据量很大的时候,即使服务器在没有任何压力的情况下,某些复杂的查询操作都会非常缓慢,影
       响最终用户的体验。
    2.在大数据量下对数据库的装载与导出,备份与恢复,结构的调整,索引的调整等都会让数据库停止服
       务或者高负荷运转很长时间,影响数据库的可用性和易管理性。
    3.面对这样的应用环境,仅仅依靠提升服务器的硬件配置是起不到作用的,比较好的办法是通过数据分
       区,把数据分成更小的部分来提高数据库的可用性和易管理性。
    4.分区把各部分数据放到不同的机器中,每次查询可以由多个机器上的CPU、I/O来共同负载,通过
       各节点并行处理数据来提高性能。

系统结构
Moebius For SQL Server高级架构在结构上分访问层数据库和数据层数据库两部分。
   访问层:访问层数据库只有原来数据库的结构没有数据,处理提交上来的SQL语句并调度执行。访问层数
            据库可以由多个机器来负载均衡。
   数据层:数据层数据库就是原来的数据库,但是可以有多个冗余对查询进行负载均衡,以提高整个系统
            的性能,Moebius For SQL Server保证多个数据库的一致性;数据层数据库不暴露给用户和业
            务程序,用户和业务程序面对的是访问层数据库。

    http://s12/middle/3d818452t8e3d626e37bb&690server 负载均衡集群" TITLE="sql server 负载均衡集群" />



    通过访问层和数据层构建出一个网格集群来实现集群的高可用性和负载均衡,访问层和数据层的数据库是可以扩展的。(每列中各节点的数据是相同的,每行构成数据的全集;图中数据数据层设计为5×2矩阵,在实际应用中要依据业务的特点来划分)。

如何分区?
Moebius For SQL Server支持两种分区方式:Hash分区和线性分区。
Hash分区:是将表按某一字段的值均匀地分布到若干个指定分区中的一种分区方法。
    优点:每个分区内分配的数据比较平均,承载的压力也就比较平均,机器能够得到充分的利用。
    缺点:不易扩展,如果扩展新的分区会涉及到数据的重新分配,因此在设计的时候要提前规划好。
    Moebius For SQL Server支持把多个分区数据放在一个机器上然后再根据压力逐个的拆到新机器中去,这样既可以保证了分区的规划又不浪费机器,实现了线性扩展。

线性分区:即范围分区,将表按某一字段的取值范围进行分区,如按时间,每个月的数据在一个分区中。
    优点:扩展性能比较好,因为数据的增长是有一定规律的。
    缺点:每个分区内数据的压力不是很平均,大部分业务都存在这种现象,越老的数据被访问的频率越低,从而导致各机器面临的压力也不同,因此使机器的利用率不高。
     Moebius For SQL Server支持把多个分区数据放在一个机器上,所以可以通过新老分区的交替使用来提高机器的利用率。
     分区操作在管理工具中很容易配置,首先设置分区,接下来给每个表选择分区并设置分区字段。(如下图)

       http://s8/middle/3d818452t8e3d65dc3667&690server 负载均衡集群" TITLE="sql server 负载均衡集群" />



     这样中间件在解析、处理SQL语句的时候就会根据配置把数据分配到相应分区所在的机器中去或者从相应分区中读取数据。和其他一些集群不同的是Moebius For SQL Server的分区是经过抽象的,是完全透明的。

      http://s11/middle/3d818452t8e3d6753493a&690server 负载均衡集群" TITLE="sql server 负载均衡集群" />



高级架构中间件工作原理
    1.中间件解析到查询的SQL语句后,首先分析该语句要查找的表,根据所要查找表的分区配置和SQL语句的WHERE条件计算出要从一个分区中还是多个分区中去取数据,取完数据后在访问层合并后再返回给应用程序。这里要重点说明的是中间件通过分析SQL语句,能够对分区范围进行动态缩小或者放大。SELECT * FROM dbo.UserInfo WHERE UserID = 1,因为UserID是分区字段,所以中间件只会从一个分区中查找;SELECT * FROM dbo.UserInfo WHERE UserID IN(3, 4)则会从两个分区中查找;SELECT * FROM dbo.UserInfo WHERE Username = ‘wangzhongtao’,没有使用分区字段作为查询的条件,中间件就会从每个分区列数据库进行查找。对于多个分区列数据进行查询的操作是并行的从而保证总体响应时间的最小化。

   http://s6/middle/3d818452t749fbdcb0b75&690server 负载均衡集群" TITLE="sql server 负载均衡集群" />



    2.中间件解析到更新的SQL语句后,首先分析要更新的表,根据要更新表的分区配置和更新语句的SQL语法来计算出要更新一个或者多个分区中的数据。例如INSERT dbo.UserInfo(UserID, Username) VALUES(1, ‘wangzhongtao’),中间件会解析到UserID = 1,然后根据表的分区配置把数据插入到第一个分区中去。中间件解析到一个更新的SQL语句后,会同时更新同一列中的数据库。第一:更新操作是并行的,整个操作的响应时间和更新一个数据库的响应时间基本相同;第二:整个操作是在事务的环境下完成的,保证了多个数据库中数据是一致的,实现了真正的冗余。
     3.中间件解析到一个更新数据库结构的DDL语句,会把该语句同步到其他访问层数据库和所有的数据层数据库中。这样用户就像在使用一个数据库去维护表、索引、存储过程等等,大大降低了用户的管理成本,也降低了出错的机率。这是Moebius For SQL Server 的亮点。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有