datealive(如何实现tomcat自动化部署)

  • A+
所属分类:轻松一刻

datealive,如何实现tomcat自动化部署?

可以使用 Jenkins 自动化部署项目,通过 Jenkins 部署来节省运维时间,不需要手动 cp 上线及版本发布。

Jenkins 是什么

Jenkins 是一款自包含的开源自动化服务,可用于自动执行与构建,测试和交付或部署软件有关的各种任务。

Jenkins 本身是用 Java 语言开发的,所以安装 Jenkins 的机器至少要有 JDK,另外建议Git、Ant、Maven、Gradle、Groovy等工具也一并安装好,方便与这些构建工具集成。

安装及启动

直接从官网下载最新的war包,然后解压到某个固定目录就算安装完成了,非常方便。

启动方法:java -jar jenkins.war 即可,如果要以后台进程的方式启动,改成 nohup java -jar jenkins.war & 即可,启动过程中,它会将 war 包解压到 ~/.jenkins 目录下,并生成一些目录及配置文件,有兴趣的同学可以自己进入这个目录研究一下。

更新及下载插件

启动成功后,浏览http://localhost:8080/ (如果不是安装在本机,localhost请自行换成服务器对应ip)

参考上图,进入 Manage Plugins 的界面,Jenkins 的很多功能都是借助 plugin 来完成的,首次启动时很多插件会提示已经过时,需要更新,建议升级成最新版本,同时建议安装以下插件,以方便支持 git 项目及向远程机器上传文件及执行远程 shell 命令。

插件升级完后,重启 Jenkins 以便让其生效。

系统配置

在正式创建部署项目前,还有几个关键参数要设置,如下图:

首先是 JDK

其次是 Ant、Maven参数

如果需要打包 Gradle项目,Gradle也要配置

对于 Git 托管的项目,Git 配置是不可少的

如果部署过程中,还需要运行 shell 脚本,以及通过 scp 向远程机器上传文件,则需要配置下面这些

注:上图中红色标 1 的地方,填写的是本机的ssh私钥证书,红色标 2 的地方为证书的访问密码,如果未设置证书密码,直接留空,Root Repository Path 为远程服务器的上传根目录,hostname 即为远程服务器的机器名称(或IP).

此外,还有一个强大的 publish over ssh,不仅能向远程服务器上传文件,还能远程执行服务器上的 Shell 脚本,可参考下面配置

跟 SCP 的参数设置类似,不过这个插件多出了一个 Test Configuration 的按钮,如果参数正确,点击该按钮后,会尝试连接到远程服务器,成功的话,会显示 Success.

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

java的就业方向有哪些?

JAVA就业方向:

刚就业的话可以做初级开发工程师,往上走就是中级高级工程师,需求工程师等。或者是成为管理人员,例如产品研发经理,技术经理,项目经理等。

这是一张职业发展生涯图,希望能帮到楼主。

根据IDC的统计数字,在所有软件开发类人才的需求中,对Java工程师的需求达到全部需求量的60%~70%。同时,Java工程师的薪水相对较高。 Java软件工程师一般月薪范围在4000-10000元,远远超过了应届毕业生月薪2500元的平均水平。

通常来说,有一年工作经验的Java高级软件工程师的薪酬大致在年薪10—13万左右。

java技术培训之后可以从事JSP网站开发、Java编程、Java游戏开发、Java桌面程序设计,以及其他与Java语言编程相关的工作,就业面非常广。

我们生活中好多所熟知的吃鸡、王者荣耀、LOL、淘宝、京东、外卖平台都是通过Java开发的,这也就涵盖了Java网站开发、游戏开发,方方面面都很广泛的!

分享我的自学线路图,希望能帮到大家:

此套视频分六大阶段,每一阶段都逐渐加深,此套教程已经整理的非常完善,各位学习者基本上按照此套流程,一阶段,一阶段学习来,肯定会入门,逆袭成为大牛。

第一阶段:

Java基础视频教程

1、毕向东老师的java入门教程

2、小白的福音java入门教程

3、java快速入门教程

此三个教程异曲同工,内容知识点相差不大,可以只学习其中一个哦!

第二大阶段:

Java教程

(1)轻松掌握JavaWeb视频教程

(2)6天玩转mysql视频教程

(3)超全面的JavaWeb视频教程

(4)阶段案例--JavaWeb网上图书商城完整

第三大阶段:

Java教程

(1)Hibernate5框架

(2)Struts2框架

(3)Spring框架

Spring2.5视频教程

第四大阶段:

知识点:

Java教程

(1)ORACLE经典视频教程

(2)Maven精品教程

第五大阶段:

Java教程推荐:

(1) Springmvc由浅入深全套视频教程

(2)Mybatis由浅入深全套视频教程

第六大阶段:

Java教程推荐:

(1)Java学科巴巴运动网视频教程106集

(2)巴巴运动网续集视频教程

具体配套视频有需要的小伙伴可以私信我,码字不易,有用请点赞分享一下吧!

一次完整的http请求过程是怎样的?

面试中常问的一个问题就是:在浏览器输入 URL 地址回车后,发生了什么?这里简单概述一下。

总体流程图如下:

1. URL 解析

浏览器首先对 URL 解析,解析出协议、域名、端口、资源路径、参数等。

2. DNS 域名解析

一般而言,域名比 IP 地址更好记,因而我们更习惯在浏览器输入域名而不是 IP,而计算机网络通信所识别的计算机标识是 IP 地址,因而首先需要将一个域名转化为相应的 IP 地址,这就是 DNS 协议所要做的事。

