Hystrix命令关键决策,服务名称+实例IP + Api名称?

时间:2017-11-11 09:31:23

标签: high-availability hystrix fallback

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

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

它似乎获得了最好的细节级别,因为不同的api,不同的实例失败不会绕圈破坏另一个,但它可能会占用大量的命令键。

这是一个例子。假设我与服务A交谈,有5个服务A实例,我通过负载均衡器与服务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,比如

  • createOrder
  • deleteOrder
  • updateOrder
  • getOrder

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

  1. 服务级别,如serviceA
  2. 实例级别,如192.168.1.1
  3. 实例+ api级别,如192.168.1.1_getOrder
  4. 对于第一个选项,只有一个hystrix命令,它占用较少的CPU或内存,但如果一个api失败,则所有api都是循环中断。

1 个答案:

答案 0 :(得分:1)

您的HystrixCommandKey标识HystrixCommand,其中包含aService.anOperation()。因此,HystrixCommandKey可以使用复合键服务+命令(但运行服务的实例或IP地址)命名。如果您未提供明确的名称,则HystrixCommand的班级名称将用作默认名称HystrixCommandKey

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

在您的示例中,它将是serviceA_createOrder