【问题标题】:Microservices and API gateways微服务和 API 网关
【发布时间】:2020-07-24 04:50:55
【问题描述】:

只是一般的好奇,我还没有找到任何关于它的信息。

我最近开始学习微服务及其周围的东西,例如 API 网关。我知道 API 网关可以是 Web 应用程序等的单一入口点。但是如果有多个服务,每个都有自己的集合(并且共享?),它们是否都在一个大的 API 网关下(用于共享授权、身份验证、访问控制等),还是每个都有一个网关?

【问题讨论】:

    标签: microservices api-gateway


    【解决方案1】:

    这取决于您的要求。 API-Gateway 只是一个带有一组谓词和过滤器的代理服务。例如,如果这些是同一个应用程序的服务或共享服务,那么我会将它们分别放在一个共享的 api-gateway 下,如果应用程序不同,则使用不同的 api-gateway。在您的情况下,如果您具有共享授权、身份验证、访问控制等,则可以创建单个 api-gateway。还取决于这组服务的连接强度以及它们之间的通信方式,一组服务是否应该通过 api 网关与另一组服务通信,或者它们是否可以直接交互。如果他们可以在没有 api 网关的情况下进行交互,那么您可以让 api 网关成为唯一的网关。例如,我们有一个 api-gateway 用于外部系统,另一个 api-gateway 用于前端应用程序,这样做是为了分离访问并更容易管理来自外部系统的请求。例如,如果您有一组服务是主应用程序,而第二组服务是训练系统,那么我为每组服务都制作了自己的 api-gateway,以便更好地隔离并通过单个服务进行通信点,不知道对方的实现细节。

    【讨论】:

    • 如果我有两种不同的产品/服务(只是理论上的),它们的关系不是很密切,例如一个视频平台和一个社交网络平台,但它们共享访问控制和授权/身份验证。它们会在同一个网关下,还是在不同的网关下?
    • 在我看来,在这种情况下,你应该尽可能地划分这组服务,并为每一个分配你自己的api网关,以及在你的环境中部署这些服务组(例如, Kubernetes 中的命名空间)。
    • 您可以使用可以部署在您的一个微服务集中的单个身份验证和授权微服务来管理单个身份验证和授权点(SSO-单点登录),或者您可以使用单独的身份验证和授权微服务,也可以单独部署。
    【解决方案2】:

    您可以通过单个 API 网关公开多个服务(REST、SOAP 等)。您可以创建微服务来实现您的业务逻辑,并通过将这些服务发布为 API 网关中的 API 来向外部用户/系统公开。 API-Gateway 将帮助您完成以下功能,

    1. 用户认证
    2. 用户授权
    3. 节流管理
    4. 报告
    5. 流量监控
    6. API 文档
    7. 和许多其他选项

    通过使用 API-Gateway,您无需担心 API 治理,即 API-Gateway 将管理它。比如你可以找到AWS API gateway,WSO2 API-Gateway之类的。

    【讨论】:

      猜你喜欢
      • 2019-10-01
      • 2018-01-06
      • 2019-04-06
      • 1970-01-01
      • 1970-01-01
      • 2018-01-25
      • 2019-10-27
      • 2018-12-10
      • 2016-01-14
      相关资源
      最近更新 更多