微服务如何不影响生产环境debug问题?


前言

解决微服务开发中环境debug问题的痛点:

  1. 每个人起一套环境,用来开发很费劲
  2. 每个人一套环境,数据不同步,造成开发耗时
  3. 开发服务依赖公共框架服务,如果想请求调试开发服务的接口,需要经历很多个公共服务接口
  4. 线上问题,本地复现难度大,可以通过此种方式轻松解决,将线上请求打到本地服务中

一、如何实现?

首先缕清思路,现实环境是什么样子的,然后我们要实现什么?

  1. 例如我有一个环境,是个微服务的架构项目,已经部署好了,有7-8个微服务
  2. 现在这个环境有问题了,开始报错,经过排查是其中的一个服务 A 报错,但是报错不明显,排查问题是重点
  3. 我想要跟踪这个问题,作为程序员最好跟踪问题的方式,当然是debug喽,如何debug?

普通做法

一般来说都是这个环境的数据,所以最简单的就是直接连接这个库,但是 !! 这个服务A 呀,不是直接提供服务,也就意味着你至少要搭建一个环境出来,注册中心,gateway,前端项目,而且一般来说一个请求达到服务A ,需要经历前置的几个服务,几乎就是重建一套环境,从而来查找问题
怎一个烦字了得?

本文做法

通过代理的方式,仅仅需要启动这个一个服务,就可以实现直接debug问题了,如何做呢?

前置条件:一个有小问题的完整环境

  1. 注册中心
  2. 各个微服务
  3. 统一路由 gateway
  4. 前端项目
  5. 其中一个有问题的服务A

二、使用步骤

1.改造服务A配置

  1. nacos 新增服务A的配置
    之前的服务A配置叫做 snow-a.yml,现在增加一个snow-a-fl.yml,直接copy之前的,仅仅需要更改名字即可
  2. 打开项目源码,改造服务A的注册配置
spring:
  application:
    name: snow-a-fl
  cloud:
    nacos:
      discovery:
        server-addr: 192.168.15.63:8848
        ip: 192.168.15.136
      config:
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
    config:
      import:
        - optional:nacos:application-@profiles.active@.yml
        - optional:nacos:${spring.application.name}-@profiles.active@.yml

修改服务A为另一个名字 name: snow-a-fl
修改注册中心地址为这个环境的服务器ip 192.168.15.63
配置该服务在nacos中的ip,也就是自己电脑的ip ip: 192.168.15.136

这里相当于本地启动一个服务A ,注册到这个环境的nacos上,但是服务名字与之前的服务A名字有区别

当然我这里是由于我将各个服务的配置都放在了nacos上,如果你没有放到nacos上,那么只需要改动项目源码中服务A的注册配置

2.将线上请求导向本地

  1. 在浏览器上安装插件XSwitch,文件在资源中,通过浏览器扩展程序安装即可
  2. 更改插件配置
{
  "proxy": [
    [
      "/api/snow/",
      "/api/snow-fl/"
    ]
  ]
}

插件配置

  1. 启用插件
  2. 更改配置:
    我原本的服务A 在nacos中的服务名称为snow,在gateway请求匹配前缀也是snow, 前端访问会自动添加/api前缀,通过nginx会截掉,然后访问snow这个服务,所以之前的前缀为 /api/snow/
    现在我要将服务器上所有访问服务A的请求,全部打到我本地,所以 /api/snow-fl/ 这个配置,会将所有原本的/api/snow/导向 /api/snow-fl/ , 而 /api/snow-fl/ 会直接访问到我的本地!!!

3. 至此配置完成

继续访问这个环境,但是所有访问服务A的请求,此时都会打到本地,也就能debug了!!!

  • 但是只有配置了XSwitch 的浏览器,才会将请求转发,所以不会影响线上环境
  • 其他人也访问不到我这个新服务A的服务

给大家看下效果

未启用XSwitch之前

未启用

此时访问的是原服务A : /api/snow/dict/page

启用XSwitch之后

启用后

此时访问的是新服务A : /api/snow-fl/dict/page


总结

这样就完美实现了,在不影响线上环境的情况下,直接debug某个有问题的微服务,堪称完美~

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寂寞旅行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值