当前位置: 首页 > 科技观察

SpringCloud实用技巧:随机端口

时间:2023-03-21 01:30:50 科技观察

在之前的系列博文《Spring Cloud构建微服务架构》中,我们经常需要启动多个实例来测试注册中心、配置中心等基础设施的高可用,同时也用它来测试Client负载均衡调用等。但是,我们的一个应用程序只能有一个端口号,这就导致在本机上测试时需要为同一个服务设置不同的端口才能启动。有很多方法可以使用不同的端口在本地启动同一个服务实例。最传统的方式,我们可以粗略的修改配置文件中的server.port属性来分别启动多个实例。这种方法虽然可以实现,但是很不方便。更好的方法是在启动时通过命令为server.port属性设置不同的值,这样我们的配置文件就不需要反复修改了。在本文中,我们将介绍另一种方法:使用随机端口来设置每个服务实例,这样我们就可以轻松地在本地启动多个实例,而无需编辑任何命令。SpringCloud应用程序使用随机端口非常简单。主要有两种方法:设置server.port=0。当应用程序启动时,会自动分配一个随机端口,但是这个方法会注册到Eureka。问题一:所有实例使用相同的实例名(如:Lenovo-zhaiyc:hello-service:0),导致只出现一个实例。因此,我们还需要修改实例ID的定义,让每个实例的ID都不一样,比如使用随机数来配置实例ID:server.port=0eureka.instance.instance-id=${spring.application.name}:${random.int}除了上述方法外,其实我们也可以直接使用random函数来配置server.port。这样就可以指定端口的取值范围,例如:server.port=${random.int[10000,19999]}由于默认的实例ID会被server.port拼接,随机值server.port设置的会被再次取随机数,所以在使用这种方法的时候,可以生成不同的实例ID,而不需要重新定义实例ID的规则。【本文为专栏作家“翟永超”原创稿件,转载请联系作者获得授权】点此查看该作者更多好文