# 微服务开发中的一些小工具&&小技巧

#### 稍等，我把配置改成生产上的地址

在微服务开发中，通常涉及多个服务、多个团队、异地团队一起合作开发。又因为频繁迭代，频繁发布版本，为了保证版本、代码、环境的一致性，通常使用容器化，既生产上的运行环境、配置信息应该与测试环境的保持完全一致。但是我们更多的时候会出现测试通过后，还要说:“**稍等，我把配置改成生产上的地址**”，一个新的的客户部署一套版本，也要“**稍等，我把配置改成生产上的地址**”，完全丧失了容器化的优势。



#### 穷人的微服务开发环境

如果我们有钞能力，这个问题很好解决，每个研发人员都配置一台服务器，专门用于联调，全部使用标准端口，标准服务名称，每个项目组都配置三套环境。

在没有钞能力的情况下，只能借助不同的端口来区分服务,也正因为如此，团队协作、异地开发、新老项目同时维护,都就会出现配置文件、服务名、IP地址不一致的情况，例如生产上要求的是**mysql:3306,redis:6379**，测试和开发环境要求的是**x.x.x.x:33306,x.x.x.x:63379，地区A的同事用的是内网地址，地区B的同事用的是映射后的地址**,就导致反复修改配置文件、互相覆盖配置文件。发生产还要修改配置文件，破坏了测试结果的准确性。

在此背景下，强烈推荐使用服务发现，统一配置中心、环境变量，减少和降低测试通过后的版本还需要修改代码和配置文件的频率。



#### 将端口转发为与生产一致的端口号

经常修改的配置文件主要集中在数据库、redis等方面，因为要区分端口，很多同事就把IP端口写死在配置文件，当要部署到生产，一个新的项目要部署时候，就需要回来改代码，这很显然是不够科学的。为了应对这一问题，应该将三个环境都用服务发现，在开发的时候，借助一些小工具和小技巧，将开发、测试、生产环境使用的服务名、端口统一起来。


- 使用有界面的端口转发PORTMAP小工具

小工具下载  <https://iovhm.com/uploads/software/tools/portmap-1.6.zip>

[![](https://iovhm.com/book/uploads/images/gallery/2024-12/scaled-1680-/o9hbeTxc168429KD-image-1734535160859.png)](https://iovhm.com/book/uploads/images/gallery/2024-12/o9hbeTxc168429KD-image-1734535160859.png)

[![](https://iovhm.com/book/uploads/images/gallery/2024-12/scaled-1680-/Bgz4Qs18YRr12Uxn-image-1734532667265.png)](https://iovhm.com/book/uploads/images/gallery/2024-12/Bgz4Qs18YRr12Uxn-image-1734532667265.png)

- 使用命令行（仅windows）
  
```shell

# 仅windows可用

# 增加一个端口转发
# netsh interface portproxy add v4tov4 listenport=<监听端口> listenaddress=<监听地址> connectport=<目标端口> connectaddress=<目标地址>
netsh interface portproxy add v4tov4 listenport=3306 listenaddress=0.0.0.0 connectport=33309 connectaddress=8.x.y.z

# 删除一个端口转发
# netsh interface portproxy delete v4tov4 listenport=<监听端口> listenaddress=<监听地址>
netsh interface portproxy delete v4tov4 listenport=3306 listenaddress=0.0.0.0

# 查看所有的端口转发规则
netsh interface portproxy show all


```

如上设置和命令，将原本需要修改配置文件的**jdbc:mysql://mysql:33306/xxxxx**，统一为使用环境变量的 **jdbc:mysql://${mysql}:3306/xxxxx**，保证了配置文件的一致性。

#### 在IDEA中使用统一的环境变量设置

[![](https://iovhm.com/book/uploads/images/gallery/2024-12/scaled-1680-/54QPYRiIeYThTHLU-image-1734534565956.png)](https://iovhm.com/book/uploads/images/gallery/2024-12/54QPYRiIeYThTHLU-image-1734534565956.png)

env文件可以迁入到代码仓库大家共享，idea设置本身并不会迁入到代码仓库，不会发生冲突

```env
# .env文件

nacos_host=
nacos_port=
mysql=127.0.0.1
redis=127.0.0.1
```


#### hosts修改小工具

如果非常不凑巧，配置文件并没有使用环境变量占位符，可以修改hosts表来进行设置，但频繁的修改hosts文件，也挺麻烦，这里有个小工具，可以方便的管理hosts文件。当然了，如果你不嫌麻烦，也可以手工修改host文件

下载地址：<https://www.easyhosts.cn/zh/>


[![](https://iovhm.com/book/uploads/images/gallery/2024-12/scaled-1680-/dEX9PtUk2PtQCjNm-image-1734540767934.png)](https://iovhm.com/book/uploads/images/gallery/2024-12/dEX9PtUk2PtQCjNm-image-1734540767934.png)


[![](https://iovhm.com/book/uploads/images/gallery/2024-12/scaled-1680-/Sj72wywXBke9gsw5-image-1734540816753.png)](https://iovhm.com/book/uploads/images/gallery/2024-12/Sj72wywXBke9gsw5-image-1734540816753.png)