微服务,amqp和服务注册/发现

mfr*_*het 6 architecture rest service-discovery amqp microservices

我正在研究微服务架构,实际上我想知道一些事情.

我很好地使用(返回)服务发现来基于REST的微服务提出请求.我需要知道提出请求的服务(或至少是服务器集群的前端)的位置.因此,在这种情况下能够发现ip:port是有意义的.

但是我想知道在处理AMQP时使用服务注册表/发现的目的是什么(仅基于,没有HTTP可能的调用)?

我的意思是,使用AMQP就像"我需要它,我希望有人能回答我",我不必知道是谁将服务器发回给了我.

那么使用基于AMQP的微服务的服务注册/发现的目的是什么?

谢谢你的帮助

Aki*_*ira 5

AMQP(实际上是任何MOM)为进程提供了一种通信方式,而不必考虑实际的IP地址,通信安全性,路由以及其他问题.这并不一定意味着任何流程都可以信任甚至拥有与其通信的流程的任何信息.

消息队列确实解决了一半的过程:如何到达远程服务.但他们没有解决另一半:哪种服务对我来说是正确的.换句话说,哪些服务:

  • 拥有我需要的资源
  • 可以信任(托管在可靠的服务器上,具有令人满意的服务实施,位于当地法律符合您要求的国家/地区等)
  • 收取您想要支付的费用(尽管人们很少讨论微服务的成本)
  • 将在处理您的服务所需的整个时间窗口期间存在 - 请记住,服务器变得越来越不稳定.有些服务器实际上是可以持续几分钟的容器.

这两个问题几乎是线性独立的.要解决第二类问题,您需要在网格计算中使用资源代理.还有资源分配,以确保正确管理上面的最后一项.

有一些替代策略,例如组播使用服务的意图和等待提供回复.例如,在这种情况下,您可能会进行逆向拍卖.

简而言之,经验法则是,如果您没有关于要使用哪种服务(硬编码或在某些配置文件中)的先验知识,则您的代理将必须进行协商,其中包括动态服务发现.