2015-11-27 141 views
5

我正在學習微服務架構,我實際上在想什麼。微服務,amqp和服務註冊中心/發現

對於使用(返回)服務發現在基於REST的微服務中發出請求的事實,我相當確定。我需要知道服務在哪裏(或者至少在服務器集羣的前端)發出請求。因此,在這種情況下能夠發現ip:port是有意義的。

但是我想知道在處理AMQP(僅基於,沒有HTTP可能的調用)時使用服務註冊表/發現的目的是什麼?

我的意思是,使用AMQP就像「我需要那個,我希望有人回答我」,我不知道是誰把服務器發回給我的回覆。

那麼,使用基於AMQP的微服務的服務註冊/發現的目的是什麼?

感謝您的幫助

+0

有趣的問題。我也曾認爲MOM的工作方式類似於服務發現功能。它提供了位置透明度和彈性。 MOM就像一個服務註冊表,所有你需要知道的是服務的名稱,例如交換名稱和MOM路由並將您的消息負載均衡到其中一個服務提供商(消費者),然後爲您提供答案。坦率地說,我沒有得到今天唯一答案中提供的觀點。 –

回答

4

AMQP(MOM任何實際上)爲過程,而不必介意實際IP地址,通信安全,路由,其他問題之間交流的方式。這並不一定意味着任何進程都可以信任或甚至沒有任何有關它與之通信的進程的信息。

消息隊列確實解決了一半過程:如何到達遠程服務。但他們並沒有解決另一半:哪一種服務對我來說是正確的。換句話說,其服務:

  • 有我需要
  • 可以信任(託管一個可靠的服務器上的資源,具有令人滿意的服務實現,坐落在一個國家裏,當地的法律與兼容您的要求等),你要付出什麼樣的(雖然人們很少討論成本,當涉及到微服務)
  • 將處理您的服務所需要的全部時間窗口期間在那裏
  • 費用 - 記住,服務器變得越來越不穩定。一些服務器實際上是可以持續幾分鐘的容器。

這兩個問題幾乎是線性無關的。爲了解決第二類問題,您在網格計算中擁有資源代理。還有資源分配,以確保上面的最後一項正確管理。

還有一些替代策略,例如多播意圖使用服務和等待回覆的報價。例如,您可能會在這種情況下進行逆向拍賣。

簡而言之,經驗法則是,如果您沒有關於要使用哪種服務(硬編碼或某些配置文件)的先驗知識,您的代理將不得不進行協商,其中包括動態服務發現。

+0

我很努力去理解你答案中的要點。您看到MOM將提供位置透明性,彈性和負載平衡,這是服務發現的關鍵特徵。我不太明白「我需要的資源」或「可以信任」等,這可能是一個問題。我可以爲新消費者添加儘可能多的臨時碼頭集裝箱,並且它們將彈性地來來去去。使用主題我可以控制諸如使用最接近的消費者或最便宜的方面,並且MOM很可能已經提供了安全功能。如果可以詳細闡述一下,這將是非常棒的 –

+0

MOM將爲您創建一個覆蓋網絡。如果您控制連接到此覆蓋網絡的所有進程,則可能不需要服務註冊表或發現。您可以簡單地創建一個協議,在其中發送廣播消息,詢問「誰可以爲我做」並相信答案。 – Akira

+0

但問題是「在哪種情況下,我將受益於服務註冊和發現」。一個可能的答案與先前沒有對所有MOM參與者的信任有關。如果你不能或不想信任任何人,你只能信任註冊表。如果註冊表建議您應該使用資源A,那麼您可以與A進行交互。在您的示例中,似乎您控制了所有參與者,因此擁有註冊表不會在這方面提供任何其他功能。 – Akira