DNS 就像我们手机中的通讯录一样,通讯录中备注的是对方的姓名(类似于域名),但是打电话的时候实际需要的是电话号码(类似于 IP 地址),利用通讯录将一个姓名转化为对应的电话号码。

3. 建立 TCP 连接

一般在浏览器输入 URL,应用层的协议为 HTTP/HTTPS,其需要的是可靠的服务,所使用的传输层协议为 TCP。

通过域名解析后,浏览器获得了服务器的 IP,则向服务器发起 TCP 连接,这时候就会发生三次握手行为。

4. 发送 HTTP 请求

当浏览器与服务器建立连接后,就可以进行数据通信过程,浏览器会给服务器发送一个 HTTP 请求报文,请求报文包括请求行、请求头、请求空行和请求体。在请求行中会指定方法、资源路径以及 HTTP 版本,其中资源路径是指定所要操作资源在服务器中的位置,而方法是指定要对这个资源做什么样的操作。

从浏览器输入 URL,资源路径在第一步就已经被解析出来了,而方法为 GET,表明要获取资源,相当于增删改查中的查询。

5. 服务器对请求进行处理并做出响应

当收到浏览器发送的请求报文后,服务器会对此请求报文进行相应的处理,并返回响应报文给浏览器。比如请求报文想要获取(GET) index.html 这个文件,那么服务器就会找到 index.html 文件,然后将此文件作为响应报文中的响应体发送给浏览器。

响应报文包括响应行、响应头、响应空行和响应体。在响应行中会指定 HTTP 版本、状态码和对状态码的解释信息,比如 HTTP/1.1 200 OK ,其中 200 是响应码,指请求被正常处理,也就是成功 OK 的意思。

6. 浏览器解析渲染页面

浏览器收到服务器的响应报文后,从响应体中得到相应资源,如 HTML 文件、图片、视频等,并进行渲染,然后将结果呈现给用户。

7. 断开 TCP 连接

当数据完成请求到返回的过程之后,根据请求/相应头中 Connection 的 Keep-Alive 属性可以选择是否断开 TCP 连接,如果不需要再进行数据通信,即可以关闭连接,此时则会发生四次挥手行为。

注意:

浏览器为了提升性能,在 URL 解析之后,实际会先查询是否有缓存,如果缓存命中,则直接返回缓存资源。如果是 HTTPS 协议,在建立 TCP 连接之后,还需要进行 SSL/TLS 握手过程,以协商出一个会话密钥,用于消息加密,提升安全性。

如何去实现一个分布式定时任务?

虽说有现成的框架可以实现,不过还是一步一步地说一下思路。

需求

为方便大家的理解,先给大家讲一个真实的需求,这是我在第二家公司的一个项目,定时任务每天凌晨执行,需求很简单:把原始的业务数据,加工处理成待发送的短信。

原始数据:姓名-小明,所在地-北京,电话-13800000000,账单最后还款日期-2018年4月30日。

加工后的数据是:亲爱的小明,您的账单最后还款日期为2018年4月30日,请提前缴费。然后把需要把这条短信发送到13800000000这个手机号上。

定时任务

定时任务框架里面,最有名的就是quartz了,相信大部分Java程序员都用过。

我们项目最开始也用的是quartz,只有一个服务器跑定时任务。但是待处理的数据越来越多,定时服务执行的时间也越来越长,终于有一天,定时任务从晚上跑到了第二天白天也没有跑完,耽误了短信的发送。

改造后的定时任务

有人就有疑问了,能不能直接把定时服务部署多套不就行了。但是部署多套quartz的话,就会出现问题:待处理的任务有可能会被重复执行。

应对这种问题,我们当时有两种处理方案:

方案一:定时服务只部署一套,但是定时任务的工作只是提取待处理的任务。

实际的业务处理服务集群化部署,然后由定式服务提取数据后,发送给业务处理服务器进行实际的处理。

方案二:这个是我当时自己想出的一个奇葩的方法,不过这个方案想明白了,对分布式定式服务的理解很有帮助!

定时任务程序部署多套,并且多套环境都是独立的IP。每套程序定时将IP写入到数据中(一分钟对表update一次,并更新时间戳)。多套服务选举出一台主服务器。主服务器把所有的待处理任务,尽可能平均分配给每一台服务器。(IP和待处理任务对应上,也就是每一条待处理任务只能让分配的IP处理)处理任务的时候,只处理自己IP对应的任务。一台服务器挂了,主服务器负责把它的IP从数据库中抹掉(三分钟没有对表进行更新的IP,删除掉),并重新分配这个IP对应的待处理任务。主服务器挂了,重新选举出主服务器。分布式定时任务框架

我只用过Elastic-job,所以只给大家介绍一下这个框架。

任务分片:把一个任务拆分成几个独立的任务,然后由分布式服务器分别执行一个或者多个子任务。比如还是上面那个需求,那么可以按照【所在地】拆分任务,北京的待处理数据是一个子任务,天津的待处理数据是第二个子任务。

Elastic-Job并不直接提供数据处理的功能,实际的数据处理还是需要自己写,Elastic-Job会将分片任务分配到各个运行中的作业服务器。

其实发现了没有,Elastic-Job做的工作,就是我那个主服务器做的任务分配的工作,把所在地=北京的,分配给服务器1处理,把所在地=天津的,分配给服务器2处理;甚至包括监控每台作业服务器是否存活,挂掉一台重新分配待处理任务,也都是Elastic-Job来做的。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

  • 我的微信公众号
  • 扫一扫关注
  • weinxin
  • 我的新浪微博号
  • 扫一扫关注
  • weinxin
小辉博客

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: