分布式系统中的不同组件如何知道将消息发送到何处以访问某些服务?
例如,假设我有一个处理身份验证的服务和一个处理搜索的服务。处理搜索的组件如何知道将身份验证请求发送到哪里?子域更常用吗?如果是这样,复制在这种情况下如何工作?是否有一些处理所有这些路由的本地 IP 地址注册表?
分布式系统中的不同组件如何知道将消息发送到何处以访问某些服务?
例如,假设我有一个处理身份验证的服务和一个处理搜索的服务。处理搜索的组件如何知道将身份验证请求发送到哪里?子域更常用吗?如果是这样,复制在这种情况下如何工作?是否有一些处理所有这些路由的本地 IP 地址注册表?
您描述的问题称为服务查找/服务注册表/资源查找/ .. 它取决于。这取决于您的系统有多大以及它有多动态。
如果您只有很少的组件,则将必要的信息存储在配置文件中或将其作为参数传递可能已经足够可行。通常,许多人使用 DNS 作为查找系统,但由于缓存和长延迟,它被认为不是一个好的系统。
我认为大多数分布式系统都使用Zookeeper来为它们存储这些信息。这样,所有的服务只需要知道 Zookeeper 集群的 IP 地址。如果您有复制,您只需在 Zookeeper 中存储多个地址,并且根据您使用的系统,您需要自己选择一个地址,或者驱动程序会这样做(如果您要连接到复制的数据库例如)。
另一种方法是使用消息队列,例如 ZMQ,它将消息转发到正确的实例。ZMQ 也可以处理复制和负载平衡。