我正在研究微服务架构,实际上我想知道一些事情。
我非常同意使用(返回)服务发现来在基于 REST 的微服务上发出请求。我需要知道发出请求的服务(或至少是服务器集群的前端)在哪里。因此在这种情况下能够发现 ip:port 是有意义的。
但我想知道在处理 AMQP 时使用服务注册/发现的目的是什么(仅基于,没有 HTTP 可能的调用)?
我的意思是,使用 AMQP 就像“我需要它,并且我希望有人回答我”,我不必知道谁是向我发回响应的服务器。
那么使用基于 AMQP 的微服务的服务注册/发现的目的是什么?
感谢您的帮助
AMQP(实际上是任何 MOM)为进程提供了一种通信方式,而无需考虑实际的 IP 地址、通信安全、路由等问题。这并不一定意味着任何进程都可以信任或者甚至拥有有关与之通信的进程的任何信息。
消息队列确实解决了一半的过程:如何到达远程服务。但他们没有解决另一半问题:哪种服务适合我。换句话说,哪个服务:
- 有我需要的资源
- 值得信赖(托管在可靠的服务器上,具有令人满意的服务实施,位于当地法律与您的要求兼容的国家等)
- 收取您想要支付的费用(尽管人们很少讨论微服务的成本)
- 在处理您的服务所需的整个时间窗口内都会存在——请记住,服务器变得越来越不稳定。有些服务器实际上是可以持续几分钟的容器。
这两个问题几乎是线性无关的。为了解决第二类问题,网格计算中需要资源代理。还有资源分配,以确保上面的最后一项得到正确管理。
有一些替代策略,例如多播使用服务的意图并等待报价回复。例如,在这种情况下,您可能会进行反向拍卖。
简而言之,经验法则是,如果您没有关于要使用哪个服务的先验知识(硬编码或在某些配置文件中),您的代理将必须进行协商,其中包括动态服务发现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)