Java面试实战篇:Spring Cloud Gateway+RabbitMQ+Prometheus监控架构设计与调优

面试官:李雪(美团资深架构师)

程序员:张伟(31岁,硕士,7年Java开发经验)

面试官:请先做下自我介绍 张伟:我是张伟,之前在XX电商负责过秒杀系统的架构设计,主要用Spring Cloud Gateway做API网关,RabbitMQ处理异步消息,Prometheus做监控...(突然意识到什么)啊,我是不是说了太多技术细节?

面试官:你用Gateway做过哪些具体优化? 张伟:优化啊...就是给接口加了限流规则,比如注册接口设置5000 QPS。不过有一次配置错误,导致整个支付接口被限流,用户投诉特别多...

面试官:RabbitMQ的死信队列怎么用? 张伟:死信队列就是消息过期后自动转到另一个队列。我们之前用它处理订单超时未支付的情况,设置TTL为30分钟,然后关联到死信队列做补偿处理...

面试官:怎么监控微服务的调用链路? 张伟:调用链路监控啊...我们用的是SkyWalking,不过面试官您说的Prometheus,这个我主要用来监控JVM指标,比如GC频率和内存使用率...

面试官:你遇到过消息堆积怎么处理? 张伟:消息堆积的话...就是先看是生产者发太快还是消费者处理太慢。我们之前用RabbitMQ时,发现是消费者线程池配置太小,后来改成动态调整线程数,不过有时候会遇到消息重复消费的问题...

技术解析

Gateway限流配置

# Spring Cloud Gateway限流配置示例
spring:
  cloud:
    gateway:
      routes:
        - id: order-service
          uri: lb://order-service
          predicates:
            - Path=/api/order/**
          filters:
            - StripPrefix=1
            - name: RequestRateLimit
              args:
                rate: 5000
                key: remoteAddr

RabbitMQ死信队列配置

{
  "queue_name": "order_timeout_queue",
  "arguments": {
    "x-dead-letter-exchange": "dead_letter_exchange",
    "x-message-ttl": 1800000
  }
}

Prometheus+Micrometer监控

// 添加Micrometer依赖示例
implementation 'io.micrometer:micrometer-registry-prometheus:1.8.0'

// 配置Prometheus指标暴露端点
@Bean
public MeterRegistryConfig config() {
    return new PrometheusMeterRegistryConfig();
}

面试官:今天的面试就到这里,你先回家等通知吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值