Spring Cloud与Docker高并发微服务架构设计实施---微服务监控中心

发布时间 2023-08-29 15:37:19作者: 苏卡

在众多正在运行的微服务中,我们必须做到随时掌握每一个服务的运行情况及其健康状态,才能保证整个平台的稳定性和可靠性。使用Hystrix断路器仪表盘功能就可以创建一个监控中心,实现在线监控微服务的运行状态。(此处代码有待完善)

首先,在项目的配置管理中心中增加依赖配置

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>

创建一个启动程序

@SpringBootApplication
@Controller//创建了一个控制器,设定对主业的链接转发到“/hystrix”中
@EnableHystrixDashboard//启动路由器仪表盘功能
@EnableCircuitBreaker
public class HystrixApplication {
    @RequestMapping("/")
    public String home(){
        return "forward: /hystrix";
    }
    public static void main(String[] args){
        SpringApplication.run(HystrixApplication.class,args);
    }
}

创建应用的配置文件"application.yml"

server:
  port: 7979
endpoints:
  restart:
    enabled: true
  shutdown:
    enabled: true

使用“http://localhost:7979”可以打开监控中心的控制台

聚合服务监控管理中心

上面的监控中心能够单独针对每一个微服务进行监控。当需要监控不同的服务是,将切换不同的界面。创建一个聚合服务监控中心,可以在一个界面中同时监控多个微服务

新建一个模块,名字设定为base-turbine

引入依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-turbine</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bus-amqp</artifactId>
        </dependency>
    </dependencies>

创建启动程序

@EnableHystrixDashboard
@SpringBootApplication
@EnableHystrix
@Controller
@EnableTurbine//turbine监控聚合功能
@EnableDiscoveryClient//Eureka服务发现功能
public class TurbineApplication {
    public static void main(String[] args){
        SpringApplication.run(TurbineApplication.class, args);
    }
}

工程的配置文件“application.yml”

server:
  port: 8989
management:
  server:
    port: 8990
eureka:
  instance:
    lease-renewal-interval-in-seconds: 10
    non-secure-port: ${PORT:8989}
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
turbine:
  app-config: erueka//指定需要监控的服务
  aggregator:
    cluster-config: default
  cluster-name-expression: new String("default")

增加一个“bootstrap.yml”配置文件,连接配置管理中心

spring:
  application:
    name: turbine
  cloud:
    config:
      uri: http://localhost:8888
  rabbitmq:
    addresses: amqp://localhost:5762
    username: guest
    password: guest