Initial commit
This commit is contained in:
@@ -0,0 +1,96 @@
|
||||
这是我的请求记录表:
|
||||
|
||||
对应的 mapper 等文件在:
|
||||
|
||||
`D:\MyCode\Work\yd-hy\ibs-plus\plus-service\src\main\java\com\cmcc\plus\gateway`
|
||||
|
||||
`D:\MyCode\Work\yd-hy\ibs-plus\plus-service\src\main\resources\mapper\gateway`
|
||||
|
||||
表结构:
|
||||
|
||||
```java
|
||||
@TableName(value = "gw_forward_record")
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class GwForwardRecord implements Serializable {
|
||||
/**
|
||||
* 记录ID
|
||||
*/
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long recordId;
|
||||
|
||||
/**
|
||||
* 请求UUID
|
||||
*/
|
||||
private String uuid;
|
||||
|
||||
/**
|
||||
* 请求时间
|
||||
*/
|
||||
private LocalDateTime requestTime;
|
||||
|
||||
/**
|
||||
* 接口路径
|
||||
*/
|
||||
private String requestUrl;
|
||||
|
||||
/**
|
||||
* 请求方法
|
||||
*/
|
||||
private String method;
|
||||
|
||||
/**
|
||||
* 目的地址
|
||||
*/
|
||||
private String targetEndpoint;
|
||||
|
||||
/**
|
||||
* 请求响应码
|
||||
*/
|
||||
private Integer httpCode;
|
||||
|
||||
/**
|
||||
* 链路追踪ID
|
||||
*/
|
||||
private String traceId;
|
||||
|
||||
/**
|
||||
* 网关地址
|
||||
*/
|
||||
private String gatewayEndpoint;
|
||||
|
||||
/**
|
||||
* 请求匹配的路由ID
|
||||
*/
|
||||
private Long routeId;
|
||||
|
||||
/**
|
||||
* 请求耗时(ms)
|
||||
*/
|
||||
private Integer costTime;
|
||||
|
||||
@Serial
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
}
|
||||
```
|
||||
|
||||
我现在有一个需求,需要给前端提供一个曲线图数据查询接口:
|
||||
|
||||
接口创建在 com.cmcc.plus.web.controller.gateway.GwForwardRecordController 下。
|
||||
|
||||
注意一定要保证代码执行效率。因为这是网关请求记录表,是一个量级非常大的表。
|
||||
|
||||
图中包含 5 条线:2xx、4xx、5xx、其他状态码(请求次数,对应表httpCode字段)、平均耗时(ms,对应表 costTime 字段)
|
||||
|
||||
我的图标左侧 Y 轴为 请求次数,右侧 Y 轴 平均耗时。下方 X 轴为时间坐标轴。
|
||||
|
||||
我想给我前端一个通用方法,查询某个时间段的这五个指标(也就是针对 requestTime 的过滤)。costTime(比如前端传 200ms-300ms 的查询)同时支持通过 requestUrl、method、targetEndpoint、httpCode、gatewayEndpoint 的过滤。
|
||||
|
||||
请仔细设计返回前端的结构体,做到最标准和效率。
|
||||
|
||||
仔细设计 requestUrl、targetEndpoint、gatewayEndpoint 是否可以使用模糊查询,前提是保证效率,因为这个表是一个非常大的表。
|
||||
|
||||
针对时间粒度。帮我提供时间区间内 5 分钟(例如 00:00:00 的数据就是 00:00:00-00:04:59),1小时,1天,一周,一月。时间粒度均为左闭右开。这个粒度根据前端选择进行聚合。不用一次全聚合出来。
|
||||
Reference in New Issue
Block a user