避免微服务中的瓶颈
Avoid bottlenecks in microservices
我要为我的 Datawarehouse 应用程序应用微服务。应用程序中有 4 个主要微服务:
1) 数据服务:Import/Export DWH 的外部数据源和来自 DWH 的查询数据。
2) 分析服务:用于 UI
上的图表可视化
3) 机器学习:用于推荐系统
4) 报告:用于生成报告
示意图如下:
每个服务都有自己的数据库,它们通过 TCP 和 Thift 序列化直接相互通信。这里的问题是数据服务承受来自其他服务的高负载,并可能成为应用程序的 SPOF。 DWH 中的数据也很大(可能高达百亿条记录)。在这种情况下如何避免数据服务的瓶颈?或者我如何定义一个适当的有界上下文以避免瓶颈?
你可能会想
- 根据一些业务逻辑将
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.
关于"One database, multiple services":
每个微服务都需要有自己的数据存储,否则你没有分解。如果我们谈论的是关系数据库,那么这可以使用以下模式之一来实现:
- 每个服务的私有表 – 每个服务拥有一组只能由该服务访问的表
- Schema perService – 每个服务都有一个专用于该服务的数据库模式
- 每个服务的数据库 - 每个服务都有自己的数据库。
如果您的服务使用来自 Data Warehouse
数据库的单独表并且 Data Service
仅提供数据库访问层而没有任何额外的处理逻辑,那么是的,您可以删除 Data Service
并移动数据相应服务的访问逻辑。但另一方面想想——现在你只有一个地方 (Data Service
),它知道如何使用 Data Warehouse
访问和操作,这就是微服务的意义所在。
我要为我的 Datawarehouse 应用程序应用微服务。应用程序中有 4 个主要微服务:
1) 数据服务:Import/Export DWH 的外部数据源和来自 DWH 的查询数据。
2) 分析服务:用于 UI
上的图表可视化3) 机器学习:用于推荐系统
4) 报告:用于生成报告
示意图如下:
每个服务都有自己的数据库,它们通过 TCP 和 Thift 序列化直接相互通信。这里的问题是数据服务承受来自其他服务的高负载,并可能成为应用程序的 SPOF。 DWH 中的数据也很大(可能高达百亿条记录)。在这种情况下如何避免数据服务的瓶颈?或者我如何定义一个适当的有界上下文以避免瓶颈?
你可能会想
- 根据一些业务逻辑将
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.
关于"One database, multiple services":
每个微服务都需要有自己的数据存储,否则你没有分解。如果我们谈论的是关系数据库,那么这可以使用以下模式之一来实现:
- 每个服务的私有表 – 每个服务拥有一组只能由该服务访问的表
- Schema perService – 每个服务都有一个专用于该服务的数据库模式
- 每个服务的数据库 - 每个服务都有自己的数据库。
如果您的服务使用来自 Data Warehouse
数据库的单独表并且 Data Service
仅提供数据库访问层而没有任何额外的处理逻辑,那么是的,您可以删除 Data Service
并移动数据相应服务的访问逻辑。但另一方面想想——现在你只有一个地方 (Data Service
),它知道如何使用 Data Warehouse
访问和操作,这就是微服务的意义所在。