SpringBoot详细研究-04部署测试与监控
这部分的内容实际就是devops的主要工作内容,当然一名合格的程序要也需要掌握这部分的知识。


- 热部署
简单来说,在开发时,修改了任何的代码,IDE将自动编译运行及发布;在发布时,当前发布不影响线上服务的正常进行。
模板热部署:比如Thymeleaf,配置spring.thymeleaf.cache=false即可,那么页面随时更新。
开发热部署: Spring Loaded,在vm arg中添加 –javaagent: E:\xxx.jar -noverify; JRebel,热部署最佳工具,但是是收费的,不嗨森;spring-boot-devtools,最赞方案,只需添加到pom.xml即可。
- 常规部署
jar形式: mvn package, java –jar xx.jar, 通过在pom.xml中修改plugin配置即可。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
</plugin> 在linux的/etc/systemd/system/目录中新建cm-bootweb.service文件
[Unit]
Description=cm-bootweb
After=syslog.target
[Service]
ExecStart= /usr/bin/java –jar /var/apps/cm-bootweb-0.0.1.jar
[Install]
WantedBy=multi-user.target 启动服务: systemctl start cm-bootweb
停止服务: systemctl stop cm-bootweb
服务状态: systemctl status cm-bootweb
开机启动: systemctl enable cm-bootweb
项目日志: systemctl -u cm-bootweb
war形式:将生成的war放在合适的servlet容器上运行即可。
- 云部署(最帅选择)
主要的Paas平台都支持Docker镜像发布,通过编写Dockerfile来编译镜像,Dockerfile的指令如下表所示。
| 指令 | 阐述 | 
| FROM | 指明当前镜像继承的基镜像,编译时会自动下载,如FROM Ubuntu | 
| MAINTAINER | 指明镜像作者, MAINRAINER xionger | 
| RUN | 可以在当前镜像上执行linux命令形成新的层,RUN /bin/bash –c "echo helloworld" | 
| CMD | 指明启动镜像容器的默认行为, CMD echo "this is my first docker project" | 
| EXPOSE | 指明镜像运行时的容器必须监听的端口 | 
| ENV | 设置环境变量, ENV name=xionger | 
| ADD | 将当前工作目录的文件复制到镜像目录, ADD test.txt /mydir/ | 
| ENTRYPOINT | 让容器相同一个可执行程序一样运行,这样镜像运行时可以像软件一样接受参数执行 ENTRYPOINT ["/bin/echo"] docker run –d image_name "this is a rebirth" | 
安装docker, yum install docker, 启动运行, systemctl start docker
将jar包放在/var/apps/cm-bootweb目录,并将Dockerfile也放在该目录,文件内容为
FORM java:8
MAINTAINER xionger
ADD cm-bootweb-0.0.1.jar app.jar
EXPOSE 8083
ENTRYPOINT ["java", "-jar","/app.jar"]
之后编译镜像:docker build –t cm-bootweb . (.表示当前路径,cm-bootweb为镜像名称)
运行: docker run –d --name bootweb -p 8083:8083 cm-bootweb
这部分需要好好思考下,就是linux环境中是必须安装好java,maven等环境,还是直接打好jar包,直接发布。

Spring boot提供了运行时的应用监控和管理功能,可以通过http,jmx,ssh协议来操作,可以自动得到审计、健康及指标信息,常见的端点名如下。
| 端点名 | 描述 | 
| actuator | 所有EndPoint列表,需加入spring HATEOAS支持 | 
| autoconfig | 当前应用的所有自动配置 | 
| beans | 当前应用中所有bean的信息 | 
| configprops | 当前应用中所有的配置属性 | 
| dump | 当前应用线程状态信息 | 
| env | 当前应用环境信息 | 
| health | 当前应用健康状况 | 
| info | 当前应用信息 | 
| metrics | 当前应用的各项指标信息 | 
| mappings | 显示所有@RequestMapping映射的路径 | 
| shutdown | 关闭当前应用(默认关闭) | 
| trace | 显示跟踪信息(默认最新http请求) | 
通过http监控spring boot项目非常简单,只需添加如下依赖即可,之后访问对应项目即可(如果添加了安全,需要对应的actuator角色)。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.hateoas</groupId>
<artifactId>spring-hateoas</artifactId>
</dependency>
Tip:

通过该网站可以获取maven配置,http://mvnrepository.com/artifact/org.springframework.hateoas/spring-hateoas
定制端点:修改端点id,endpoints.beans.id=mybeans;关闭端点,endpoints.beans.enabled=false;定制端点访问路径management.context-path=/manage;定制访问端口management.port=8080, -1关闭。
自定义端点:通过继承AbstractEndpoint类并实现ApplicationContextAware接口,创建自定义的端点类并注册到spring即可。
自定义HealthIndicator: 常见的Indicator包括datasource, jms, diskspace, redis等。
jconsole来实现JMX监控,在cmd输入jconsole命令,然后选择项目,查看MBean中的org.springframework.boot中的Endpoint即可。
SSH监控,需要添加spring-boot-starter-remote-shell依赖,然后访问2000端口即可,常见命令包括help, metrics等,可以在配置文件中加入shell.auth.simple.user.name/password,此外还可以通过Groovy来编制命令,有机会试试。

