镜像服务器文件实时监控同步程序

这是为我们网站解决南北电信网通互联互通问题而写的一个程序。

优游中国(www.yooyocn.com)是一个大型旅游门户网站,提供了资讯,视频,图片,博客,论坛等大数据量的业务内容。

为了使全国各地的网友都能够快速访问我们的网站,我们部署了三台服务器,一台双线主服务器,一台网通专线服务器,一台电信专线服务器。通过智能DNS解析,使网通的用户访问网通服务器,电信用户访问电信服务器。

而双线位于我们所在的城市,仅供我们网站编辑人员使用。因为我们的现状,双线就是双慢。所以,只只我们的编辑人员操作它上面的内容管理系统(CMS),把资讯,视频,图片上传到这台服务器上。然后,需要一个方法把双线主服务上新增加或修改的内容分发(也就是复制)到网通和电信的服务器,使网通电信用户都能看到同样的内容。

这就出来两个问题,一是同步,是增量同步,二是实时。

我花了很多时间寻找满足需求的工具。我记得在两年以前,镜像服务器应该是一个热门话题吧。这样的工具应该不少。但出乎意料,都是一些定时全部复制的软件。没有说是网站增加修改文件了,马上就可以同步到其它服务器上。例如,当初很流行的Update Now! ,2000年的东西,至今还有很多人在用。CuteFTP 8的文件同步功能,最少是每天运行一次,并且是遍历所有文件后把不同的文件FTP过去。

晚上和朋友郁闷地谈起这个事,他主要是做WinForm的,立马说.NET里有文件监控的类。可以实时获取增加或变更的文件。我大笑,好啊,正发愁呢!.NET的FTP类也很强,那就不如自己搞!第二天花一个上午,研究FileSystemWatcher。下午出个了DEMO,果然很强,就决定做。实现流程代码量并不多,一天半时间就搞定了,剩下三天都在解决其中的各种问题。在服务器上运行时,问题一个一个出现,被自以为完美地解决,高兴一会后,发现有更棘手问题出现…

程序主要实现了如下功能:

通过FileSystemWatcher实时监控指定的文件夹,取得文件夹下增加或修改的文件名,通过“NotifyFilters.Size”属性实现。它有很多属性,LastAccess,LastWrite,测试时把我搞得很糊涂,往这个文件夹下粘贴一个文件,会引发好几次这个事件。查了好久才明白,COPY操作确实是这样。但具体为啥,MSDN上也没说清。好在服务器上运行时没出现这个现象,也放过了。

捕获文件名后没有立即FTP,把文件信息放在了XML中,FTP从XML文件中读取文件名并上传,上传成功的信息移到另外的XML中。以上过程中的出现的异常也放在日志XML中。这个处理流程,也是我花了一晚上才想起来的。

所以,这个程序代码主要有三大块,一是监控,二是读写XML,三是FTP。

实现这些功能的代码并不多,不复杂,但我的收获不是程序本身,而是又一次体会到了编码时的快乐和乐趣。

在写这个程序时,参考了很多资料,很多网友写的代码。所以,当我也做出一些东西时,我把它开源出来,希望能让更多的人受益。

最后,这个程序到现在为止,虽然能运行,但它并未真正部署。因为,我们选择了更好的服务器架构解决方案,具体请看我的另一篇文章。

另外,这个程序还有很多遗憾没有解决,希望能够以此抛砖引玉,更多的人,做出更优秀的程序。

    源码下载:/Files/xtigmh/FileSystemWatcher200801141016.rar 

转载于:https://www.cnblogs.com/xtigmh/archive/2008/01/14/1037818.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/276968.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx学习系列二Linux下Nginx实现负载均衡

关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1、启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限需要),接着找到Nginx的安装目录,启动Nginx,并且指定Nginx启动所需的配置文件,该文件也在Nginx的安装目录下. 2、查看…

FastCGI中文规范

http://fuzhong1983.blog.163.com/blog/static/1684705201051002951763/ . 介绍 FastCGI是对CGI的开放的扩展,它为所有因特网应用提供高性能,且没有Web服务器API的缺点(penalty)。 本规范具有有限的(narrow&#xff09…

设计模式初学者系列-策略模式 -------为什么总是继承

设计模式初学者系列-策略模式 -------为什么总是继承 模板方法的延续 这篇稿子是基于我的前一篇模板方法设计模式之上演绎的,如果没有阅读请点击这里查看,以了解这篇稿子的上下文。 在模板方法设计模式里我举了一个例子:教育部…

红米airdots掉了怎么查找_红米K30 Pro 荣耀V30pro 这两款手机该怎么选呢?

点击?玩机数码君?关注我,加★星标★你好 我是岁月神偷昨天可以说是小米拍手称快的一天,红米K30 Pro以2999的超低价成为目前最便宜的骁龙865旗舰,让友商拍马难追。友商明眼人都知道说的华为,怎么感觉小米每次发布会也替华为宣传了…

返回一个循环整数组最大子数组和

