【问题标题】:How to hide multiple websockets services behind an API Gateway?如何在 API 网关后面隐藏多个 websockets 服务?
【发布时间】:2020-04-04 23:29:04
【问题描述】:

我正在开发一个项目,该项目在 API 网关后面有多个微服务,其中一些公开了 WebSockets API。

WebApp 需要能够与这些 API 交互。

.

这些 WebSocket API 可以使用具有自己协议的框架构建,使用或不使用 socket.io 等。

这种反思的主要目标是能够扩展并保持我的 WebSockets API 实现的灵活性。

我想到了两个解决方案:

  • 第一个是在网关上简单地代理请求,webapp 必须为每个微服务打开一个 websocket,这在我看来是一个设计缺陷。

  • 另一个是创建一个“通知服务”,它将是一个 WebSocket 服务器,它将保持与用户的传出连接,并能够根据自定义协议桥接传入消息和传出消息。缺点是我需要实现发布/订阅系统(或找到解决方案)。我没有深入研究它,但它看起来需要大量的工作和自制的解决方案,我不喜欢它。

在生产中公开这样的架构和 websockets 后,我没有找到提供反馈的文章,我希望在这里找到一些。

【问题讨论】:

    标签: websocket architecture microservices real-time api-gateway


    【解决方案1】:

    我同意你的观点,一个简单的代理解决方案似乎是不够的,因为它将内部接口暴露给客户端。我发现了两篇我认为可以解决您的问题的文章:

    The API Gateway Pattern

    Pattern: API Gateway / Backends for Frontends

    两者都谈到了您在问题中已经提到的问题:协议翻译是这种架构的一个优势,因为它将外部 API 与内部使用的协议分离。另一方面,由于要维护另一个组件而增加的复杂性被认为是一个缺点。

    第二篇文章还建议了一些可用于实现 API 网关的现有库(namley Netty、Spring Reactor、NodeJS),因此您可能需要花一些时间为您的项目评估这些库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-09
      • 2019-05-07
      • 1970-01-01
      • 2016-04-23
      • 1970-01-01
      • 2017-02-25
      • 1970-01-01
      • 2021-05-11
      相关资源
      最近更新 更多