Spring Cloud 参考文档(Hystrix超时和Ribbon客户端)

栏目: Java · 发布时间: 6年前

内容简介:使用包装Ribbon客户端的Hystrix命令时,要确保将Hystrix超时配置为长于配置的Ribbon超时,包括可能进行的任何可能的重试,例如,如果你的Ribbon连接超时为一秒,并且Ribbon客户端可能会重试该请求三次,那么你的Hystrix超时应该略大于三秒。要在项目中包含Hystrix仪表板,请使用组ID为要运行Hystrix仪表板,请使用

Hystrix超时和Ribbon客户端

使用包装Ribbon客户端的Hystrix命令时,要确保将Hystrix超时配置为长于配置的Ribbon超时,包括可能进行的任何可能的重试,例如,如果你的Ribbon连接超时为一秒,并且Ribbon客户端可能会重试该请求三次,那么你的Hystrix超时应该略大于三秒。

如何包含Hystrix仪表板

要在项目中包含Hystrix仪表板,请使用组ID为 org.springframework.cloud 和工件ID为 spring-cloud-starter-netflix-hystrix-dashboard 的启动器。

要运行Hystrix仪表板,请使用 @EnableHystrixDashboard 注解Spring Boot主类,然后访问 /hystrix 并将仪表板指向Hystrix客户端应用程序中的单个实例的 /hystrix.stream 端点。

连接到使用HTTPS的 /hystrix.stream 端点时,JVM必须信任服务器使用的证书,如果证书不受信任,则必须将证书导入JVM,以便Hystrix仪表板成功连接到流端点。

Turbine

查看单个实例的Hystrix数据在系统整体运行状况方面不是很有用, Turbine 是一个应用程序,它将所有相关的 /hystrix.stream 端点聚合到一个组合的 /turbine.stream 中,以便在Hystrix仪表板中使用,从Eureka定位单个实例。运行Turbine需要使用 @EnableTurbine 注解来注解主类(例如,通过使用 spring-cloud-starter-netflix-turbine 来设置类路径), Turbine 1 wiki 中所有记录的配置属性均适用。唯一的区别是 turbine.instanceUrlSuffix 不需要前置端口,因为除非 turbine.instanceInsertPort=false ,否则会自动处理。

默认情况下,Turbine在注册实例上查找 /hystrix.stream 端点,方法是查找它在Eureka中的 hostNameport 条目,然后将 /hystrix.stream 附加到它。如果实例的元数据包含 management.port ,则使用它来代替 /hystrix.stream 端点的 port 值。默认情况下,名为 management.port 的元数据条目等于 management.port 配置属性,可以通过以下配置覆盖它:

eureka:
  instance:
    metadata-map:
      management.port: ${management.port:8081}

turbine.appConfig 配置键是turbine用于查找实例的Eureka serviceId列表,然后,turbine流在Hystrix仪表板中使用,其URL类似于以下内容:

http://my.turbine.server:8080/turbine.stream?cluster=CLUSTERNAME

如果名称是 default ,则可以省略 cluster 参数, cluster 参数必须与 turbine.aggregator.clusterConfig 中的条目匹配,从Eureka返回的值是大写的,因此,如果有一个名为 customers 的应用程序在Eureka注册,则以下示例有效:

turbine:
  aggregator:
    clusterConfig: CUSTOMERS
  appConfig: customers

如果需要自定义Turbine应使用的集群名称(因为你不希望在 turbine.aggregator.clusterConfig 配置中存储集群名称),请提供 TurbineClustersProvider 类型的Bean。

clusterName 可以通过 turbine.clusterNameExpression 中的SPEL表达式进行自定义,其中根用作 InstanceInfo 的实例,默认值为 appName ,这意味着Eureka serviceId 成为群集键(即, customersInstanceInfoappNameCUSTOMERS )。另一个示例是 turbine.clusterNameExpression=aSGName ,它从AWS ASG名称获取集群名称,以下清单显示了另一个示例:

turbine:
  aggregator:
    clusterConfig: SYSTEM,USER
  appConfig: customers,stores,ui,admin
  clusterNameExpression: metadata['cluster']

在前面的示例中,来自四个服务的集群名称是从其元数据映射中提取的,并且应该具有包含 SYSTEMUSER 的值。

要为所有应用程序使用“default”群集,你需要一个字符串文字表达式(如果它在YAML中,则使用单引号并使用双引号进行转义):

