微服务框架(6)----基于SpringBoot2.0版本框架-基于SpringBoot2.0版本框架-监控中心

SpringBoot监控中心概述

  • SpringBoot的监控中心针对了微服务服务器的监控,服务器的内存变化(堆内存,线程,日志管理等),检测服务配置连接地址是否可用(模拟访问和懒加载的情况下,用到的时候才会连接,到时候配置错误就会报错,MyBatis是懒加载的,JPA不是),针对现在有多少个bean(spring中管理的对象),统计SpringMVC的映射数量,即统计有多少个@RequestMapping,就是说统计HTTP接口
  • SpringBoot提供了两种监控中心
  1. Actuator:该监控中心没有界面,返回的时候JSON格式的数据
  2. AdminUI:底层使用了Actuator监控中心,在得到数据的基础上做了可视化界面
  • 一般是使用在生产环境上的
  • Actuator是SpringBoot的一个附加功能,可以帮助你在应用程序生产环境时监控和管理应用程序。缺点就是没有可视化界面

搭建Actuator监控中心

  • 默认开启三个接口:
    (1)/actuator
    (2)/actuator/info
    (3)/actuator/health
    但是这三个接口只能查到最基本的信息,所以我们需要在application.properties中开启监控,监控更多的信息。
  • 启动SpringBoot的时候,日志中会打印所有的接口信息
  • SpringBoot2.0部分的监控中心地址改变,2.0之后所有的监控中心地址都要加上/actuator

如:

  • 2.0之前访问/beans可以访问到所有的bean有哪些
  • 2.0之后必须访问/actuator/beans才可以访问到所有的bean有哪些
  • 引入maven文件
<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.0.RELEASE</version>
	</parent>
	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>

	</dependencies>

Mysql测试依赖信息
<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.1.1</version>
		</dependency>
		<!-- mysql 依赖 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

  • 引入yml文件
###通过下面的配置启用所有的监控端点,默认情况下,这些端点是禁用的;
management:
  endpoints:
    web:
      exposure:
        include: "*"
spring:
  profiles:
    active: prod
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test
    username: root
    password: root
itmayiedu: 
   name: yushengjun

Actuator监控接口

  • /actuator/mappings可以监控到当前SpringBoot中有多少个接口,即由多少个@RequestMapping,监控HTTP接口的数量
  • /actuator/beans查看当前SpringBoot中有多少个Bean,以及其详细信息
路径作用
/actuator/beans显示应用程序中所有的Spring Bean的完整列表
/actuator/configprops显示所有的配置信息
/actuator/env陈列所有的环境变量
/actuator/mappings显示所有的@RequestMapping的url列表
/actuator/health显示应用程序运行状况信息,UP表示成功,DOWN表示失败
/actuator/info查看所有在application配置文件中的应用信息
  • 举例/actuator/info在application配置文件中的写法
info:
  itmayiedu: yushengjun
  addres: www.itmayiedu.com

AdminUI原理

  • 将所有服务的监控中心管理存放在adminUi平台上
  • 比如:
    在这里插入图片描述
    (1)将会员服务和订单服务的内部集成Actuator监控应用注册到AdminUI平台上
    (2)AdminUI用来展示所有注册过来的服务的Actuator监控信息
    AdminUI就是类似于注册中心
  • 注意
  1. 我们需要在各自的服务上开放Actuator权限(如会员服务,订单服务)
  2. AdminUI其实就是个注册中心,他是没有必要进行开放权限的,因为我们访问的是注册到该上面的其他服务的信息,并不访问他自己的信息,就好比Eureka的注册中心一样,注册中心不需要服务的发现,只让其做一个注册中心,Server的作用。

搭建AdminUI

  1. 搭建AdminUI的Server端,即搭建注册中心
  2. 搭建AdminUI的客户端
  • 补充:有可能maven仓库不支持部分JAR包的下载,需要替换版本,如json-simple的1.1.1版本就不支持下载,需要规定版本号,将其版本号改为1.1版本

  • 搭建AdminUI-Server服务端,相当于是注册中心
    (1)pom

