跳转到主要内容

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

稍等,我把配置改成生产上的地址

在微服务开发中,通常涉及多个服务、多个团队、异地团队一起合作开发。又因为频繁迭代,频繁发布版本,为了保证版本、代码、环境的一致性,通常使用容器化,既生产上的运行环境、配置信息应该与测试环境的保持完全一致。但是我们更多的时候会出现测试通过后,还要说:“稍等,我把配置改成生产上的地址”,一个新的的客户部署一套版本,也要“稍等,我把配置改成生产上的地址”,完全丧失了容器化的优势。

穷人的微服务开发环境

如果我们有钞能力,这个问题很好解决,每个研发人员都配置一台服务器,专门用于联调,全部使用标准端口,标准服务名称,每个项目组都配置三套环境。

在没有钞能力的情况下,只能借助不同的端口来区分服务,也正因为如此,团队协作、异地开发、新老项目同时维护,都就会出现配置文件、服务名、IP地址不一致的情况,例如生产上要求的是mysql:3306,redis:6379,测试和开发环境要求的是x.x.x.x:33306,x.x.x.x:63379,地区A的同事用的是内网地址,地区B的同事用的是映射后的地址,就导致反复修改配置文件、互相覆盖配置文件。发生产还要修改配置文件,破坏了测试结果的准确性。

在此背景下,强烈推荐使用服务发现,统一配置中心、环境变量,减少和降低测试通过后的版本还需要修改代码和配置文件的频率。

将端口转发为与生产一致的端口号

经常修改的配置文件主要集中在数据库、redis等方面,因为要区分端口,很多同事就把IP端口写死在配置文件,当要部署到生产,一个新的项目要部署时候,就需要回来改代码,这很显然是不够科学的。为了应对这一问题,应该将三个环境都用服务发现,在开发的时候,借助一些小工具和小技巧,将开发、测试、生产环境使用的服务名、端口统一起来。

  • 使用有界面的端口转发PORTMAP小工具

小工具下载 https://qq829.cn/uploads/software/tools/portmap-1.6.zip

  • 使用命令行(仅windows)

# 仅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中使用统一的环境变量设置

env文件可以迁入到代码仓库大家共享,idea设置本身并不会迁入到代码仓库,不会发生冲突

# .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/