分布式系统在哪里发送请求?

时间:2014-12-07 21:04:46

标签: distributed microservices

分布式系统中的不同组件如何知道在何处发送消息以访问某些服务?

例如,假设我有一个处理身份验证的服务,以及一个处理搜索的服务。处理搜索的组件如何知道发送身份验证请求的位置?子域名是否更常用?如果是这样,复制如何在这种情况下工作?是否有一些本地IP地址的注册表处理所有这些路由?

1 个答案:

答案 0 :(得分:1)

您描述的问题称为服务查找/服务注册表/资源查找/ ..它取决于。这取决于您的系统有多大以及它的动态程度。

如果您只有很少的组件,那么在配置文件中存储必要的信息或将其作为参数传递可能是可行的。通常,许多人使用DNS作为查找系统,但由于缓存和长延迟,它不被认为是一个好的。

我认为大多数分布式系统都使用Zookeeper来存储这些信息。这样,所有服务只需要知道Zookeeper集群的IP地址。如果你有复制,你只需在Zookeeper中存储多个地址,根据你使用的系统,你需要自己选择一个地址,或者驱动程序这样做(如果你连接到一个复制的数据库)例如)。

另一种方法是使用消息队列,如ZMQ,它将消息转发到正确的实例。 ZMQ也可以处理复制和负载平衡。