当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud /网飞操作系统中的负载平衡

秦伯寅
2023-03-14

我正在看Spring靴/云和Netflix固件(尤里卡,丝带)。我正在研究这个例子:

https://spring.io/blog/2015/07/14/microservices-with-spring基本上是关于一些使用Eureka服务注册表的小型Spring Boot微服务。

我现在想启动同一个服务的几个实例(在这个例子中是Account tService,在不同的端口上)。我读到的一切(上面的文章,http://callistaenterprise.se/blogg/teknik/2015/04/10/building-microservices-with-spring-cloud-and-netflix-oss-part-1/等)表明,如果我这样做,所有实例都会冗余地注册到Eureka,当我调用服务时,应用客户端负载平衡并html" target="_blank">动态选择要调用的服务。

但是,事实并非如此。当我启动第一个服务实例时,它被注册并显示在Eureka仪表板中。当我在另一个端口上启动相同的服务时,它也注册,但它似乎取代了以前的服务实例:Eureka仪表板仍然只显示一个可用区= 1的实例(应该是2?),并且对此服务的所有调用都由第二个实例处理。当我查询注册表时,仅应用此实例。

当我停止第二个实例时,过了一段时间Eureka切换回第一个实例,它仍然可以工作。所以它似乎保留了所有实例,但只使用了最近注册的实例。

我错过了什么重要的事情吗?我认为应该同时使用所有实例?

==========应用程序属性是(对于Spring站点的示例,这些属性实际上没有变化):

EurekaServer

eureka:  
  instance:  
    hostname: localhost  
  client:    
    registerWithEureka: false  
    fetchRegistry: false  

server:  
  port: 1111     

spring:  
  thymeleaf:  
    enabled: false  

会计服务器

spring:  
  application:  
    name: accounts-service  
  freemarker:  
    enabled: false           
  thymeleaf:  
    cache: false             
    prefix: classpath:/accounts-server/templates/      

eureka:  
  client:  
    serviceUrl:  
      defaultZone: http://localhost:1111/eureka/  

server:  
  port: 4444   # HTTP (Tomcat) port, for the second instance this is changed to a different port

共有2个答案

华泳
2023-03-14

我认为,由于您在帐户服务器上使用静态端口号,因此Eureka将仅注册一个实例...
您可以在客户端上执行类似操作

server:
  compression.enabled: true
  port: 0

(在本例中,我使用 YAML 进行配置,而不是属性)

在网关上,您应该指定您想要一个负载均衡器,就像这样

 @Autowired
 private LoadBalancerClient loadBalancer;
 ....
 private String getUrl(){
    return loadBalancer.choose("your-service-name").getUri().toString();
}

我做了类似的事情,如果你有兴趣,你可以看看这里

范金鑫
2023-03-14

@dshuld如果您使用的是Angel发布训练或版本1.0. x,您需要让每个实例都有一个唯一的id。请参阅此处的文档。类似:

eureka:
  instance:
    metadataMap:
      instanceId: ${spring.application.name}:${spring.application.instance_id:${server.port}}

对于Brixton发布系列(1.1.x),它应该有一个合理的默认值。

 类似资料:
  • 操作系统提供的服务 操作系统的五大功能,分别为:作业管理、文件管理、存储管理、输入输出设备管理、进程及处理机管理 中断 所谓的中断就是在计算机执行程序的过程中,由于出现了某些特殊事情,使得CPU暂停对程序的执行,转而去执行处理这一事件的程序。等这些特殊事情处理完之后再回去执行之前的程序。中断一般分为三类: 内部异常中断:由计算机硬件异常或故障引起的中断; 软中断:由程序中执行了引起中断的指令而造成

  • 本文向大家介绍网络操作系统和分布式操作系统之间的区别,包括了网络操作系统和分布式操作系统之间的区别的使用技巧和注意事项,需要的朋友参考一下 网络操作系统,操作系统和分布式操作系统都可以在多个系统/节点上运行。两种操作系统之间的主要区别在于,在网络操作系统的情况下,每个系统都可以有自己的操作系统,而在分布式操作系统的情况下,每台计算机都可以使用一个操作系统作为公用操作系统。 以下是网络操作系统和分布

  • sed sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,所有的输出行都被打印到屏幕上。sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。 sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的

  • 进程与线程 对于有线程系统: 进程是资源分配的独立单位 线程是资源调度的独立单位 对于无线程系统: 进程是资源调度、分配的独立单位 进程之间的通信方式以及优缺点 管道(PIPE) 有名管道:一种半双工的通信方式,它允许无亲缘关系进程间的通信 优点:可以实现任意关系的进程间的通信 缺点: 长期存于系统中,使用不当容易出错 缓冲区有限 无名管道:一种半双工的通信方式,只能在具有亲缘关系的进程间使用(父

  • 1 select,poll和epoll 其实所有的I/O都是轮询的方法,只不过实现的层面不同罢了. 这个问题可能有点深入了,但相信能回答出这个问题是对I/O多路复用有很好的了解了.其中tornado使用的就是epoll的. selec,poll和epoll区别总结 基本上select有3个缺点: 连接数受限 查找配对速度慢 数据由内核拷贝到用户态 poll改善了第一个缺点 epoll改了三个缺点.

  • 你可以在任何主流操作系统下去做开发工作,Windows,macOS,Linux 都可以。如果选择 Windows ,版本最好选择 Windows 10 专业版。用 macOS 的用户不用太担心系统问题,可以无痛并免费升级,现在你应该用的是 Sierra 这个版本的 macOS 。Linux 也可以,比如 Ubuntu 的桌面版。 如果你能满足下面三个条件的其中一个,这个任务就算完成了: Windo