`
infinite
  • 浏览: 42264 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

远程发布的设计和实现

阅读更多

远程发布的设计和实现

 

在实施门户部署时,部分客户会有内外网都要的需求,即内容信息维护在内网完成,内网用户可以通过内网直接访问门户,但同时需要加门户发布到外网,供Internet上用户访问,内外网的信息需要保持同步。

第一步需要将动态的门户页面全部发布成静态html页面(可参考我的另外一篇日志《门户站点静态发布的设计与实现》,访问地址:http://infinite.iteye.com/blog/390687);

第二步还需要将第一步发布出来的静态html页面以及相关的图片、jscss文件等远超发布到外网服务器,同时外网访问出于性能考虑,可能需要做负载均衡,还需要远超发布时能支持发布至多台外网服务器上。

以下具体讲述下第二步远程发布的设计思路和具体实现。主要将借助开源组织apachecommon-net.jar包的FTPClient类。

 

一、             编写远超发布配置信息文件

 

配置信息需要包含有外网服务器的ftp访问地址、用户名、密码,以及内网服务器需要上传至外网服务器的目录信息。格式如下:

 

<ftpServer url="192.168.0.31" userName="root" password="password">

<filePath localDir="d:/。。。/webapp/html" remoteDir="temp/html"/>

<filePath localDir="d:/ 。。。/webapp/core" remoteDir="temp/core"/>

<filePath localDir="d:/ 。。。/webapp/model" remoteDir="temp/model"/>

<filter-pattern>index,articleList</filter-pattern>

</ftpServer>

 

二、             解析配置文件,创建FTP连接

 

根据上面配置文件ftpServer的信息,可创建一个FTPClient连接。代码参考如下:

 

private void connect2FtpServer(String url, String user, String pwd) throws SocketException, IOException {

        this.ftp = new FTPClient();

        ftp.connect(url);

        ftp.login(user, pwd);

        int reply = ftp.getReplyCode();

        if (!FTPReply.isPositiveCompletion(reply)) {

            ftp.disconnect();

        }

        this.remoteRoot = ftp.printWorkingDirectory();

}

 

三、             上传文件(夹)

创建了FTP连接后,就可以利用该连接进行文件的ftp上传操作。这里有几点需要注意:

1、按本地上传的文件夹的目录结构,在外网服务器上对应的文件夹下创建一模一样的目录结构。

/**

  *  在上传文件夹的过程中,如果服务器的目标目录中和上传文件夹的目录有区别 则创建各级目录。

* @param remoteDir

* @param relativePath

*/

private void makeDirectory(String remoteDir, String relativePath) {

   try {

       ftp.changeWorkingDirectory(this.remoteRoot); // 先切换到根目录下

            relativePath = remoteDir + "/" + relativePath;

            String[] dir = relativePath.split("/");// 目录分级

            for (int i = 0; i < dir.length; i++) {

               if (!ftp.changeWorkingDirectory(dir[i])) {// 是否有子目录dir[i]

                    ftp.makeDirectory(dir[i]);

               }

               ftp]);.changeWorkingDirectory(dir[i

            }

     } catch (Exception e) {

          log.error("ftp服务器上创建相应目录时候出错", e);

     }

}

 

2、过滤掉无需重复上传的文件。如何过滤规则可以根据需要制定。比如,配置文件里可加入<filter-pattern>index,articleList</filter-pattern>的匹配配置,表示文件名包含index或者articleList字样的文件每次都要上传;还可以根据文件的最后修改时间来判断是否需要上传该文件(比如三小时内修改过的文件上传,其余不上传,可结合第四步的定时机制)。

 

指定好了上传目录,上传文件很简单,只需简单的调用FTPClinetstoreFile方法。可参考下面代码:

String fileName = file.getName(); // 本地文件名

FileInputStream input = new FileInputStream(file);

ftp.storeFile(fileName, input);

 

四、             定时远程发布到外网服务器

通过上面三个步骤,已经可以将内网服务器的文件顺利发布至外网服务器,但是我们还是需要做一定的优化。

首先什么时候触发远程发布。为了保证内外网信息实时同步,最理想的方式就是内网内容一更新,即触发远程发布,将更新内容发布至外网服务器。但这样导致的性能问题非常严重。因为存在多个内容维护的管理员,可能每个人都在做远程发布,这就需要多个ftp连接,非常耗费资源,且相互间还会影响彼此的上传速度。

针对上面问题,使用定时远程发布可以带来比较好的性能提升。这需要在本地(即内网服务器)上创建一个守护进程,由它不停的检测本地需要上传的目录,发现有更新且到达定时时间(比如15分钟),则启动远程发布。否则不启动。这样可保证始终只有一个ftp连接,多个管理员同时更新内容不会相互影响彼此上传速度。只不过这样一定程度上了牺牲内容的实时更新(会稍微有所延迟)。

2
0
分享到:
评论

相关推荐

    于基web的远程教学网站设计与实现--毕业设计.doc

    论文的主要内容包括远程教学系统的设计和实现、教学资源的共享和交换、教师和学生之间的互动等方面。通过本论文的研究,旨在提高教学的效率和质量,降低教学成本,提高学生的学习积极性。 关键词:远程教学;基于...

    代码版本远程发布程序

    它允许开发者配置一个设置文件,然后通过执行程序来指定待发布的代码路径,从而实现一键远程发布。这个工具对于频繁迭代更新的项目尤其有用,能显著提高工作效率,减少人为错误。 【自动发布】是现代软件开发中的一...

    基于嵌入式Linux的多线程远程监控系统设计与实现.pdf

    数据存储后,可以按需进行远程发布,供用户分析和决策。 【系统架构】 系统的整体设计采用模块化结构,主要包括数据采集模块、控制模块、Web服务模块和数据库模块。各个模块之间通过数据库进行数据交互,确保信息...

    智能远程控制校园无线广播系统的设计与实现

    首先,智能远程控制校园无线广播系统的设计目标是提升校园广播的效率与灵活性,实现精确、便捷的广播内容传输与控制。为了达到这一目标,系统集合了无线通信、音响技术和数字处理技术。通过这些技术的融合,系统能够...

    基于PHP和MYSQL的远程教育平台设计与实现.pdf

    【基于PHP和MYSQL的远程教育平台设计与实现】 远程教育平台是一种利用计算机技术和通信技术,打破时间和空间限制的新型教育模式。它强调开放性、灵活性和终身教育,以适应现代社会不同群体的学习需求。PHP和MySQL...

    本科生毕业设计开题报告(远程教育作业管理系统的设计与实现)

    管理员角色的设置主要为了实现系统的统一管理和维护,保证系统的平稳运行,包括发布系统公告、管理用户信息、分配权限等操作。教师角色则是系统的主体操作者,通过系统在线布置作业、批改作业以及在线答疑,极大地...

    基于web远程教学网站设计与实现设计-学位论文.doc

    基于Web的远程教学网站设计与实现旨在克服传统教学模式的局限性,利用互联网的优势,为学生和教师提供更加灵活、互动的学习和教学环境。 一、远程教学的优势 1. 灵活性:远程教学不受地理位置限制,学生可以在任何...

    美世-为远程工作设计员工体验-远程员工体验设计-2020.10-4页精品报告2020.pdf

    美世咨询公司在其发布的《为远程工作设计员工体验》报告中指出,员工体验在动荡时期显得尤为重要。充满活力的员工更有韧性,更可能留在公司并参与技能的再培训。员工体验成为企业在疫情期间需要重点关注的领域。报告...

    论文研究-基于GPRS远程电机监控系统的设计 .pdf

    远程监控系统设计中,GPRS网络是系统的关键组成部分,它将控制信息和反馈信息以IP数据包的形式通过Internet/GPRS网络进行传输,从而实现对终端设备的远程无线监控。 在本设计中,DTU(Data Transmission Unit,数据...

    毕业设计论文-网络远程作业处理系统毕业论文.rar

    论文的描述虽简单,但实际内容可能涵盖软件工程的多个领域,如需求分析、系统设计、数据库设计、编程实现、测试和评估。在阅读论文时,可以期待作者详细阐述这些方面的实践和经验。 至于提供的"更多毕业设计和论文...

    jenkins远程发布脚本

    在本场景中,"jenkins远程发布脚本"是指一个专门设计用来在Jenkins环境中执行远程操作的脚本,例如备份JAR包、启动服务、清理不再需要的JAR包以及根据名称关闭Java进程等。以下将详细介绍这些知识点: 1. **Jenkins...

    远程教育在线考试的设计与实现

    远程教育在线考试的设计与实现是当前教育信息化领域的重要研究课题,尤其在数字化时代,随着互联网技术的飞速发展,远程教育已经成为教育领域的热门趋势。本文将深入探讨如何设计并实施一个有效的在线考试系统,以便...

    单片机远程控制方案及基于互联网的实现方法

    标题和描述均提到了“单片机远程控制方案及基于互联网的实现方法”,这表明文章主要探讨了如何利用互联网技术实现对单片机的远程控制。以下是对这一主题的详细阐述: ### 单片机远程控制的核心概念 单片机...

    易语言远程发布公告

    易语言是一种专为中国人设计的...通过学习和实践“易语言远程发布公告”源码,开发者不仅能掌握易语言的基本用法,还能深入理解网络编程和远程通信的关键技术,这对于提升个人的编程技能和解决实际问题的能力大有裨益。

    面向Internet的CAD文件发布、管理系统设计与实现.pdf

    面向Internet的CAD文件发布与管理系统是基于网络技术,实现CAD文件在网络上的发布和...此外,该系统的实现和应用也为CAD领域的专业指导和技术交流提供了一个很好的平台,有助于推动CAD技术在互联网环境下的进一步发展。

    毕业设计-基于移动终端的远程教育直播系统设计与实现.zip

    【标题】基于移动终端的远程教育直播系统设计与实现 远程教育直播系统是现代教育技术在互联网时代的重要应用,尤其在移动终端上,它能够提供便捷、即时的学习体验。本项目是一个毕业设计案例,旨在创建一个高效、...

    远程登录与电子公告板

    除了基本的命令交互,远程登录还可能涉及文件传输、系统管理等多种任务,因此通常需要使用专门的远程登录应用软件,如PuTTY、SecureCRT等,这些软件提供了更友好的用户界面和额外的安全功能,如加密通信,以保护用户...

    基于Springboot+Vue在线远程考试系统的设计与实现源码案例设计带文档说明.zip

    本项目是一套完整的毕业设计案例,旨在实现一个基于Springboot后端框架和Vue.js前端框架的在线远程考试系统。该系统集成了完整的功能模块,包括用户管理、考试管理、试题管理、成绩管理等,为学生和教师提供了一个...

Global site tag (gtag.js) - Google Analytics