测试:springboot在创建时会自动加上spring-boot-starter-test依赖,因此测试变得非常简单,只需在测试类上添加@RunWith(SpringRunner.class)和@SpringBootTest注解即可。
参考资料
- 汪云飞. Spring Boot实战[M]. 北京:电子工业出版社, 2016.
SpringBoot详细研究-04部署测试与监控的更多相关文章
- SpringBoot详细研究-05微服务与拾遗
		这将是SpringBoot学习系列的最后一篇文章,主要涉及Spring Cloud和JHispter两个知识点,都具有一定综合性,需要多加实践加强理解. Spring Cloud 微服务Microse ... 
- SpringBoot详细研究-02数据访问
		Springboot对数据访问部分提供了非常强大的集成,支持mysql,oracle等传统数据库的同时,也支持Redis,MongoDB等非关系型数据库,极大的简化了DAO的代码,尤其是Spring ... 
- SpringBoot详细研究-01基础
		Springboot可以说是当前最火的java框架了,非常适合于"微服务"思路的开发,大幅缩短软件开发周期. 概念 过去Spring充满了配置bean的xml文件,随着spring ... 
- SpringBoot详细研究-03系统集成
		据说杰克船长被黑客盗片了,看来信息安全依然任重而道远,本文以此为引子,来介绍下spring boot对于系统集成方面的支持. Spring Security提供一套安全框架,通过IOC和AOP来实现安 ... 
- 0109 springboot的部署测试监控
		springboot的部署测试监控 部署 基于maven 打包 JAR 打包方式一般采用的jar包,使用springboot的默认方式即可: 使用maven命令: mvn clean package ... 
- HDFS部署测试记录(2019/05)
		目录 HDFS部署测试记录 0.HDFS基础知识 1.基本组成结构与文件访问过程 2.NameNode启动时如何维护元数据 3.HDFS文件上传流程 1.系统环境 1.安装大致记录: 2.磁盘分区 3 ... 
- (40).  springboot + devtools(热部署)【从零开始学Spring Boot】
		我们之前在在()Spring Boot热部署[从零开始学Spring Boot] (http://412887952-qq-com.iteye.com/blog/2291518 )讲过通过使用spri ... 
- 一款类似loadRunner的优秀国产压力测试工具——kylinTOP测试与监控平台
		市面上流行的压力/负载/性能测试工具多是来自国外,近年来国内的性能测试工具也如雨后春笋般崛起,但大部分产品是基于Jmeter开源内核包装起来的性能测试工具,其中也不乏佼佼者,如:kylinTOP测试与 ... 
- 部署点评Cat监控项目(转)
		原文地址:http://www.bubuko.com/infodetail-986338.html 在项目中监控代码运行的状况,可以采用点评的Cat项目来监控整个项目,但是按照官方的文档来部署cat, ... 
随机推荐
- 风控模型-美国FICO标准
			python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ... 
- Tomcat权威指南-读书摘要系列7
			配置 conf目录下的主要配置文件 server.xml Tomcat主配置文件 web.xml servlet与其他适用于整个Web应用程序设置的配置文件,必须符合servlet规范的标准格式 to ... 
- ActiveMQ基础教程JMS概述
			什么是JMS JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息 ... 
- Kafka 温故(四):Kafka的安装
			Step 1: 下载Kafka > tar -xzf kafka_2.9.2-0.8.1.1.tgz> cd kafka_2.9.2-0.8.1.1 Step 2: 启动服务Kafka用到 ... 
- [整理]win7下VS2010遇到内存不足解决方发
			电脑重装Win7 64bit不久后,一天内VS2010使用久了,就会出现内存不足,实际内存使用情况却不是,显示内存已使用70%.以前没有遇到过,经网上查找,貌似是VS2010对内存计算会在某些情况下计 ... 
- iOS数据库操作之coredata详细操作步骤
			CHENYILONG Blog iOS数据库操作之coredata详细操作步骤 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微博http://weibo.com/ ... 
- Python 入门基础11 --函数基础4  迭代器、生成器、枚举类型
			今日目录: 1.迭代器 2.可迭代对象 3.迭代器对象 4.for循环迭代器 5.生成器 6.枚举对象 一.迭代器: 循环反馈的容器(集合类型) 每次重复即一次迭代,并且每次迭代的结果都是下一次迭代的 ... 
- linux下查看各硬件型号
			查看主板型号 # dmidecode |grep -A 8 "System Information"System Information 上网查DELL CS24-TY,找到说主板 ... 
- Petrozavodsk WinterTraining 2015
			PetrozavodskWinterTraining2015 A - Three Servers 题目描述:有\(n\)个数,将这\(n\)个数分成\(3\)堆,使得\(3\)堆中和的最大值减最小值最 ... 
- php里获取第一个中文首字母并排序
			需求里结算首页需要按门店的首字母A-Z排序.我的数据结构原本是这样的: Array ( [0] => Array ( [sid] => 2885842 [recetcstoredpay] ... 
