微服务依赖于其他人做任何事情

时间:2017-02-25 23:02:54

标签: dependencies microservices relationships

目前我处理微服务并遇到一些问题(关于服务之间的关系),我很难找到一个好的答案/最佳实践。如果你能给我一个提示或建议你如何处理这个问题,那将是非常好的。

由于这些问题并非针对特定项目,因此我尝试使用以下示例尽可能清楚:

让我们假设您想要构建某种Youtube频道观察者,记录不同类型的频道(元)数据(视频,每小时视图/子计数,当前订阅),这些数据是在具体的时间间隔。

因此,应用程序必须提供两个主要功能,每个功能应构成一个微服务:

  • 添加/删除要观看的频道(=>经理服务)
  • 导入信息(=>导入服务)

这两种服务都提供了相互通信的API。

管理服务连接到一个数据库,该数据库包含需要观看的频道,其基本信息(姓名,联系方式......)以及这些观察到的频道当前订阅的频道,而导入服务具有包含所有其他更多面向时间序列的信息的数据库(视频,每小时视图/子计数)。

要添加频道,只需指定频道网址。所有其他信息(姓名,联系方式......)都由导入服务添加(但也可以由用户修改)。

总而言之,如果没有经理服务的信息,导入服务完全无用,而且如果没有可用的导入服务,经理服务只能显示用户指定的频道信息(最坏情况:仅限频道网址)。总的来说:他们相互依赖。

对于一般架构来说太多了。

我遇到的问题是,导入服务在很大程度上依赖于管理服务数据库中的数据并修改它:

  1. 在这两个服务之间共享管理服务数据库或者只能通过提供的API访问它是不是一个好主意?
  2. 无论数据库是否共享:两个服务都需要通道的模型类。分享那些可以吗?
  3. 这个架构是不是一个好主意(如果我们假设还有其他服务需要基本的频道信息)?

1 个答案:

答案 0 :(得分:2)

当两个微服务紧密耦合时,我建议考虑合并它们。为什么你想要微服务呢?它是一个应该增长很多的大型项目,可能由独立的团队进行工作吗? 不要只是因为它们很酷而是因为需要而做微服务。在一个相对较小的单人项目中,我通常不会建议使用微服务。

我会在microservices.io上阅读有关何时使用微服务架构以及在何处拆分的内容。