我理解etcd/consul/$whatever想要解决的问题。服务消费者需要与服务提供者交流,一个极其复杂的分布式系统需要一种机制来将二者联系起来。
然而,“服务消费者应该去哪里发送请求?”的问题是老问题了,而且在我看来,已经通过MOM——面向消息中间件得到了解决。
在MOM中,服务消费者不关心服务提供者位于何处。他们只需发送消息,让消息总线负责将消息路由到适当的消费者即可。可能有多个服务提供者都在做同样的事情(基于队列的轮询),或者有版本化的提供者(/v1/request发往其中之一,/v2/request发往另一个)。
这是一种简单、强大的集成模式,完全将服务接口与实现分离。
尽管如此,我仍然看到了一种奇怪的迷恋于发现服务提供者的现象,它似乎会在消费者和提供者之间产生紧密耦合(除了其他几种反模式)。
那么,我在这里错过了什么?谢谢您。