2017-11-11 92 views
1

我想在網關中實現Hystrix(如zuul)。 網關會發現服務A,B或C,假設服務A有10個實例和10個Api。我的問題是。Hystrix命令密鑰決定,服務名稱+實例IP + Api名稱?

命令關鍵決策的最佳做法是什麼?服務名稱+實例IP + Api名稱。

它似乎獲得最好的細節水平,因爲不同的api,不同的實例失敗將不會破壞另一個,但它可能會佔用大量的命令鍵。

這裏是例子。假如我跟服務A,有服務A的5個實例,我跟服務將負載平衡器和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

現在有這個命令鍵choosen許多選項。

  1. serivce水平,像serviceA
  2. 實例級,像192.168.1.1
  3. 實例+ API級別等192.168.1.1_getOrder

對於第一種選擇,也有隻有一個錐命令,它佔用更少的CPU或內存,但如果一個API失敗,所有的API都是循環中斷。

+0

你是什麼意思的「命令關鍵決定」? –

+0

@ManishMaheshwari感謝您的評論,我已更新我的問題。 – hongshuwei

回答

1

您的HystrixCommandKey標識HystrixCommand,封裝aService.anOperation()。因此HystrixCommandKey可以使用組合鍵服務+命令(但是而不是運行服務或IP地址的實例)命名。如果您沒有提供明確的名稱,則使用HystrixCommand的類名作爲默認HystrixCommandKey

Hystrix儀表板然後根據服務集羣中運行的每個實例彙總每個HystrixCommandKey(服務+命令)的度量標準。

在你的例子中,它將是serviceA_createOrder