<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.0.RELEASE</version>
	</parent>
	<dependencies>
		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-server</artifactId>
			<version>2.0.0</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-webflux</artifactId>
		</dependency>
		<!-- Spring Boot Actuator对外暴露应用的监控信息,Jolokia提供使用HTTP接口获取JSON格式 的数据 -->
		<dependency>
			<groupId>org.jolokia</groupId>
			<artifactId>jolokia-core</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<dependency>
			<groupId>com.googlecode.json-simple</groupId>
			<artifactId>json-simple</artifactId>
			<version>1.1</version>
		</dependency>
	</dependencies>

(2)application.yml

spring:
  application:
    name: spring-boot-admin-server

这里的yml是服务端的,没有必要监控服务端的所有的监控节点
(3)启动类

@Configuration
@EnableAutoConfiguration
@EnableAdminServer
public class AdminServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(AdminServerApplication.class, args);
	}
}

  • 搭建Admin-UI-Client,搭建客户端,搭建客户端的时候需要注册到服务端,并且监控客户端的所有节点
    (1)maven依赖
<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.0.RELEASE</version>
	</parent>
	<dependencies>
		<dependency>
			<groupId>de.codecentric</groupId>
			<artifactId>spring-boot-admin-starter-client</artifactId>
			<version>2.0.0</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>
		<dependency>
			<groupId>org.jolokia</groupId>
			<artifactId>jolokia-core</artifactId>
		</dependency>
		<dependency>
			<groupId>com.googlecode.json-simple</groupId>
			<artifactId>json-simple</artifactId>
			<version>1.1</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
	</dependencies>

(2)application.yml配置文件

spring:
  boot:
    admin:
      client:
        # 服务端的注册地址
        url: http://localhost:8080
server:
  port: 8081
  
management:
  endpoints:
    web:
      exposure:
        # 开启监控权限,监控所有的节点信息
        include: "*"
  endpoint:
    health:
      show-details: ALWAYS

  • 启动类
@SpringBootApplication
public class AppClinet {

	public static void main(String[] args) {
		SpringApplication.run(AppClinet.class, args);
	}

}

SpringBoot2.0整合Mybatis的分页插件–PageHelper

  • PageHelper支持常见的12种数据库
  • 配置文件POM
<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.0.0.RELEASE</version>
	</parent>
	<dependencies>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		<!-- 测试 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.1.1</version>
		</dependency>
		<!-- mysql 依赖 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>
		<!-- springboot-web组件 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<!-- springboot 整合 pagehelper -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper-spring-boot-starter</artifactId>
			<version>1.2.5</version>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.7</version>
		</dependency>
	</dependencies>

  • 配置文件application.properties
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver


logging.level.com.example.demo.dao=DEBUG
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
pagehelper.page-size-zero=true

  • PO层
@Data
public class User {

	private Integer id;
	private String name;
	private Integer age;
}

  • Mapper层
public interface UserMapper {
	@Select("SELECT * FROM USERS ")
	List<User> findUserList();
}

  • Service层
@Service
public class UserService {
	@Autowired
	private UserMapper userMapper;

	/**
	 * page 当前页数<br>
	 * size 当前展示的数据<br>
	 * 作者: 每特教育-余胜军<br>
	 * 联系方式:QQ644064779|WWW.itmayiedu.com<br>
	 * 
	 * @param page
	 * @param size
	 * @return
	 */
	public PageInfo<User> findUserList(int page, int size) {
		// 开启分页插件,放在查询语句上面
		PageHelper.startPage(page, size);
		List<User> listUser = userMapper.findUserList();
		// 封装分页之后的数据
		PageInfo<User> pageInfoUser = new PageInfo<User>(listUser);
		return pageInfoUser;
	}

}

  • Controller层
@RestController
public class IndexController {
	@Autowired
	private UserService userService;

	@RequestMapping("/findUserList")
	public PageInfo<User> findUserList(int page, int size) {
		return userService.findUserList(page, size);
	}

}

  • 启动类
@MapperScan("com.itmayiedu.mapper")
@SpringBootApplication
public class PageHelper {

	public static void main(String[] args) {
		SpringApplication.run(PageHelper.class, args);
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值