SpringCloud实战小贴士:随机端口

https://mp.weixin.qq.com/s/1q***WqrjB5xRvibqDtNUwspring

过久没有更新,一时不知道该从哪儿继续,索性就从一个小技巧开始吧。

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

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

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

使用随机端口

为Spring Cloud的应用实用随机端口很是简单,主要有两种方法:负载均衡

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

因为默认的实例ID会由server.port拼接,而此时server.port设置的随机值会从新取一次随机数,因此使用这种方法的时候不须要从新定义实例ID的规则就能产生不一样的实例ID了。dom

版权声明ide

本文采用 CC BY 3.0 CN协议 进行许可。 可自由转载、引用,但需署名做者且注明文章出处。如转载至微信公众号,请在文末添加做者公众号二维码。
长按指纹
一键关注
SpringCloud实战小贴士:随机端口
SpringCloud实战小贴士:随机端口函数

相关文章
相关标签/搜索