gpt4 book ai didi

microservices - 避免微服务中的瓶颈

转载 作者:行者123 更新时间:2023-12-05 00:52:35 25 4
gpt4 key购买 nike

我将为我的数据仓库应用程序应用微服务。应用中有 4 个主要的微服务:

1)数据服务:将外部数据源导入/导出到DWH并从DWH查询数据。

2) 分析服务:用于 UI 上的图表可视化

3)机器学习:用于推荐系统

4) 报告:用于报告生成

示意图如下:

enter image description here

每个服务都有自己的数据库,它们通过 TCP 和 Thift 序列化直接相互通信。这里的问题是数据服务承受来自其他服务的高负载并且可能成为应用程序的SPOF。 DWH 中的数据也很大(可能多达数亿条记录)。在这种情况下如何避免Data Service的瓶颈?或者我如何定义一个适当的有界上下文以避免瓶颈?

最佳答案

你可能会想

  • split Data Service基于一些业务逻辑,分成几个微服务;
  • 修改Data Service (如果需要)支持多个服务实例。然后使用负载均衡器在这些实例之间拆分请求。

  • A load balancer is a device that acts as a reverse proxy and distributes network or application traffic across a number of servers. Load balancers are used to increase capacity (concurrent users) and reliability of applications.



    关于“一个数据库,多个服务”:

    每个微服务都需要有自己的数据存储,否则,你没有分解。如果我们谈论的是关系数据库,那么这可以使用以下模式之一来实现:
  • 每个服务的私有(private)表——每个服务拥有一组只能由该服务访问的表
  • Schema perService – 每个服务都有一个专用于该服务的数据库模式
  • 每个服务的数据库——每个服务都有自己的数据库。

  • 如果您的服务使用来自 Data Warehouse 的单独表数据库和 Data Service只提供对数据库的访问层,没有任何额外的处理逻辑,那么可以,你可以去掉 Data Service并将数据访问逻辑移至相应的服务。但另一方面想一想——现在你只有一个地方( Data Service ),它知道如何使用 Data Warehouse 访问和操作这就是微服务的意义所在。

    关于microservices - 避免微服务中的瓶颈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42498492/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com