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

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

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

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

使用随机端口

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

  • 设置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了。


Spring Cloud实战小贴士:随机端口相关推荐

  1. Spring Cloud实战小贴士:Zuul处理Cookie和重定向

    由于我们在之前所有的入门教程中,对于HTTP请求都采用了简单的接口实现.而实际使用过程中,我们的HTTP请求要复杂的多,比如当我们将Spring Cloud Zuul作为API网关接入网站类应用时,往 ...

  2. Spring Cloud实战小贴士:Zuul统一异常处理(一)

    在上一篇<Spring Cloud源码分析(四)Zuul:核心过滤器>一文中,我们详细介绍了Spring Cloud Zuul中自己实现的一些核心过滤器,以及这些过滤器在请求生命周期中的不 ...

  3. Spring Cloud实战小贴士:Zuul统一异常处理(二)

    在前几天发布的<Spring Cloud实战小贴士:Zuul统一异常处理(一)>一文中,我们详细说明了当Zuul的过滤器中抛出异常时会发生客户端没有返回任何内容的问题以及针对这个问题的两种 ...

  4. Spring Cloud实战小贴士:Zuul统一异常处理(三)【Dalston版】

    本篇作为<Spring Cloud微服务实战>一书关于Spring Cloud Zuul网关在Dalston版本对异常处理的补充.没有看过本书的读书也不要紧,可以先阅读我之前的两篇博文:& ...

  5. Spring Cloud实战小贴士:版本依赖关系

    去年在博客上连载了<Spring Cloud构建微服务架构>的系列博文,虽然这部分内容得到了不少关注者们的支持,但是不得不说这些内容只是适用于Spring Cloud入门阶段对各个组件的初 ...

  6. Spring Cloud实战小贴士:Zuul的饥饿加载(eager-load)使用

    上一篇 我们介绍了如何使用Ribbon的 earger-load配置加速Spring Cloud中对服务接口的第一次调用.可是这样只是解决了内部服务间的调用,另外一个问题依然经常困扰我们,那就是网关到 ...

  7. Spring Cloud实战小贴士:Ribbon的饥饿加载(eager-load)模式

    我们在使用Spring Cloud的Ribbon或Feign来实现服务调用的时候,如果我们的机器或网络环境等原因不是很好的话,有时候会发现这样一个问题:我们服务消费方调用服务提供方接口的时候,第一次请 ...

  8. Spring Cloud实战小贴士:turbine如何聚合设置了context-path的hystrix数据

    之前在spring for all社区看到这样一个问题:当actuator端点设置了context-path之后,turbine如何聚合数据?首先,我们要知道actuator端点设置了context- ...

  9. Spring Cloud实战小贴士:Feign的继承特性(伪RPC模式)

    通过之前发布的<Spring Cloud构建微服务架构:服务消费者(Feign)>,我们已经学会如何使用Spring MVC的注解来绑定服务接口.我们几乎完全可以从服务提供方的Contro ...

最新文章

  1. tomcat及负载均衡
  2. 定位系列论文阅读-RoNIN(二)-Robust Neural Inertial Navigation in the Wild: Benchmark, Evaluations
  3. VMware-使用VMware在本地搭建多个CentOS虚机
  4. WPF实现一个彩虹按钮
  5. C/C++中MySQL环境配置教程
  6. 不分享“年度报告”的人,多少有点难言之隐
  7. Windows C++ 获取当前文件夹下有几个文件
  8. 关于回复某个评论的功能小改进
  9. 《 .NET软件设计新思维》一书作者MSDN课程日程
  10. 装载list的时候 一定要把每一个实体放到for里面
  11. Maxima函数的不完全列表
  12. 网易云音乐登录python
  13. html表格中字与字间距如何调整,excel表格字间距怎么调
  14. Red Hat牵头推进NVFS文件系统
  15. 推卸责任的 Chain of Responsibility模式
  16. moment中时间为12小时制,dayjs中时间为12小时制
  17. stream流的使用说明书
  18. 1G→2G→3G→4G→5G:一部波澜壮阔的移动通信史
  19. 面对技术,你焦虑的是什么?
  20. scrollTo,scrollBy,smoothScrollBy,smoothScrollTo

热门文章

  1. ☆☆在Eclipse中编译NDK的so文件(普通安卓项目转换为NDK项目的设定)
  2. leetcode - Linked List Cycle
  3. 一台服务器上部署多个Terracotta的方法
  4. C++ Primer 有感(重载操作符)
  5. [Ubuntu]Apt-get命令参数详解
  6. LevelDb实现原理
  7. 极简的 PNG 编码函数 svpng(),用来学习C语言,真的很爽
  8. 单片机的引脚,你都清楚吗?
  9. 大工奥鹏计算机在线作业,大工20春《计算机网络技术》在线作业1题目【标准答案】...
  10. STM32项目(四)——暗室网关