
Java
在以往的
Java项目里,常常存在前后端混编的现象。就拿tomcat项目来说,其中既包含
Java代码,又有
JSp。在这种情形下,通常会使用打包工具将项目打成war包,当时比较流行的打包工具是ant,之后把打好的包部署到tomcat或者websphere等
服务器上,启动
服务器后项目就能运行了。如今,前后端分离已经成为常态,所以后端项目往往只包含
Java代码。在这种情况下,可以利用maven或者gradle之类的工具把项目打成jar包。要是小项目的话,能够手动将jar包复制粘贴到
linux的某个路径下,然后启动项目。一般来说,
Spring boot项目会自带tomcat,只要运行启动类就能启动项目了。要是项目比较正规,就会引入jenkins或者udeploy等自动部署工具,这个流程被称为ci/cd,也就是自动化集成部署,就是把打成jar包、复制到
服务器路径以及启动这些操作的代码通过jenkins整合起来。另外要提到的是,docker是一种容器。例如在
Windows系统里安装docker工具,然后启动一个docker容器,这就相当于一个
linux服务器,可以在里面放置jdk或者是项目打成的jar包,并且能在这个docker容器里启动项目。不过,在docker容器里,通常不会放置数据库或者其他需要持久化的组件,比如nacos等。毕竟docker容器不像数据库
服务器那么稳定,一旦docker容器失效,如果把
公司所有的业务数据存放在里面,就很可能导致数据丢失。当然,如果在docker里使用数据卷来存放数据,那其实也可以直接使用
MySQL等数据库。再深入一点说,k8s等是容器的管理工具。比如说,根据客户的需求,某个支付模块需要部署在3个服务节点上,每个节点需要使用2G内存,节点内部要进行负载均衡,对外要使用某种格式的url提供服务,而且访问请求要通过证书来验证。这里对外提供服务的jar包可以放在docker容器(可以理解为一个小型的
linux环境)里,而像设置内存这类操作就可以使用k8s来管理(更专业的说法是编排),程序员一般是通过编写各种yaml配置文件来指定多个docker节点(也就是集群)对内使用资源的情况以及对外提供服务的方式。现在如果是小
公司开发项目,一般会直接租用一个
linux服务器作为测试环境。项目完成之后和客户商量,通常也是租用云
服务器来部署项目,其中包含业务代码、数据库等资源。在这个过程中是否使用jenkins要根据
公司的具体情况来决定。