zoukankan      html  css  js  c++  java
  • 远程安装软件控制台

    最近三个月来项目组一直在做这个项目,我也一直在看他们写的代码,现在梳理一下项目的流程。

    这是一个远程安装服务的控制台(javase ,web项目)。

    将软件需要的安装包远程复制到节点---》安装---》启动服务---》进行监控

    注意事项:

    前提准备:

    (1)远程调用命令最基本的,不用说(复制,解压,删除,遍历目录,查看文件内容)。

    (2)管理服务的命令(启动,停止,重启)。公司有个管理软件(像软件管家一样),对安装的服务进行管理,前提是要正确打包。

    (3)监控服务状态,zabbix监控

    项目展开:

    每个服务都有自己的安装包,要安装那些服务就激活那些服务的安装包:

    一、激活安装包:

    1>记录安装包的路径(class.getResource("/packages/").getFile())

    http://blog.csdn.net/lcj8/article/details/3502849(准确获得安装包的路径。)

    排除linux和windows路径问题:File.separator,java File类自动区分路径符号“/” 或“”

    2>记录配置文件的一切信息:(1)默认配置文件(及配置模板)的路径,(2)配置文件的配置内容(宏的起始终止位置,参数配置的信息)

    其中读取文件,json都是重复使用的技术。 json例子参见:http://blog.csdn.net/u010738184/article/details/49155013

    二、扫描节点 :

    利用远程调用的接口: 1>检查安装环境(linux,windows),是否可达  2>复制 管理和监控软件到远程。3>利用管理软件安装和启动监控软件。

    最后初始化数据库数据,将节点信息(扫描的信息)存入数据库。

    三、安装软件:

    1>检查安装环境  2>远程复制安装包 3>用管理软件安装并启动

    其中有很多小细节: 

       (平台不同则安装包不同,配置文件是否修改,是否新添进配置组等。)

    四、修改软件的配置文件,还有配置组的概念:

    1>要更改关联的数据信息。2>是否有配置组

    逻辑关系:前台传来的数据 :配置组 (配置文件修改,替换宏中的内容(读文件,写文件  json数据格式,替换更加方便)。)

    1>修改了配置 &&  传来的配置组为空  ---->直接将配置信息存入 配置实例表,不在配置组表中插入数据。

    2>修改了配置  && 传来的配置组不为空--->将配置信息存入 配置实例表,同时将组信息存入配置组表。

    3>没有修改配置-------------------------------->将配置信息存入配置实例表。

    注:由于配置组表与配置实例表的关系,此时在1步中,配置实例信息与配置组没有关联关系,则配置实例中的配置组id列没有数据,(可指定插入一个数值)

    (1)基于组来修改配置文件: -->将与组相关的所有配置文件所在的主机都进行修改,再重启服务

    (2)修改单个主机上的配置文件 :--->在本地替换配置文件中的宏再复制到远程,重新启动服务。

    (3)修改配置文件的组信息:   分为安装时修改||安装完成后修改。(步骤同上)

    五、监控,告警(这一部分还要深入看,以后再写)

    六、技术总结:

           这是我工作中的第二个项目(是大学毕业后的第一个项目),说实话,在前期开会时,他们说的这些操作流程,我真的完全没有概念,一直都是模模糊糊,不知道他们在说什么?也有很多名词都是第一次接触,他们说不懂就问,可是那时候,我好想什么都不懂,可是又不知道该问什么?就这样稀里糊涂开始了我的工作。带我的那个人给我分配了一小部分工作,让我看需求。我基本上一直在看需求。在前期,我们要写最基本的远程调用接口,然后是软件安装这一部分。

    1>我负责linux端远程调用函数的编码,主要用到jsch.jar,开始读源码,测试。

    这里学到了最基本的linux指令,ps,ls,df -h,tar。

    2>软件安装部分,软件状态的控制(启停,重启),软件卸载。

    学到的知识:

    java高级部分的知识,以前在学校这些都是别忽略的,在工作中却是经常用到的(有时会感觉学校教的 真是连皮毛都没有)。

    <1>java异常知识:异常怎样处理,try {} catch() { } ,catch (){} 中可以捕获异常-->自己消灭。抛出异常--->让系统处理

      throw new RuntimeException(e); 转换成unchecked异常。

    <2>java I/O流的操作,读写文件,json

    <3>java集合的知识,map ,map.entity();

    <4>java的多线程:run(){}

    Spring的一些知识:

    <1>Spring的事务处理 :@Transaction,DefaultTransactionDefinition def = new DefaultTransactionDefinition();
    TransactionStatus status = transactionManager.getTransaction(def); // 获得事务状态transactionManager.commit();

    事务在抛出异常后回滚。

    <2>Spring 的定时任务调度Quartz

    通过配置.xml,来定时执行类中的函数代码。(还有其他的方法,会继续研究)

    尚待努力:

    (1)数据库postgres: 

    (2)redis(键-值的存储,有时间会好好研究一下)

    (3)定时器(任务调度)

    (4)zabbix

    这是一些学到的知识和未学到的知识的总结。

    七、其他方面的总结:

       真心觉得技术架构工程师真不是盖的,依靠的是经验和能力,他们能够描绘项目的整个流程,对项目遇到的问题有整体的预测和把握,这是需要长期的项目积累实践而来的。

       要从多方面思考问题,多问几个为什么?理清思路再进行编码。



                    

           





    《未完待续》



  • 相关阅读:
    【jsp】怎么在jsp文件中引入静态文件(.js .css)
    【MyBatis】MyBatis之分页
    【MyBatis】MyBatis之如何存储NULL
    【MyBatis】MyBatis之如何配置
    【MyBatis】MyBatis之别名typeAliases标签的使用
    【Spring】SpringMVC之详解AOP
    【Spring】SpringMVC之REST编程风格
    【Spring】SpringMVC之上传文件
    【Spring】SpringMVC之拦截器
    【Spring】SpringMVC之异常处理
  • 原文地址:https://www.cnblogs.com/yeemi/p/7470178.html
Copyright © 2011-2022 走看看