由于项目需要,产品的部署必须考虑到安全和灾难的解决办法.由于之前一直做的的小项目,基本都是单服务器,单数据库结构,但是由于一次灾难,把这个问题提上了日程.    本人资历浅薄,很多东西还不是很熟悉,最近在网上百度了一大堆相关的东西,基本有了大概的思路,    思路就是,
      1..用多个服务器做集群,做压力负载均衡,这样第一可以分流,减轻每个服务器的压力,提高稳定性,再者就是,一个服务器崩溃了,其他服务器可以继续运行.提供服务.      2..做文件同步式,自动把多台服务器上的一些特殊文件夹做文件同步,比如一些图片资源文件,静态的html.这样一台服务器做更新,其他服务器可以同步更新,并且,用户上传的文件也同步在每个服务器上,即使部分服务器崩溃了,保证用户的使用不受影响.      3.就是难住我的了,也就是数据库集群,或叫数据库同步,不知道专业学名是什么,反正我要实现的功能就是,有多个数据库服务器,这些数据库上的内容是完全相同的,不同来源的访问可能会被分配到不同的数据库上.当我对A1数据库,添加,修改,删除的时候,其他所有的数据库同步更新,应用程序在运行的时候,会被自能解析到压力最小的数据库服务器上,当一个数据库服务器挂了的时候,它对应的程序就转移到别的数据库服务器上,但是关键是,数据不能丢失,即使那个服务器的硬盘烧掉了,之前的数据也不能丢失.      我查到mssql有数据库同步的功能,但是有一个大问题就是,当2个人同时对2个数据库进行添加操作的时候,会生产2个同样的自增长id,这样2个服务器就发生了并发的冲突.导致数据出现了不一致.这个问题很致命.       以上就是我的问题描述,我把帖子共享在这里,一共以后的小菜们学习,希望各位大神多多给予指导,想必这些技术已经在很多商业公司运用的很成熟了,但是还有很多像我这样的小菜没有掌握,大家多多交流一下吧,这几天我实在是太困了,我都睡了,88.

解决方案 »

  1.   

    【用多个服务器做集群,做压力负载均衡】
    mssql这个比较难,最多是:
    先加重 主服务器 的负担,把主服务器的记录同步到 只读服务器,
    分流读的用户到此服务器来读,减轻主服务器的读压力
    写压力基本是没办法简单分流,除非是应用自行规划
      

  2.   

    【文件同步式】
    如果是web服务,可以使用nginx做反向代理,可配置得很好
      

  3.   

    sql server的cluster什么的只是HA,没有load balance。
    当然你可以比如clustering或者mirroring以后在做log shipping到另一台server,然后primary server做日常操作(OLTP),standby server用来查询报表,分担主服务器压力。
      

  4.   

    说错了..sql server的cluster什么的HA只是容灾,没有load balance
      

  5.   

    用MSSQL的replication+load balance(这个买硬件吧)
    实现你的压力分散需求 (关于你说的id重复问题,请注意实现读写分离,同步的目的端禁止写操作)
    再用镜像实现你的防灾需求当然上情况是你的压力非常大,并且要求数据一致性高,且安全性高情况
      

  6.   

    不可以。。sql server的cluster什么的HA只是容灾,没有load balance
      

  7.   

    楼主是菜鸟1.分布式系统和分布式数据库 可以减轻压力 但是一般 要用代码写
    首先1.ping服务器集群 连接ping值最小的
    2. 验证该服务器的服务是否可用(http)
    用户同样一次操作 就分给了 某1台服务器 这样其他的机器流量自然就小了 但是集群的ping多了说你是菜鸟是因为你把主键搞成了自增的 自增的主键是不适用于分布式数据库的
    把主键写成标识变量 也不要用GUID 网上好多人说GUID不会重复 错!Guid不是不会重复 是重复率小 他的重复几率是 46的32次方 既然有重复几率 就不要用