我的问题与微服务有关。服务发现在几个主机之间传播的服务。
设置如下:
假设我有2项服务:
服务B部署10次(使用随机端口):主机A上5次,主机B上5次。
例如,当服务A与服务B通信时,它会向serviceB.example.com发送请求(硬编码)。
为了获得IP和端口,服务A应该向Consul服务器查询SRV记录。
它将获得10个ip:端口对,客户端应该为其应用一些负载平衡逻辑。
答案 0 :(得分:0)
我建议您查看Kontena。它将开箱即用解决这类问题。每项服务都有一个内部DNS,您可以在服务之间进行通信。 Kontena还内置了load balancer,它非常易于使用,因此很容易创建和扩展微服务。
还有很多内置功能可以帮助开发容器化应用程序,如私有映像注册表,对运行服务的VPN访问,秘密管理,有状态服务等。
Kontena是一个开源项目,代码在Github
上可见答案 1 :(得分:0)
如果您寻找最低限度的设置,您可以通过ribbon,Netflix'来包含从Consul收到的值。基于客户端的负载均衡器。
您会发现它是module for Spring Cloud.
我没有找到最新的独立示例,只有在{Dropwizard上下文中使用它的chrisgray's dropwizard-consul implementation链接。但它可能是你的起点。
答案 2 :(得分:0)
有几个选择:
localhost:1234
以获取服务A和{{1服务B.本地实例意味着你不需要为loadbalancer实例支付额外的往返费用,然后支付给实际的服务实例,但这对你来说可能不是问题。