如何构建一个基于JAVA的自动发布系统

发布者: qingtian , 发布时间: 2013-06-07, 阅读量: 0 人次

什么是自动发布系统?我想先简单说一下我对这种系统需求的理解:

  • 通过可视化通用平台(如WEB浏览器)来实现系统发布、系统备份、系统回滚功能
  • 按服务类型进行集群任务规划和组织
  • 定义常用任务和限制不同用户拥有不同的任务操作级别
  • 一次操作,多机更新

此系统应用的前置硬件与网络要求:同一内网及相同的软硬件安装部署配置。

自动发布系统的需求其实来源于我日常工作的体会,相信很多人也遇到过与我类似的情况。例如我经常涉及WEB系统的部署更新,归纳下来就是以下几步:

  • 上传更新包到服务器(通过FTP、lrzsz、SCP等方式)
  • 解压并替换相关资源(image,css,js或.class文件)
  • 重启web容器(如tomcat等)

相信大家都和我有相同的一种感受:操作超级乏味,易出错,大量时间浪费在击打不同的linux命令中,重复性高。所以自动发布系统的需求迫在眉睫,我心中理想的部署过程是:

  • 选择更新服务范围(即集群中需要更新的机器)
  • 选择更新包并上传
  • 点击“开始部署”等待自动任务操作完成,过程中不断显示任务执行状态,最后响应部署结果(自动备份,更新替换资源,自动重启服务等)

目前我设想中自动发布系统整体组织包含以下内容:

  • 1台或多台web容器部署基于WEB的管理及操作界面(主要操作工作都基于此WEB系统)
  • 1台或多台zookeeper服务器(用于将部署相关的具体任务分发到不同机器,简单说可以是linux的命令,如cp,ftp,ps,kill等)
  • 不同实际服务所在机器运行一个后台进程,即zookeeper客户端(接收管理机分发的任务命令)和运行本地命令(如cp等)

具体架构图如下

自动发布系统架构图

主要三大部分

  • 自动发布WEB管理系统集群
  • zookeeper集群
  • 自动发布后台进程(驻留在各服务器上,每台服务器运行一个此进程,可同时操作多个此服务器上部署的服务【或应用】)

以上我和同事设想的自动发布系统的蓝图,暂未实现(正在计划适时实现基础DEMO并部署运行测试)。