我将为我的Datawarehouse应用程序应用微服务。在应用程序中有4个主要的微服务:避免微服务中的瓶颈
1)数据服务:将外部数据源导入/导出到DWH并从DWH查询数据。
2)分析服务:图表的可视化上UI
3)机器学习:用于推荐系统
4)报告:用于报告生成
如下图:
每个服务都有自己的DB,它们通过TCP和Th直接相互通信ift序列化。这里的问题是Data Service受到来自其他服务的高负载,并且可能成为应用程序的SPOF。 DWH中的数据也很大(可能高达数百万记录)。在这种情况下如何避免数据服务的瓶颈?或者我如何定义一个正确的有界上下文来避免瓶颈?
我可以让其他微服务(如Analytics,Reports,ML)直接访问DWH数据库吗?所以在这种情况下,它将成为“一个数据库,多个服务”。因为DWH中的数据很大并且数据定期更新。 – Barcelona
@Barcelona我已更新答案 – Set
DataService(DS)仅向其他服务提供数据访问逻辑(基本CRUD),并且不提供其他处理逻辑。其他处理逻辑(如导入,导出...)用于客户端调用。我想让其他服务与DS通信的原因是因为我想隐藏如何访问,查询和更新DWH到其他服务的逻辑。其他服务只需调用DS即可获取或更新数据。 – Barcelona