我将为我的Datawarehouse应用程序应用Microservices。有4项主要的微型服务在应用中:
1)数据服务:将外部数据源导入/导出到DWH,并从DWH查询数据。
2)分析服务:用于用户界面上的图表可视化
3)机器学习:推荐系统
4)报告:用于生成报告
下图如下:

每个服务都有自己的DB,它们通过TCP和Thift序列化直接通信。这里的问题是数据服务承受着来自其他服务的高负载,并且可能成为应用程序的SPOF。DWH中的数据也很大(可能有上百兆的记录)。在这种情况下如何避免数据服务的瓶颈?或者如何定义一个有适当限制的上下文以避免瓶颈?
发布于 2017-02-28 13:56:25
你可能会想
Data Service分解为少量的微服务;Data Service (如果需要)以支持多个服务实例。然后使用负载均衡器在这些实例之间拆分请求。负载均衡器是一种作为反向代理并在多个服务器上分配网络或应用程序流量的设备。负载平衡器用于提高应用程序的容量(并发用户)和可靠性。
关于“一个数据库、多个服务”:
每个微服务都需要有自己的数据存储,否则,就没有分解。如果我们讨论的是关系数据库,那么可以使用以下模式之一来实现这一点:
如果使用与Data Warehouse数据库和Data Service分开的表的服务只提供访问层到数据库,而不提供任何附加的处理逻辑,则可以删除Data Service并将数据访问逻辑移动到相应的服务。但是,另一方面,现在您只有一个地方(Data Service),它知道如何使用Data Warehouse访问和操作,这就是微服务的意义所在。
https://stackoverflow.com/questions/42498492
复制相似问题