turbine:
  appConfig: customers,stores
  clusterNameExpression: "'default'"

Spring Cloud提供了一个 spring-cloud-starter-netflix-turbine ,它具有运行Turbine服务器所需的所有依赖关系,要添加Turbine,请创建一个Spring Boot应用程序并使用 @EnableTurbine 对其进行注解。

默认情况下,Spring Cloud允许Turbine使用主机和端口来允许每个主机、每个集群有多个进程,如果你希望Turbine内置的原生Netflix行为不允许每个主机、每个群集有多个进程(实例ID的键是主机名),请设置 turbine.combineHostPort=false

集群端点

在某些情况下,了解Turbine中配置了哪些集群可能对其他应用程序有用,为了支持这一点,你可以使用 /clusters 端点,它将返回所有已配置集群的JSON数组。

GET /clusters

[
  {
    "name": "RACES",
    "link": "http://localhost:8383/turbine.stream?cluster=RACES"
  },
  {
    "name": "WEB",
    "link": "http://localhost:8383/turbine.stream?cluster=WEB"
  }
]

可以通过将 turbine.endpoints.clusters.enabled 设置为 false 来禁用此端点。

Turbine流

在某些环境中(例如在PaaS设置中),从所有分布式Hystrix命令中提取指标的经典Turbine模型不起作用,在这种情况下,你可能希望让Hystrix命令将指标推送到Turbine,Spring Cloud通过消息传递实现这一点。要在客户端上实现这一点,请添加依赖 spring-cloud-netflix-hystrix-stream 和你选择的 spring-cloud-starter-stream-* 。有关代理以及如何配置客户端凭据的详细信息,请参阅Spring Cloud Stream文档,对于本地代理,这应该是开箱即用的。

在服务器端,创建一个Spring Boot应用程序并使用 @EnableTurbineStream 注解它,Turbine Stream服务器需要使用Spring Webflux,因此 spring-boot-starter-webflux 需要包含在你的项目中,默认情况下,在将 spring-cloud-starter-netflix-turbine-stream 添加到你的应用程序时,会包含 spring-boot-starter-webflux

然后,你可以将Hystrix仪表板指向Turbine Stream Server而不是单独的Hystrix流,如果Turbine Stream在 myhost 上的端口 8989 上运行,则将 http://myhost:8989 放入Hystrix仪表板的流输入字段中,Circuit的前缀是各自的 serviceId ,后跟一个点( · ),然后是Circuit名称。

Spring Cloud提供了 spring-cloud-starter-netflix-turbine-stream ,它具有运行Turbine Stream服务器所需的所有依赖关系,然后,你可以添加你选择的流绑定器 — 例如 spring-cloud-starter-stream-rabbit

Turbine Stream服务器还支持 cluster 参数,与Turbine服务器不同,Turbine Stream使用eureka serviceId作为集群名称,这些不可配置。

如果Turbine Stream服务器在 my.turbine.server 上的 8989 端口上运行,并且你的环境中有两个eureka serviceId为 customersproducts ,则你的Turbine Stream服务器上将提供以下URL, default 和空集群名将提供Turbine Stream服务器接收的所有指标。

http://my.turbine.sever:8989/turbine.stream?cluster=customers
http://my.turbine.sever:8989/turbine.stream?cluster=products
http://my.turbine.sever:8989/turbine.stream?cluster=default
http://my.turbine.sever:8989/turbine.stream

因此,你可以将eureka serviceId用作Turbine仪表板(或任何兼容的仪表板)的集群名称,你无需为Turbine Stream服务器配置任何属性,如 turbine.appConfigturbine.clusterNameExpressionturbine.aggregator.clusterConfig

Turbine Stream服务器使用Spring Cloud Stream从配置的输入通道收集所有指标,这意味着它不会从每个实例主动收集Hystrix指标,它只能提供每个实例已经收集到输入通道中的指标。


以上所述就是小编给大家介绍的《Spring Cloud 参考文档(Hystrix超时和Ribbon客户端)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Pro CSS and HTML Design Patterns

Pro CSS and HTML Design Patterns

Michael Bowers / Apress / April 23, 2007 / $44.99

Design patterns have been used with great success in software programming. They improve productivity, creativity, and efficiency in web design and development, and they reduce code bloat and complexit......一起来看看 《Pro CSS and HTML Design Patterns》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

在线进制转换器
在线进制转换器

各进制数互转换器

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具