项目概述

本项目旨在实现一个 MySQL 数据库监控资源管理系统,该系统能够添加、修改、删除、查询多个 MySQL 数据库资源,并实时采集其运行状态并进行展示。

业务规则

  • 可以创建、查询、修改、删除 MySQL 数据库资源配置信息;
  • 可以定时采集已配置的 MySQL 数据库资源运行状态数据并入库;
  • 可以查询 MySQL 数据库资源配置信息、运行状态数据信息及历史数据信息;
  • 数据采集频率默认为 30s,调度过程可选用 Spring Boot 自带注解定时任务或其他调度方案实现。

数据库资源信息

配置信息页面部分字段定义:

  • 资源标识:区分不同数据库监控资源唯一标识;
  • 资源名称:数据库监控资源名称,唯一;
  • IP 地址:数据库监控资源所在终端 IP 地址
  • 端口号:数据库端口号
  • 用户名:数据库用户名
  • 用户密码:数据库密码
  • 数据库实例名:数据库实例名称
  • 备注:提示信息

监控资源状态信息查询页面字段:

  • 资源标识:区分不同数据库监控资源唯一标识;
  • 资源名称:数据库监控资源名称,唯一;
  • IP 地址:数据库监控资源所在终端 IP 地址
  • 端口号:数据库端口号
  • 数据库实例名:数据库实例名称
  • 数据记录时间
  • 备注:提示信息
  • 数据库启动时间
  • 数据库运行时间
  • 当前连接数

技术实现

采用 Spring Boot MVC 分层架构实现,并使用注解实现定时功能。

接口设计

外部接口设计

  1. 添加数据库资源配置信息接口:

    • 请求方式:POST
    • 请求路径:/resources
    • 请求参数:
      {
          "resourceName": "数据库监控资源名称",
          "ipAddress": "数据库监控资源所在终端 IP 地址",
          "port": "数据库端口号",
          "username": "数据库用户名",
          "password": "数据库密码",
          "instanceName": "数据库实例名称",
          "remark": "提示信息"
      }
      
    • 响应状态码:200 OK
    • 响应结果:
      {
          "code": 200,
          "message": "添加成功"
      }
      
  2. 查询数据库资源配置信息接口:

    • 请求方式:GET
    • 请求路径:/resources
    • 响应状态码:200 OK
    • 响应结果:
      {
          "code": 200,
          "message": "查询成功",
          "data": [
              {
                  "resourceId": "资源标识",
                  "resourceName": "数据库监控资源名称",
                  "ipAddress": "数据库监控资源所在终端 IP 地址",
                  "port": "数据库端口号",
                  "instanceName": "数据库实例名称",
                  "remark": "提示信息"
              },
              ...
          ]
      }
      
  3. 修改数据库资源配置信息接口:

    • 请求方式:PUT
    • 请求路径:/resources/{resourceId}
    • 请求参数:
      {
          "resourceName": "数据库监控资源名称",
          "ipAddress": "数据库监控资源所在终端 IP 地址",
          "port": "数据库端口号",
          "instanceName": "数据库实例名称",
          "remark": "提示信息"
      }
      
    • 响应状态码:200 OK
    • 响应结果:
      {
          "code": 200,
          "message": "修改成功"
      }
      
  4. 删除数据库资源配置信息接口:

    • 请求方式:DELETE
    • 请求路径:/resources/{resourceId}
    • 响应状态码:200 OK
    • 响应结果:
      {
          "code": 200,
          "message": "删除成功"
      }
      
  5. 查询数据库资源状态信息接口:

    • 请求方式:GET
    • 请求路径:/status
    • 响应状态码:200 OK
    • 响应结果:
      {
          "code": 200,
          "message": "查询成功",
          "data": [
              {
                  "resourceId": "资源标识",
                  "resourceName": "数据库监控资源名称",
                  "ipAddress": "数据库监控资源所在终端 IP 地址",
                  "port": "数据库端口号",
                  "instanceName": "数据库实例名称",
                  "recordTime": "数据记录时间",
                  "remark": "提示信息",
                  "startupTime": "数据库启动时间",
                  "runningTime": "数据库运行时间",
                  "currentConnections": "当前连接数"
              },
              ...
          ]
      }
      

