Hystrix命令密钥决定,服务名称+实例IP+Api名称



我想在网关中实现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

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

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

然后,Hystrix Dashboard聚合来自服务集群中运行的每个实例的每个HystrixCommandKey(Service+Command)的度量。

在您的示例中,它将是serviceA_createOrder

相关内容

  • 没有找到相关文章

最新更新