2017-02-27 169 views
4

我要申请微服务架构我的应用程序。微服务之间的内部交流将通过使用Akka来实现。但我不知道如何让所有的微服务都知道并注册对方。我有一些选项来设计服务注册表和发现:微服务:服务发现和服务注册与阿卡

1)使用Zookeeper作为centrailized服务来保存所有微服务(节点)的所有元数据,并让它们访问这些元数据进行通信。每个节点的元数据包含Akka路径(地址)信息,以便其他节点进行通信。

2)全部加入微服务(阿卡节点)向阿卡集群,并且每个节点将保持彼此的基准进行通信。 Akka集群支持八卦协议,它可以让集群中的所有节点一起感知。

任何人都可以给我一些有关此建议?如何在Akka之上高效设计服务发现和服务注册?这有什么选择吗?

+0

你写的“微服务之间的内部通信将使用阿卡来实现”。这是否意味着每个服务都将使用akka http或者他们是否会通过akka直接与对方通信? –

+0

我的意思是他们会直接相互通信(通过TCP使用Kryo序列化)。从注册表中发现服务后,每项服务将通过Akka直接进行通信 – Barcelona

回答

1

我已经因为在使用中,在阿卡集群微服务运行,与数个预定的播种者节点上,您提出的第二个办法,建立类似的分布式应用程序。每个微服务使用角色标识自己,并且具有它感兴趣的角色列表。

每个节点/微服务都有一个监听成员事件的actor,它负责保存对感兴趣的节点的路径地址,作为节点间消息的路由器。

我很好使用这种方法,它很容易推进提供了可扩展性。