2017-02-27 143 views
4

我要申請微服務架構我的應用程序。微服務之間的內部交流將通過使用Akka來實現。但我不知道如何讓所有的微服務都知道並註冊對方。我有一些選項來設計服務註冊表和發現:微服務:服務發現和服務註冊與阿卡

1)使用Zookeeper作爲centrailized服務來保存所有微服務(節點)的所有元數據,並讓它們訪問這些元數據進行通信。每個節點的元數據包含Akka路徑(地址)信息,以便其他節點進行通信。

2)全部加入微服務(阿卡節點)向阿卡集羣,並且每個節點將保持彼此的基準進行通信。 Akka集羣支持八卦協議,它可以讓集羣中的所有節點一起感知。

任何人都可以給我一些有關此建議?如何在Akka之上高效設計服務發現和服務註冊?這有什麼選擇嗎?

+0

你寫的「微服務之間的內部通信將使用阿卡來實現」。這是否意味着每個服務都將使用akka http或者他們是否會通過akka直接與對方通信? –

+0

我的意思是他們會直接相互通信(通過TCP使用Kryo序列化)。從註冊表中發現服務後,每項服務將通過Akka直接進行通信 – Barcelona

回答

1

我已經因爲在使用中,在阿卡集羣微服務運行,與數個預定的播種者節點上,您提出的第二個辦法,建立類似的分佈式應用程序。每個微服務使用角色標識自己,並且具有它感興趣的角色列表。

每個節點/微服務都有一個監聽成員事件的actor,它負責保存對感興趣的節點的路徑地址,作爲節點間消息的路由器。

我很好使用這種方法,它很容易推進提供了可擴展性。