如何实现镜像网站内容的同步

现在流行云计算,网格计算,分布式系统,网络系统。因为天气原因,国内的网站非常的不稳定,可能域名被停止解析或者无法解析,可能服务器所在的机房被停电或者服务器被关机抬走,而其中很多都是误操作,因为有人为的因素。那么怎么办呢?需要使用镜像技术。

现在的大的网站都是服务器集群,流量均衡,等等,他们自然有一套完整的方案。那么中小网站怎么办呢?

本人还未做过广泛调查,在此提出个人的浅见,抛砖引玉。

我们使用镜像技术来实现。前提:DNS必须稳定,因此要把DNS移到不经常刮风下雨的地方,比如美国的雨棚里;同时为了防止被排除在“域名白名单”之外,必须要进行域名网站的备案注册;最后且最重要的是,必须要遵守当地的法律法规,比如不能涉黄,比如不能政治反动政治敏感和企图颠覆国家政权、泄露国家机密等等,当权者不允许的,或者还没有获得许可的,不要做。我们要做的是在合法的前提下,防止人为因素的误操作,并给自己留下弥补失误的机会。

OK

一般来讲,静态页面镜像非常简单,只要把所有源文件和附件文件通过FTP上传到备份网站即可。但是对于动态页面就麻烦,它包括静态的源文件(包括图片等附件文件),动态的(用户动态上载的)附件文件,和数据库。静态源文件最简单,关键是动态附件文件和数据库的同步请注意,不是备份而是同步,备份很简单。什么是同步呢?比如有甲乙两个镜像站点互为备份要进行同步,在时间点1,二者一致,之后站点甲添加了项目A,修改了项目B,删除了项目C,而站点乙添加了项目X,修改了项目Y,删除了项目Z,需要在时间点2之前同步甲乙二站点,保证两个站点都添加了项目A,X,修改了项目B,Y,删除了项目C,Z。而且如果站点甲乙各自修改了同一样一个项目J,也要两个站点都能同步。

怎么实现?问题过于复杂,需要先简化。

首先,所谓同步,需要时间先同步

也就是说需要时间同步机制,可以使用互联网时间协议同步服务器的时间。不过有更简单的方法就是使用客户端本地的时间,作为主要的时间基准。

简单的将,就是根据服务器上的项目移到本地之后,以本地时间为准。现在多了个本地站点,以本地站点为基准,做起来就会非常的简单。

现在流行的网络架构是客户机/服务器两层模型结构,或者客户机/应用服务器/数据库服务器三层甚至更多层结构,而在应用服务器之前要有防火墙和流量均衡控制。数据库信息是最敏感最需要安全保护的,因此,千万不要尝试着不同站点的数据库之间进行直接的通讯同步,太危险(当然现在的分布式数据库除外,而我们还不能用他们)。这个时间服务器必须足够安全,不能放在经常下雨的地方。它可以是个服务器,也可以是你自己的笔记本,只要保证可靠即可。

其次,镜像服务器的服务和同步策略

学过操作系统我们知道多处理器处理分为非对称多处理和对称多处理SMP,当然对称多处理好,因为每个处理器都是相同的角色,如果有个处理器坏了,系统会自动重构。与之相比拟,我们的镜像站点之间应该也是对称多处理,即不区分谁是主服务器,谁是从服务器(刚才讲的时间服务器除外,它必须做主服务器)。服务器1坏了,服务器3马上顶上。怎么实现呢?利用域名服务器。前面讲过该域名服务必须足够可靠,不能放在风雨交加或者经常动不动就没有征兆刮风下雨的地方。例如Godwithus很与我们同在网站有四个镜像,其中一个是主站(当然这个不符合我们的规则,但是可以把主站作为时间服务器,其他三个服务器作为对称多处理SMP服务器)。主站如果Shutdown了那么没戏了。OK,我的四个域名 主站 http://godwithus.cc ,三个SMP服务器:美国站 http://us.godwithus.cc ,中国站 http://cn.godwithus.cc (http://www.godwithus.cn ),移动站 http://mobi.godwithus.cc (http://godwithus.mobi )。那么还有个首页http://www.godwithus.cc ,它实际上是指向三个SMP站点之一,哪个好指向哪个,哪个出问题了指向下一个。因此用户访问godwithus.cc或者www.godwithus.cc 应该总是能访问到服务的,除非它处在某个国家或者地区的“国域网”范围内或者他自己断网了。

第三,具体的同步方法

利用时间主服务器,一切都以他为基准。学过数据库的都知道,备份策略分为海量(整体)备份和增量备份;支持事务处理的DBMS往往要先写日志在写数据以保证ACID。时间服务器上的数据永远是一致的。在时间点1,所有的SMP服务器都和时间服务器一致,之后服务器甲乙各自修改了其内容,到了时间点2,需要同步了。

这里插一段,SMP很好,但是实现很复杂,还有个简单的方法就是采用主从结构,而这个主服务器是根据情况切换的。实现很简单,每到一个同步时刻,直接把主服务器上的源文件、附件和数据库数据复制到各个从服务器即可。它的缺点是会丢失从服务器上的修改数据,但是我们如果可以保证让从服务器上只读,而只让用户访问主服务器即可。例如,在时间段A,我的http://www.godwithus.cc 是指向 http://cn.godwithus.cc 的,这个时候大家都访问的http://cn.godwithus.cc ,修改的都在它上面,把它作为主服务器。某个时间以后,cn坏了,我就把http://www.godwithus.cc 指向http://us.godwithus.cc ,把它作为主服务器。当然时间服务器http://godwithus.cc 是我自己的,它不会坏。

