跳转到主要内容

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

千万不要稍等,我微服务搞配置改分布式大单体生产上的地址

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

穷人的微服务开发环境

在此背景下,我们通常推荐服务发现,统一配置中心、或者环境变量

穷人的微服务开发环境

微服务开发,是需要大量的基础设施支撑的,。如果我们有钞能力的大公司恨不得这个问题很好解决,每个人员都配置一台服务器,专门用于链条,每个项目组都配置三套环境。

在没有钞能力的情况下,只能借助不同的端口来区分服务,也正因为如此,前面提到的团队协作、异地开发、新开发的项目、老的同时维护项目可能采用相同的环境变量,配置文件,例如mysql,redis,就导致反复修改配置文件、互相覆盖配置文件。发生产还要等测试通过了修改配置文件,破坏了测试结果的准确性。

端口转发

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

  • 使用有界面的PORTMAP工具

  • 使用命令行


# 增加一个端口转发
# 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.134.83.21.22

# 删除一个端口转发
# 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:3306/xxxxx 转发到了远程服务器的33309端口

在IDEA中使用统一的环境变量设置

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

# .env文件

nacos_host=
nacos_port=
mysql=127.0.0.1