在由消息总线驱动的架构中,它允许更普遍地访问数据。消费者可以决定如何使用数据。这不是由发送者决定的事情。将生产者和消费者分离所产生的力量远远超过任何引入的运营开销。
点对点在某些方面更容易,但它将数据与系统的其余部分隔离开来。这可以是一种福利,例如安全和隔离,但从长远来看,建立这些数据围墙花园将损害创新、开发速度和监控。
无效的 系统通常会混合使用这两种通信方式。例如,我们有一个服务 俄罗斯电报号码数据库 它会从消息总线接收命令,但会提供一个回调 URL,以便它们可以收集响应。我们本来可以简单地将消息发回总线。
我们之所以选择混合方法,是因为它更适合现有架构。我们也可以建立一个代理/负载平衡器,它可以分发消息,但看起来像一个实例。 点对点 在点对点中,您将直接在服务之间进行通信。
例如,您将直接将指标 POST 到端点、漏斗日志或请求操作。为了实现可扩展性,您通常需要考虑拥有多个支持该端点的实例。为此,您将拥有某种负载平衡器或代理。
设置和维护代理可能很麻烦,但它们也提供了巨大的功能。通常,您还必须在系统设计的早期解决服务发现问题。 使用负载平衡器在多个实例之间分配负载非常有用,在设计系统时可以说是必不可少。
一旦到位,它允许您轻松地将多个服务加载到一个框中并提供一致的端口签名。但是,最强大的功能是能够使实例从负载平衡器中失败。这允许正在运行的生产实例继续运行以进行故障排除,而不会损害整个系统的完整性。