惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Apple Machine Learning Research
Apple Machine Learning Research
AWS News Blog
AWS News Blog
Google DeepMind News
Google DeepMind News
U
Unit 42
博客园 - 叶小钗
博客园 - 聂微东
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
有赞技术团队
有赞技术团队
aimingoo的专栏
aimingoo的专栏
D
DataBreaches.Net
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Jina AI
Jina AI
美团技术团队
The Cloudflare Blog
M
MIT News - Artificial intelligence
Microsoft Azure Blog
Microsoft Azure Blog
I
InfoQ
S
Schneier on Security
C
Check Point Blog
Project Zero
Project Zero
The Hacker News
The Hacker News
Scott Helme
Scott Helme
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Cisco Talos Blog
Cisco Talos Blog
P
Privacy International News Feed
SecWiki News
SecWiki News
Latest news
Latest news
MongoDB | Blog
MongoDB | Blog
S
Secure Thoughts
Google Online Security Blog
Google Online Security Blog
F
Fortinet All Blogs
博客园 - 三生石上(FineUI控件)
H
Help Net Security
TaoSecurity Blog
TaoSecurity Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Last Week in AI
Last Week in AI
P
Privacy & Cybersecurity Law Blog
Forbes - Security
Forbes - Security
G
GRAHAM CLULEY
N
Netflix TechBlog - Medium
L
Lohrmann on Cybersecurity
A
About on SuperTechFans
T
The Exploit Database - CXSecurity.com
C
Cisco Blogs
PCI Perspectives
PCI Perspectives
大猫的无限游戏
大猫的无限游戏
T
Troy Hunt's Blog
H
Hacker News: Front Page
Vercel News
Vercel News

博客园 - Sunshine

基于FFmpeg的FLV视频转换工具 数据访问基于存储过程而不是SQL语句的优势 2008年1月工作总结 优游中国网站服务器架构解决方案 一个仿PetShop的基于NHibernate的N层框架示例 软件项目管理系统(RPMS)界面设计列表 谱《丢手绢》的人去了 偶的《职业心理体检报告》 雅虎公司C#笔试题 李开复: Google中国编程挑战赛 敢说你识字? 推荐《大道至简——软件工程实践者的思想》电子版 如何做一个好的互联网老板(二) 如何做一个好的互联网老板(一) 韩国的排骨有多贵?(关于韩剧的暴笑讨论) 不要因为工作不好而辞职 美丽的漯河,我的家 微软副总裁李开复闪电加盟Google 任中国区总裁 ASP.NET 中 Cookie 的基本知识
镜像服务器文件实时监控同步程序
Sunshine · 2008-01-14 · via 博客园 - Sunshine

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

优游中国(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