那么SMP呢?比如让美国人访问美国服务器,电信用户访问电信服务器,联通用户访问联通服务器,而移动用户访问移动服务器,这样用户体验很好,因为速度快。它怎么实现呢?也很简单,在时间点2,按照顺序把每个SMP服务器与时间服务器的数据比较,产生差异数据DIFF,所有服务器的DIFF文件都产生好之后生成总体的DIFF,然后在恢复到各个SMP服务器去。

具体实现,如果是自己写代码很简单,每个表格除了ID字段之外,增加一个全局ID(GID)和全局时间(GTime),用来同步用,GID是全球唯一的,平时local的SMP服务器在添加字段的时候GID和GTIME字段是NULL,只有同步后才有了值。如果是使用商业工具护着开源工具,就不能修改其代码,必须要保证其可升级性。方法就是采用附加字段的方法。在这里我呼吁一下,大家尽量使用开源或者商业工具,比自己一个人写的代码好很多,问道有先后,树叶有专攻,人家一个大的开发团队,肯定别我们个人写的东西要好。我们在其工具的基础上修改,然而只修改其允许我们修改的地方,必须保证其兼容性和可升级性。例如对于Wordpress博客程序,我们可以来设计我们自己的主题模板,但是千万不要动其数据库的字段。

我们附加的数据库只存在于时间服务器上,只用作作于同步,目的就是给每个表格的记录增加GID和GTIME字段。我们其实只要建立一张表即可,它包括:SERVER_ID, DB_ID, TABLE_ID, RECORD_ID, GID, GTIME。相信其他的不需要我多说了。

第四,题外话

关于华人主内网站整合,我发现真的很难。因为没有人会愿意放弃自己的品牌和域名和自己辛辛苦苦开发和经营的程序及服务。但是我们必须要虚己,必须要首先看到现在需要的是什么,其次是我什么可以做到最好,然后再做,不要贪多自己什么都要做,也要学会放弃,选择其实就是放弃,为了神,生命都可以摆上祭坛,还有什么不可以放弃的呢?目的只有一个,“做”“好”该做的东西,且只做一件事但是要把它做到最好,然后再去做其他的。因此要让一个已有的网站来合作很难,看来只有新建立网站来实现,需要的是人,而真正做工的是神。

学过分布式处理的都知道,我们要使用松散耦合技术,比如我做搜索,谁的社区做得好而且跟我可以同工,我就和谁联合社区,谁的新闻做的好且可以和我同工,我就联合谁联合新闻,谁的博客做得好且可以和我同工,我就和谁联合博客,还有视频、音乐等等。一定要联合可以同工的,且要联合最好的。因为我自己不做这些,或者即使我做,我发现我做的没有人家做得好,我要放弃我自己的而使用其他的。还有一点就是一定要尽量利用现成的公共资源,千万不要凭着一腔热忱,搞个烧钱的视频服务器。我们要做人的同工和信息服务的整合。

 

说这么多,全是自己的虾想的,不对的地方肯定很多。抛砖引玉,希望各位拍砖。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
  首先,打开Update Now!,在“动作”里面选择增加主机,软件会弹出一个对话框,要求输入用户名和密码,你就将你申请主页得来的名称以及密码输入,然后确定。Update Now!会让您输入本地初始地址,也就是那些网页资料在你 氐挠才躺厦娴哪柯剂耍绻愕耐辰峁估锩婧凶幽柯迹捅匦虢旅娴囊桓鲂】蛞惭∩希缓笤俳邢乱徊健pdate Now!会要求您输入主页提供商的名称,系统也提供了几个缺省的主页提供商,如果你的主页是建设在那几个地址上的,那么几乎就不需要进行什么设置了。Update Now!提供了“深圳热线963.net、衡阳电信、自贡169、保定热线”等四个站点。如果你的站点是其他的,就要选择下面的“手工设置”了。   接着再进行下一步,Update Now!会要求你输入主机的地址,主要不能输入“http://”或者“ftp://”等等前缀,输入地址之后就是FTP端口,一般选择缺省的“21”就足够了。然后就是输入主机的初始路径,譬如“碧海银沙”的主页一般是“/personal/用户名”,网页的一般是“public_html”,输入了之后再“下一步”,Update Now!就会将刚才你所输入的东西重新显示出来,让您对正一下,好了,一切OK,选择完成,主机添加完成。如果你的主页没有更改,那么无论你怎么按“开始”,Update Now!都不会有动作的,如果每次你对主页进行了文件更新之后,想看看Update Now!会对其作什么改动,又或者您想对站点的设置进行详细的修改,可以在已经添加的主机名称上面按鼠标右键,再选择“编辑”,就可以对一些细节进行调整。在里面你可以对新、旧文件进行更新碰上一些你不希望Update Now!帮你更新的文件,你可以在新文件的菜单里面删除它,同样如果你想重新上载一些没有经过改动的文件,同样可以添加到新文件菜单里面。不过我在这里要说Update Now!的一句坏话,因为如果你对主页的某些文件做了删除,Update Now!是不能帮你自动删除了,只能靠你自己登录上去了。   如果您想修改一些关于FTP参数的设置,您可以在选项的按钮上面按一下,进入菜单之后,您就可以去修改譬如:ACSII文件、对话框显示时间、代理服务器地址、文件上载顺序、自动拨号、网络超时等等项目了。总之,Update Now!的功能是非常强大而且详尽的,经常更新主页的您一定不能错过!   可以这么说,Update Now!出现大大方便了我们这些喜欢做主页的网虫!因为是国产的共享软件,我们更要支持!要注册(实在好用,笔者已经决意注册一个了!不贵,30元!)!到作者的主页http://newsoft.126.com里面就可以找到软件和注册方法了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值