【问题标题】:Hystrix command key decision, Service Name+Instance IP+Api Name?Hystrix命令关键决策,Service Name+Instance IP+Api Name?
【发布时间】:2018-04-24 11:40:43
【问题描述】:

我想在网关中实现 Hystrix(比如 zuul)。 网关将发现服务 A、B 或 C,假设服务 A 有 10 个实例和 10 个 Api。我的问题是。

什么是命令键决策的最佳实践?服务名称+实例IP+API名称。

似乎这样获得了最好的细节级别,因为不同的api,不同的实例失败不会循环破坏其他,但它可能会占用大量的命令键。

这是一个例子。假设我和服务 A 对话,服务 A 有 5 个实例,我通过负载均衡器与服务 A 对话,ip 如下

  • 192.168.1.1
  • 192.168.1.2
  • 192.168.1.3
  • 192.168.1.4
  • 192.168.1.5

服务 A 有 4 个 api,比如

  • 创建订单
  • 删除订单
  • 更新订单
  • 获取订单

现在选择的命令键有很多选项。

  1. 服务级别,如 serviceA
  2. 实例级别,如 192.168.1.1
  3. 实例 + api 级别如 192.168.1.1_getOrder

对于第一个选项,只有一个hystrix命令,它占用的cpu或内存更少,但是如果一个api失败,所有api都是循环中断。

【问题讨论】:

  • “命令键决策”是什么意思?
  • @ManishMaheshwari 感谢您的评论,我已经更新了我的问题。

标签: high-availability hystrix fallback


【解决方案1】:

您的HystrixCommandKey 标识一个HystrixCommand,它封装了aService.anOperation()。因此,HystrixCommandKey 可以使用复合键 Service+Command 命名(但不是 运行服务的实例或 IP 地址)。如果您不提供显式名称,则使用 HystrixCommand 的类名作为默认的 HystrixCommandKey。

Hystrix 仪表板然后从服务集群中运行的每个实例聚合每个HystrixCommandKey(服务+命令)的指标。

在您的示例中,它将是 serviceA_createOrder。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 2019-11-07
    • 1970-01-01
    相关资源
    最近更新 更多