SpringCloud实战小贴士:随机端口

开发 开发工具
在本文中,我们将介绍另外一种方法:采用随机端口的方式来设置各个服务实例,这样我们不用去编辑任何命令就可以在本地轻松地启动多个实例了。

[[188448]]

在之前的《Spring Cloud构建微服务架构》系列博文中,我们经常会需要启动多个实例的情况来测试注册中心、配置中心等基础设施的高可用,也会用来测试客户端负载均衡的调用等。但是,我们一个应用只能有一个端口号,这就使得在本机测试的时候,不得不为同一个服务设置不同的端口来进行启动。

在本地用不同端口启动同一服务实例的方法有很多。最传统的我们可以粗暴地修改配置文件中的server.port属性来分别启动多个实例,这种方法虽然可以实现,但是非常的不方便。比较好的一种方法是在启动的时候通过命令的方式为server.port属性来设置不同的值,这样我们的配置文件就不用反复的进行修改了。

在本文中,我们将介绍另外一种方法:采用随机端口的方式来设置各个服务实例,这样我们不用去编辑任何命令就可以在本地轻松地启动多个实例了。

使用随机端口

为Spring Cloud的应用实用随机端口非常简单,主要有两种方法:

  • 设置server.port=0,当应用启动的时候会自动的分配一个随机端口,但是该方式在注册到Eureka的时候会一个问题:所有实例都使用了同样的实例名(如:Lenovo-zhaiyc:hello-service:0),这导致只出现了一个实例。所以,我们还需要修改实例ID的定义,让每个实例的ID不同,比如使用随机数来配置实例ID:
  1. server.port=0 
  2. eureka.instance.instance-id=${spring.application.name}:${random.int
  • 除了上面的方法,实际上我们还可以直接使用random函数来配置server.port。这样就可以指定端口的取值范围,比如:
  1. server.port=${random.int[10000,19999]} 

由于默认的实例ID会由server.port拼接,而此时server.port设置的随机值会重新取一次随机数,所以使用这种方法的时候不需要重新定义实例ID的规则就能产生不同的实例ID了。

【本文为51CTO专栏作者“翟永超”的原创稿件,转载请通过51CTO联系作者获取授权】

戳这里,看该作者更多好文

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2017-10-18 16:00:14

SpringCloudZuul路径

2017-05-18 14:14:25

过滤器Spring ClouZuul

2017-05-19 15:13:05

过滤器Spring ClouZuul

2017-07-31 15:47:50

Zuul统一处理

2017-05-02 23:05:44

HTTPZuulCookie

2021-03-26 06:01:45

日志MongoDB存储

2022-04-09 14:45:02

微服务常见概念Spring

2017-08-10 16:14:07

FeignRPC模式

2017-09-26 16:17:39

Ribboneager-load模式

2017-10-20 14:55:06

Spring ClouZuul加载

2013-07-02 11:01:01

2010-12-14 09:15:50

Visual Stud

2016-12-01 13:50:38

2016-12-06 09:20:04

2023-02-23 08:00:00

Python机器学习编程代码

2015-08-20 10:00:45

可视化

2010-08-24 15:39:59

2010-08-24 14:46:08

2011-03-01 13:35:43

交换机限速

2013-10-23 13:01:29

Ubuntu技巧时光机
点赞
收藏

51CTO技术栈公众号