多站点同步更新系统的设计
2016-02-26郑成城柳适
郑成城 柳适
【摘 要】目前,互联网的网站及大部分的企业管理软件都是采用B/S架构模型。大型的网站应用对系统的并发、吞吐量、性能都有较高的要求,因此许多大型网站应用都采用了多台服务器做负载均衡的方式来部署。但如果服务器的数量较多,会给站点更新带来很大的不便。为了提高服务器站点的更新效率,增加更新的准确性,减轻网站维护人员的工作量。开发了一款多站点自动同步更新系统。本文对该系统进行了具体的介绍。
【关键词】自动更新;负载均衡;网站维护
【Abstract】At present,the Internets websites and most of the enterprise management software use the B/S architecture model.Large scale web applications have high requirements on the systems concurrency,throughput and performance.So many large web sites are develoyed with multiple servers for load balancing.But number of servers will bring a lot of inconvenience to update the websites.In order to improve the efficiency of the websites updating,increase the accuracy,reduce the workload of websmaster.Design and development a multi site automatic synchronous updating system. The system is introduced in detail in this paper.
【Key words】Automatic update; Load balancing; Website maintenance
0 概述
随着信息时代的带来,Internet和Intranet上客户机数量以及任务密集程度的不断增加。单台Web服务器由于受到带宽、机器性能等因素的限制已经无法适应当前的需求。Web服务器集群系统可以实现负载均衡,并且可以大幅度提高系统的性能以及可靠性和扩展性。但随着Web服务器集群的普及,新的问题已随之产生。多台服务器的更新不仅要花费管理人员大量的时间,还需要管理员对各台服务器的文件拷贝权限进行设置,并且不能保证拷贝过程中
1 系统的功能需求
(1)需要在网站更新前开启更新提示,提示用户保存好手头工作并退出系统;
(2)需要对多个服务器上的站点文件进行删除及新建操作;
(3)由于网站文件在更新和新建时可能被占用,需要在操作前对多个服务器上的网站应用程序池进行回收;
(4)需要对更新的进度和完成情况进行查看;
(5)更新完成后,关闭更新提示。
2 方案对比
在使用当前方案前,曾经试用过其他方案,但是使用效果不理想,最终选择了当前这个方案。现在对两种方案进行对比。
(1)方案一
通过在服务器上建立共享文件夹,将发布好的网站文件放在共享文件夹中。然后,各台服务器利用本地的发布站点从共享文件夹拷贝该文件至本地站点。
问题一:发布站点在访问共享文件夹时遇到权限不足的问题。经过查询资料和网上搜索,需要对.Net用户设置较高的权限。设置比较繁琐,并且存在一定的安全隐患。
问题二:拷贝耗时比较长,由于电子病历、护理平台等网站文件都比较多,一般拷贝一份需要花费5分钟左右的时间。拷贝时会将文件都放在缓存中,在遇到系统资源不足等情况时容易出错。发布6台服务器耗时往往超过半小时,在此期间用户无法正常使用系统,给用户带来非常不好的体验。
问题三:拷贝一旦开始,程序无法监测拷贝是否完成,更新人员无法获得更新结果的反馈。
(2)方案二
目前选用的方案。将发布好的站点文件上传到数据库。然后,各台服务器利用本地的发布站点从数据库获取文件然后在本地站点中创建。
相比方案一,从Oracle数据库获取文件并在本地创建只需要给发布站点设置对应权限即可。并且,站点文件更新的速度比文件拷贝要快好几倍。通常100M的文件创建完只需要1分半钟的时间。由于Oracle数据库良好的性能,多台服务器同时获取文件几乎完全不会影响文件读取的速度。因此,多台服务器拷贝100多M大小的文件所花的时间一般都不会超过2分钟,大大缩短了站点更新的时间,很大程序上改善了用户的体验。此外,更新站点在从数据库读取站点的文件及创建文件时,一旦发生异常,程序都可以将错误信息记录到数据库中。这样发布人员就可以根据错误进行及时的处理。
3 系统的设计
系统分为三个部分,B/S结构的更新站点及C/S结构的更新程序以及文件上传程序。
3.1 B/S结构的发布站点
(1)自定义操作站点及应用池类:IISmanager。该类定义了3个静态函数来操作网站站点和IIS的应用程序池。分别是StartWebSite、StopWebSite、RecyclePool,其中StartWebSite和StopWebSite 函数负责站点的启用、停止操作,RecyclePool函数负责程序池的停止、启用及回收操作。
(2)使用递归的方法,删除站点目录下所有文件。函数名称:DeleteFile。
从数据库读取该站点所有文件的路径及文件内容,根据文件路径动态创建各个文件。创建文件函数CreatrFile。调用该函数需要两个参数,文件路径和文件内容。文件内容以二进制流的方式创建。创建步骤如下,首先需要定义文件流:
FileStream fs = new FileStream(ls_path, FileMode.Create)。然后定义二进制流,BinaryWriter bw = new BinaryWriter(fs); 最后将该文件使用方法bw.Write(file) 写出来。
B/S发布站点是自动更新系统的最核心部分。是架设在需要发布网站的应用服务器上的一个站点,主要负责本服务器站点文件的更新。更新程序时,该站点根据参数确定需要更新的站点,调用.NET提供的IISmanager类对需要更新站点的应用池进行回收并停止。然后,将站点下面的文件全部删除。从数据库下载最新的程序文件并在站点路径下生成文件。生成文件完成后,最后重新启动应用池并将更新日志写入到数据库。更新出错时也将更新日志写入到数据库。
3.2 C/S结构的更新程序
(1)负责更新前后站点更新提示的操作
操作者输入用户名及密码,点击开启更新提示或者关闭更新提示,程序后台会通过发包的形式,自动登录需要更新的站点,并开启站点的中原先设计好的更新提示功能。开启提示之后,系统会每隔一分钟弹出系统公告提醒用户保存好手头工作。
(2)根据用户选择的需要更新的站点,调用B/S的站点对站点文件进行更新。每隔3秒钟从系统获取本日最新的更新日志,并利用webbrowser控件将本日所有服务器的更新情况显示出来。用户还可以对任何应用、任何时间的更新日志进行查询。
3.3 文件上传程序
上传程序主要由以下几个功能:
(1)各个应用程序文件的上传。用户可以选择需要上传的应用,然后填写本地文件所存放的路径。最后点击上传就可以将所远应用的文件上传至数据库。
(2)用户还可以根据文件名查找已上传的文件,并可以点击查询结果中的文件名来查看文件的内容。还可以在选择上传形式为单个文件替换来替换该文件。
(3)可以选择要下载的应用,并填写下载路径,从数据库中下载该应用文件。
4 总结
自动更新系统的应用不但节省了文件拷贝的时间,避免了手工误操作可能导致的各种错误。并且在更新时,用户可以实时查看到更新的状态。一旦发生更新错误,用户可以及时发现并采取相应的措施。该系统的应用大大提高了多台服务器站点文件更新的效率,减轻了网站程序维护人员的工作量。
[责任编辑:杨玉洁]