课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
在一个java程序中,如果所有的代码都是散乱的,或者是说是暴露在外的,那么他的程序很容易会被其他的程序员针对性的研究出仿照版本或者是攻击的木马程序,所以,为了保障我们java程序的安全,是需要对程序的核心内容进行包装闭合的。
你曾经因为部署/上线而痛苦吗?你曾经因为要去运维那改配置而烦恼吗? 在我接触过的一些部署/上线方式中,曾碰到过以下一些问题:
1、程序代码和依赖都是人工上传到服务器,不是通过工具进行部署和发布;
2、目录结构没有规范,jar启动时通过-classpath任意指定;
3、fat jar,把程序代码、配置文件和依赖jar都打包到一个jar中,改配置文件太费劲;
4、不管是非web应用还是web应用都部署到web容器环境,如Tomcat;
5、web应用还需要先在服务器上安装好环境(如装Tomcat)才能部署,想升级版本或者换个容器太难了;
6、线上参数修改还需要找运维,痛苦。
还有如没有自动部署平台,回滚到上一个版本那可真是天方夜谈;增量包而非全量包,无法自由在在的回滚;前端代码直接覆盖而非版本化,难快速回滚,出问题要清理CDN,痛苦;ngx_lua项目时不按照项目的方式部署,在服务器上随意修改代码,导致某些服务器忘记修改或者版本不一致,排查问题太痛苦。
还有很多部署中不好的方式,但是本文只关注闭环Java应用带来的好处。首先介绍下应该如何部署应用,然后介绍下什么是闭环Java应用,它的好处和如何搭建。
应该如何部署应用
项目中应该包括了所有要执行的代码、启停脚本,比如非web应用
打包应用后,会按照相应的目录结构构建。如果项目使用maven,可以使用maven-assembly-plugin进行按照相应的目录结构构件。
即项目、打包的应用要按照统一的风格来实施。
自动部署系统
自动部署系统负责打包应用(比如执行mvn相应的命令即可)、抽包(从指定目录抽取要部署的代码,如target/nonweb-example-package目录)、部署代码(发布代码,将代码同步到宿主机器)、启停应用(配置指定的启停脚本并调用)。
自动部署除了这些功能外,应该还有如发布历史管理(回滚)、分组管理(如不同机房不同的配置文件)、配置管理(如要修改启动/停止脚本、修改配置文件[不同机房不同的配置]、参数管理[如jvm参数等])等。
宿主机器
即代码部署到的机器,它应该只安装最小化环境,如只需要装JDK即可,像Tomcat是不需要安装的,由应用决定使用哪个容器。
通过增加自动部署系统可以更好的进行项目的统一发布、管理和回滚。
闭环Java应用
闭环Java应用指Java代码、容器、配置文件、启停脚本等都在同一处维护,修改配置文件、修改环境参数、更改容器类型等都不需要到宿主机器上进行更改。 宿主机器只提供基本运行环境,如仅部署JDK环境即可,不需要部署如Tomcat容器,需要什么容器,都是在Java应用中指定。
这样的好处是配置文件修改、JVM参数修改、容器的选择都可以在Java应用中配置,形成闭环。
闭环Java应用的目的主要是让Java应用能自启动,这样程序的控制权就在我们手里,而不是运维手里。而我们更懂我们的程序。
随着微服务概念的流行,spring boot也受到大家的热捧。spring boot能帮助我们快速构建基于spring的应用;其能方便创建自启动应用、可以嵌入各种容器(如Tomcat、Jetty)、提供了一些starter pom用于简化配置文件、自动化配置(只需要引入相关的pom,就自动获得了某些功能)等。
达内时代科技集团致力于培养面向电信和金融领域Java、C++、C#/.Net、3G/Android、3G/IOS、PHP、嵌入式、软件测试、UID、网络营销、网络工程、会计、UED、web、Unity3D、大数据、童程童美等17大方向中高端软件人才课程与少儿教育课程。选择太原达内培训,不再孤军奋战,轻轻松松做IT高薪白领。太原达内培训带领有明确目标的学子迈向成功之路!想找工作的求职者可以加QQ:3373924515(太原达内就业服务部)咨询了解。