平台软件部署总结

平台软件部署总结

背景

最近接到了一个工作,就是有一个庞大的系统,大概约有16个大的功能项,每一个功能项都有而很多不同部署包,有jar,有zip,有war 等等,依赖有JDK,mysql,nginx,还有一些其他的通用依赖包,复杂且繁杂,部署的很痛苦
部署过程也遇到了一个个的问题,都记录一下

问题及建议解决方法

1) 软件整体上层设计缺失

我部署的这些软件包,都是很多团队,经过4-5年积累下来的,并且开发团队人员都有离职,这个其实非常常见,每个公司都可能遇到,
这就导致了非常大的问题,顶层没有设计,整体部署没有任何规划,全部都是散落着状态,想我这种介入部署的人,就非常摸不着头脑,导致很割裂,总有一种没有彻底完成一件事的感觉,没有信心这个事已经全部正常完成

解决建议
  1. 需要一个整体的组件流程 流转以及依赖的模型图,指明各组件之间的依赖关系,从而体现出部署组件的顺序关系
  2. 就是要对各个部署包,要有一个整体的部署路径的规划,包路径,配置文件路径,都要清晰,并且能够在一个地方,轻松找到
  3. 数据库或者账号的命名上要统一去指定,像这种并没有特定的,需要确定一个,不需要建议,直接指定,因为并没有自由化的必要,反而会造成在不同的地方,数据库命名不同,导致混乱,就像我们安装mysql的时候,mysql从来不会问你,初始化数据库,叫什么名字一样
  4. 针对依赖公共组件的版本,需要指定,或者对应版本要有不同的版本,否则会导致,版本不一致,引起各种初始化的问题,并且很难排查,耽误时间
  5. 配置文件的问题,我遇到的配置文件,就是一大堆配置文件,200+ 行的配置文件,需要更改的,不需要更改的,统统在一个文件里,没有主次,或者不需要修改的,干脆就不要暴露出来,直接把需要修改的放入一个配置文件里,其他在另外一个,这样做能大大减少配置错误的可能性
  6. 还有一个就是,如果需要新建一个路径,如果是包内的,直接在程序里新建好,不要再部署的时候,再新建。如果确实需要新建的,比如需要在hdfs上新建,这样就直接把指令写好,写好对应的指令和对应的path
2) 数据库初始化脚本多库报错和不可重复执行

关于数据库初始化,单独拿出来,主要遇到几个问题,拿mysql来说

  1. 初始化存储过程,里面有跨库的脚本,但是数据库名总是不对,这个就很难受,简单的脚本倒是可以接受,复杂的就很难受,而且这种也算是顶层设计的不足了,可以用上面的指定数据库名来解决
  2. 初始化脚本不可重复执行,这点就是我更改了一部分的初始化脚本的内容,想要重新初始化的时候,发现,很难找到对应的表,又不可能全库全删的时候,就很难了,所以,初始化数据库脚本,建表create 语句一定要有对应的drop 语句,insert 语句也一定要有delete 语句
  3. 还有就是 关于初始化 event的 ,用的少,所以容易被人忽略,初始化event,一定要设置event自启动,set GLOBAL event_scheduler=1; 否则event是不会自动执行的
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值