文章目录
微服务架构概念
微服务与SOA的区别
SpringBoot
约定优于配置理念下的一个产物。
1、只要依赖的spring-boot-starter-web的jar,就会自动内置一个tomcat容器。(Tomcat也可以替换成其他web容器)
SpringBoot默认支持4种web容器。
Tomcat、Jetty、Undertow是基于Servlet,
Reactor基于Netty。
2、项目结构
默认提供了配置文件application.properties
3、starter启动依赖 - 如果是一个webstarter ,默认认为你是去构建一个spring mvc的应用.
SpringBoot应用
SpringBoot和微服务
SpringBoot核心特性及设计思想
核心特性:
1、EnableAutoConfiguration 自动装配
2、Starter 启动依赖 依赖于自动装配的技术
3、Actuator 监控 , 提供了一些endpoint ,可以http、jmx形式去进行访问, health信息。 metrics 信 息、 。。。
4、Spring Boot CLI(命令行操作的功能, groovy脚本)
客户端可以通过groovy脚本快速构建一个SpringBoot应用。
Spring 注解驱动的发展过程
Spring 注解驱动的发展促进了SpringBoot的诞生。
Spring 的动态Bean的装载
ImportSelector: DeferredImportSelector
Registator : ImportBeanDefinitionRegistrar
来实现自动装配扫描配置。
SpringBoot设计思想
true可以阻断maven传递依赖。
SpringBoot Starter组件
Actuator(监控)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
健康检测
默认请求localhost:8080/actuator/health,会返回
{
status:“UP”
}
Metrics(非常有用)
默认请求localhost:8080/actuator/metrics
JVM(垃圾收集器 / 内存/堆)
系统(运行时间、平均负载、处理器的信息)
线程池信息
tomcat会话信息
Pheuthous / Grafana(图标展示)
Actuator有两种形态的监控
http(web)
jmx
JMX(Java Management Extensions)
JMX全称是Java Management Extensions。 Java 管理扩展。 它提供了对Java应用程序和JVM的监控和管理功能。通过JMX,我们可以监控
- 服务器中的各种资源的使用情况,CPU、内存
- JVM内存的使用情况
- JVM线程使用情况
SpringBoot的信息 可以发布到 Prometheus+Grafana
Prometheus普罗米修斯
开源的监控系统 。
数据采集 : http://localhost:8080/actuator/prometheus time-series 存储metrics
可视化 : http://locahost:9090
安装Prometheus
1、下载Prometheus
2、tar -zxvf prometheus-2.19.1.linux-amd64
3、修改prometheus.ym,增加需要监控的应用节点。
scrape_configs:
# The job name is added as a label `job=<job_name>` to any timeseries
scraped from this config.
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
static_configs:
- targets: ['localhost:9090']
- job_name: 'spring-actuator'
metrics_path: '/actuator/prometheus' scrape_interval: 5s
static_configs:
- targets: ['192.168.8.174:8080'] #需要监控的应用节点
job_name:任务名称
metrics_path: 指标路径 targets:实例地址/项目地址,可配置多个 scrape_interval: 多久采集一次 scrape_timeout: 采集超时时间
执行 ./prometheus --config.file=prometheus.yml 启动prometheus应用,访问:http://HOS T_IP:9090
Spring Boot集成
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
一旦你增加上述的依赖,Spring Boot会自动配置一个 PrometheusMeterRegistry 和 CollectorRegistry 来收集和输出格式化的metrics数据,使得Prometheus服务器可以爬取。
所有应用的metrics数据是根据一个叫 http://localhost:8762/actuator/prometheus 的endpoint 来设置是否可用。
prometheus: {
href: "http://localhost:8762/actuator/prometheus",
templated: false
}
Prometheus服务器可以周期性的爬取这个endpoint来获取metrics数据。
安装Grafana
下载Grafana
wget https://dl.grafana.com/oss/release/grafana-7.0.3-1.x86_64.rpm
sudo yum install grafana-7.0.3-1.x86_64.rpm
启动Grafana, service grafana-server start
访问Grafana , http://localhost:3000 , 默认的帐号密码 admin/admin
Grafana的配置
菜单选择 Configuration -> Data Source -> Add Data Source
配置Prometheus作为数据源