任务要求: 1、输入一个整形数组,数组里有正数也有负数。 2、数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 3、如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A…

中文分词入门之字标注法4

http://www.52nlp.cn/%E4%B8%AD%E6%96%87%E5%88%86%E8%AF%8D%E5%85%A5%E9%97%A8%E4%B9%8B%E5%AD%97%E6%A0%87%E6%B3%A8%E6%B3%954 上一节主要介绍的是利用最大熵工具包来做字标注中文分词,这一节我们直奔主题,借用条件随机场工具“CRF: Yet Another CRF …

后台设置 datakeynames

FormView2.DataKeyNames new String[] { "ShoppingRemarkID" }; 转载于:https://www.cnblogs.com/Fernando/archive/2008/01/16/1041717.html

4K 海思 联咏 芯片_老电视也有春天,换装海美迪4K电视盒子H7 Plus

写在前面YALL,大家好,我是老炮儿许老板。疫情进入六月逐渐好转,各级各类学校相继开学,年前给儿子报的托班也终于迎来了开学,平日里帮忙照看儿子的爷爷奶奶也终于得到了解放。现在白天有大把大把的时间来追剧看电视&…

知识付费不热了,得到们接下来故事怎么讲?

如今,知识付费风口已过,红利期随之在逐渐消失,很多知识付费的创业者也在感叹生意难做,甚至有人已经开始离场。比如,百度音频知识付费产品只生存了6个月,最后的更新时间则停在7月13日。再如,在分…

I'm genius,用游戏柄控制鼠标

昨天不小心把鼠标放在店里没有带回来,今天电脑就没有鼠标了,用了很久的键盘,实在不爽,就突然发现自己有一个游戏柄,后来到网上查了一下怎么用游戏柄控制鼠标,呵呵,发现了一个,下载用…

WCF从理论到实践(4):路在何方

本文的出发点 通过阅读本文,您能了解以下知识: Address是什么? Address的组成? 如何在配置文件中指定Address? 如何通过编程方式设置Address? Address有什么特殊应用? 本文适合的读者 适合WCF初学者&#xff…

office 2007图标_微软Office 365桌面版新图标开始测试

IT之家3月1日消息 此前,微软公布了全新的Office图标,微软Office 365在线网页版在2月15日开始已经全面更新新版图标,而桌面版Office 365现在也陆续开始测试新版图标。目前微软Office Dogfood通道上推送的开发者预览版本已经在2月27日开始测试O…

【动态规划BFS】相遇

这是我第一次模拟题测试点全部AC。。。 同机房的DALAO都用的BFS 然而我用的DP(其实不会BFS) 话不多说,上题! (灰常详细)DP解法: 重点还是状态转移方程式的推导 1个点i要么是后面的位置i-1往前走…

Ruby on Rails 通过代理远程安装

在网上查了一些资料,都不详细,现在列出标准命令: 1。如果代理服务器需要认证 gem install rails --include-dependencies --http-proxy http://username:passwordproxy:port 2。如果代理服务器不需要认证 gem install rails --include-depend…

五个思路,教你如何建立金融业的数据分析管理模型

说起银行、保险、股票投资这样的金融行业,很多人都认为它们是依靠数据驱动的企业,毕竟大数据的诞生本来就是为了金融信息流通而服务的,但在我身边很多搞证券、投资的朋友看来,事实却并非如此。 真正在金融行业做数据分析的人&…

【SSH网上商城项目实战19】订单信息的级联入库以及页面的缓存问题

购物车这一块还剩最后两个问题,就是订单信息的级联入库和页面缓存,这里的信息是指购物车和购物项,即我们将购物车的信息存入数据库的同时,也存入每个购物项的信息,而且外键都关联好,这涉及到了Hibernate中的…

exfat分配单元大小选多少_安防监控摄像机视角大小和镜头毫米数的基础知识!...

关于选择监控镜头毫米数的问题,虽然只有新手才有此困惑,但是我们还是要认真地说一说。监控视角,就是指监控照射的镜头所能覆盖到的范围,就是监控画面所能看到的角度统称叫监控视角。我们正常选购监控的时候,除了可以选…

彩信编辑器之预览功能

html代码 <table width"200"height"250"border"0"cellpadding"0"cellspacing"0"bgcolor"#666666"><tr><td align"center"valign"middle"><marquee id"MMScreen&qu…

java 几个实用的小工具

1、除法运算 编程的人都知道&#xff0c;java中的“/”、“%”运算&#xff0c;其中前者为取整&#xff0c;后者取余数。那么有没有快捷的运算方法取正常的运算结果呢&#xff1f; 查了资料&#xff0c;发现很简单。代码如下&#xff1a; public static String txfloat(int a,i…

处理模板页菜单高亮

//处理模板页菜单高亮var urlstatus false;$("#indexMenu a").each(function () {if ((location.href /).indexOf($(this).attr(href)) > -1 && $(this).attr(href) ! ) {$(this).parent().addClass(active);urlstatus true;} else {$(this).parent().…