【问题标题】:Microservice Aggregator Service BFF微服务聚合器服务 BFF
【发布时间】:2020-09-28 11:16:15
【问题描述】:

假设我有 22 个微服务。我在本地使用 docker 开发。

客户想要获取包含 3 种不同服务数据的产品模型数据并将它们聚合。 我应该使用聚合器网关 api 还是 SPA 与每个服务分开获取。聚合器服务是否耦合服务?

【问题讨论】:

    标签: microservices


    【解决方案1】:

    这些微服务模式总是伴随着权衡。在这里,当您使用聚合器模式(后端为前端)时,您需要考虑的不仅仅是耦合问题。

    在使用此模式之前,您需要考虑以下几点。

    1. 延迟问题。如果您希望此实现在没有任何延迟问题的情况下变得更好,那么您的服务和聚合器应该位于同一位置或同一数据中心。避免来自聚合器的第三方调用。
    2. 这可能会导致单点故障。确保您的设计使服务具有高可用性。
    3. 实施弹性设计和超时,因为此聚合器正在调用其他服务并获取数据。如果一个或多个服务调用花费的时间太长,它应该超时并返回部分数据集。考虑您的应用程序将如何处理这种情况
    4. 监控您的聚合器及其子服务调用。使用相关 ID 实现分布式跟踪以跟踪每个调用。
    5. 确保聚合器具有足够的性能来处理负载,并且可以扩展以满足您的预期增长。

    这些是我可以建议的最佳做法,您是可以根据您的系统要求和这些要点做出决定的最佳人选。

    【讨论】:

    • 在不调用其他服务的情况下复制数据呢?
    • @erenarslan 然后你必须照顾服务之间的数据同步
    • 否则微服务的反模式? Autonomy ABD 自立
    【解决方案2】:

    将 BfF 服务用作聚合对各种后端数据服务的调用的编排层有一些引人注目的优势。

    1. 它将降低 SPA 数据访问区域的复杂性。
    2. 它还可以减少加载时间。
    3. 随着时间的推移,假设 BfF 由前端开发人员维护,您的前端开发人员将不太可能被后端开发人员阻止。

    查看Consistency, Coupling, and Complexity at the Edge 上的这篇文章,该文章对此进行了更详细的介绍,并提出了一些最佳实践,例如 GraphQL 与 REST。

    【讨论】:

      猜你喜欢
      • 2021-11-01
      • 2020-01-30
      • 2022-08-19
      • 2021-11-08
      • 2020-10-04
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多