在微服务系统中统计API QPS,需要采用分布式环境下的监控策略。以下是几种高效可靠的实现方案:
一、架构级方案(推荐)
1. API网关统一监控
graph LR
Client -->|请求| Gateway[API网关]
Gateway -->|路由| ServiceA[服务A]
Gateway -->|路由| ServiceB[服务B]
Gateway -->|指标上报| Prometheus
Prometheus --> Grafana
实现步骤:
// Spring Cloud Gateway 配置
@Bean
public RouteLocator customRouteLocator(RouteLocatorBuilder builder, MeterRegistry registry) {
return builder.routes()
.route("service_a", r -> r.path("/api/a/**")
.filters(f -> f.filter(new MetricsFilter(registry, "service_a")))
.uri("lb://SERVICE-A"))
.route("service_b", r -> r.path("/api/b/**")
.filters(f -> f.filter(new MetricsFilter(registry, "service_b")))
.uri("lb://SERVICE-B"))
.build();
}
// 自定义指标过滤器
public class MetricsFilter implements GatewayFilter {
private final Counter counter;
public MetricsFilter(MeterRegistry registry, String serviceName) {
this.counter = Counter.builder("api_requests")
.tag("service", serviceName)
.register(registry);
}
@Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
counter.increment();
return chain.filter(exchange);
}
}
2. 服务网格监控(如Istio)
# PromQL查询服务QPS sum(rate(istio_requests_total{reporter="destination"}[1m])) by (destination_service, destination_workload)
二、代码级集成方案
1. Spring Boot Actuator + Micrometer
# application.yml
management:
endpoints:
web:
exposure:
include: promethe

最低0.47元/天 解锁文章
1029

被折叠的 条评论
为什么被折叠?