内部接口设计

  1. 添加数据库资源配置信息接口:

    • 方法名称:addResource
    • 方法参数:Resource resource
    • 方法返回值:void
  2. 查询数据库资源配置信息接口:

    • 方法名称:getAllResources
    • 方法参数:无
    • 方法返回值:List
  3. 修改数据库资源配置信息接口:

    • 方法名称:updateResource
    • 方法参数:String resourceId, Resource resource
    • 方法返回值:void
  4. 删除数据库资源配置信息接口:

    • 方法名称:deleteResource
    • 方法参数:String resourceId
    • 方法返回值:void
  5. 查询数据库资源状态信息接口:

    • 方法名称:getAllStatus
    • 方法参数:无
    • 方法返回值:List

代码示例

// Resource 实体类
public class Resource {
    private String resourceId;
    private String resourceName;
    private String ipAddress;
    private int port;
    private String username;
    private String password;
    private String instanceName;
    private String remark;
    // ... getter and setter
}

// Status 实体类
public class Status {
    private String resourceId;
    private String resourceName;
    private String ipAddress;
    private int port;
    private String instanceName;
    private Date recordTime;
    private String remark;
    private Date startupTime;
    private long runningTime;
    private int currentConnections;
    // ... getter and setter
}

// ResourceController
@RestController
@RequestMapping("/resources")
public class ResourceController {
    @Autowired
    private ResourceService resourceService;

    @PostMapping
    public ResponseEntity<Map<String, Object>> addResource(@RequestBody Resource resource) {
        // ... add resource logic
        return ResponseEntity.ok(Map.of("code", 200, "message", "添加成功"));
    }

    @GetMapping
    public ResponseEntity<Map<String, Object>> getAllResources() {
        // ... get all resources logic
        return ResponseEntity.ok(Map.of("code", 200, "message", "查询成功", "data", resourceService.getAllResources()));
    }

    @PutMapping("/{resourceId}")
    public ResponseEntity<Map<String, Object>> updateResource(@PathVariable String resourceId, @RequestBody Resource resource) {
        // ... update resource logic
        return ResponseEntity.ok(Map.of("code", 200, "message", "修改成功"));
    }

    @DeleteMapping("/{resourceId}")
    public ResponseEntity<Map<String, Object>> deleteResource(@PathVariable String resourceId) {
        // ... delete resource logic
        return ResponseEntity.ok(Map.of("code", 200, "message", "删除成功"));
    }
}

// StatusController
@RestController
@RequestMapping("/status")
public class StatusController {
    @Autowired
    private StatusService statusService;

    @GetMapping
    public ResponseEntity<Map<String, Object>> getAllStatus() {
        // ... get all status logic
        return ResponseEntity.ok(Map.of("code", 200, "message", "查询成功", "data", statusService.getAllStatus()));
    }
}

// ResourceService
@Service
public class ResourceService {
    // ... addResource, getAllResources, updateResource, deleteResource logic
}

// StatusService
@Service
public class StatusService {
    // ... getAllStatus logic
}

项目部署

  1. 将项目代码打包成 jar 包;
  2. 使用 Java 命令运行 jar 包;
  3. 配置数据库连接信息;
  4. 启动项目。

项目维护

  1. 定期更新代码,修复漏洞;
  2. 监控系统运行状态,及时处理异常;
  3. 扩展功能,满足新的需求。

项目总结

本项目通过 Spring Boot MVC 分层架构,实现了 MySQL 数据库监控资源管理系统的功能,并提供了清晰的接口设计和代码示例。该系统能够帮助用户有效地管理和监控 MySQL 数据库资源,提高工作效率和系统稳定性。


原文地址: https://www.cveoy.top/t/topic/pIRW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录