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

在使用Eureka时,是否可以使用功能区(通过模拟)定义静态服务器列表?

邵博远
2023-03-14
  • Spring Boot1.5.13.发布代码
  • Spring CloudEdgware.SR3
  • Java8
  • Eureka客户端已启用且工作正常(我已测试,一切正常)

我的配置中的一些相关属性:

feign.hystrix.enabled=true
eureka.client.fetch-registry=true
spring.cloud.service-registry.auto-registration.enabled=true
service1.ribbon.listOfServers=https://www.google.com

我有一个应用程序,它使用外部客户端与其他3个服务进行通信。其中两个是通过Eureka服务发现发现的。这些都很有效。最后一个服务是一个带有单个静态主机名的外部服务,我不希望通过Eureka解决这个问题。由于我确实希望其中两项服务使用Eureka,因此我希望启用Eureka。

对于最后的服务,我尝试添加service1。带子服务器列表=https://www.google.com应用程序。属性,但在调用外部客户端时,在运行时会出现以下错误:

Servlet。路径为[]的上下文中servlet[dispatcherServlet]的服务()引发异常[请求处理失败;嵌套异常为com.netflix.hystrix.exception.hystrix RuntimeException:Service1Client#test()失败,没有可用的回退。]根本原因定价|定价| com。netflix。客户ClientException:负载平衡器没有可用于客户端的服务器:service1 pricing|u 1|com。netflix。负载平衡器。LoadBalancerContext。getServerFromLoadBalancer(LoadBalancerContext.java:483)~[ribbon-loadbalancer-2.2.5.jar!/:2.2.5]

我的客户端配置如下:

@FeignClient("service1")
public interface Service1Client {

    @GetMapping(value = "/")
    String test();

}

提前谢谢你的建议。

因为我理解Ribbon的精神是充当客户端负载平衡器,在我的例子中,没有什么需要负载平衡的(我有一个固定的静态主机名,它在DNS中返回一个a记录)。Ribbon实际上感觉像是一个不必要的组件——我真正想要的是假客户端,因为我喜欢它抽象出较低级别的HTTP请求和对象序列化。因此,我想另一个后续问题是,我可以在没有ribbon的情况下使用feign吗?似乎使用ribbon是一种很好的开箱即用的行为,甚至@FeignClient注释的Javadoc都会说:

如果ribbon可用,它将用于负载平衡后端请求,并且可以使用与外部客户端同名(即值)的@RibbonClient配置负载平衡器。

这表明,尽管两者的目的不同,但它们之间的关系非常密切。


共有1个答案

艾奕
2023-03-14

正如你提到的,有两种方法可以解决你的问题。

如果您在注释中指定了url属性,它将在没有Ribbon的情况下工作,如下所示。

@FeignClient(name = "service1", url = http://www.google.com)
public interface Service1Client {
    @GetMapping(value = "/")
    String test();
}

在这种情况下,您的另外两个Faign客户端仍将与Ribbon和Eureka一起工作。

使用带丝带和不带尤里卡的飞行

您在配置中缺少的是NIWSServerListClassName。它的默认值是com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList,它将使用Eureka检索服务器列表。如果您将功能区客户端(模拟客户端)的NIWSServerListClassName设置为ConfigurationBasedServerList,则只有该客户端将使用listOfServers列表,而无需从Eureka检索服务器列表。其他假冒客户仍将与尤里卡合作。

service1:
  ribbon:
    NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList
    listOfServers: http://www.google.com
 类似资料:
  • 定义和启用虚拟服务器 FreeRADIUS默认启用了两个虚拟服务器。 它们位于FreeRADIUS配置目录的已启用站点的子目录下。 他们是: default:该名称几乎说明了虚拟服务器的功能。 此虚拟服务器处理未明确指定由virtual_server指令处理的所有缺省请求。 到目前为止,我们一直使用这个虚拟服务器。 inner-tunnel:此虚拟服务器用于某些隧道式EAP请求,如TTLS和PEA

  • 我想使用并使其直接进入给定的url,而不是从ribbon配置中获取主机。 我知道在Spring,cloud-feign默认与ribbon和eureka一起出现。 根据这个:https://cloud.spring.io/spring-cloud-netflix/multi/multi_spring-cloud-ribbon.html#spring-cloud-ribbon-without-eure

  • 问题内容: 我正在使用google map version3 api的google map应用程序,特别是google.maps.geometry.encoding中的实用程序方法,例如decodePath,encodePath,computeDistanceBetween,interpolate,以便计算位置 在Web应用程序的第一个版本中,大多数应用程序逻辑都在Web浏览器中,现在我想将一些逻

  • 使用启用的虚拟服务器 创建和创建虚拟服务器尚未使用它。 我们必须明确地将其指定为virtual_server指令的值。

  • 我正在尝试构建一个REST应用程序,有一天可能会有数百万客户机使用它。记住这一点,我们预计会收到很多请求。我想知道它是否会倾向于使用冬眠或Spring通量。我们的数据库模型是高度相关的,因此我们不得不拒绝mongo和其他非关系数据库。我有几个问题: spring-webflow和hibernate可以一起使用吗? 如果问题1的答案是否定的,Spring通量是否具有像hibernate这样的缓存功能

  • 我最近注意到,就餐提供了使用服务器启动器的可能性。在本手册中报告: Repast Simphony 2.7中的新增功能是能够使用Web浏览器作为用户交互界面运行您的模型。基于浏览器的GUI具有以下功能: 列表项 2D网格、连续空间和地理(GIS)可视化(目前仅限于编辑样式) 标签式和自由形式可视化布局时间序列图 特工探测 模型参数设置 模型运行时交互(运行、停止、暂停等) 我试着用这种模式启动我的