假设我们有一个存储约会的系统。每个预约都有多个资源(例如,培训师、房间等)。我们已决定将所有约会数据移动到约会服务中,并将所有资源移动到资源服务中。
现在我们需要一个UI来显示约会的过滤器,以按培训师过滤。通常,您只想显示实际有预约的培训师的复选框,而不是所有培训师的复选框。
这意味着我们不能真正使用资源服务来获取所有培训师,相反,我们必须要求约会服务获得至少有一个预约的所有培训师的分组视图。然后,我们将不得不调用资源服务来获取有关每个培训师的更多信息。
那么,如何从微服务中获取分组数据呢?
编辑:每个系统都有自己的数据库。我们还使用RabbitMQ在服务之间同步数据。
发布于 2019-05-03 22:27:12
这是一个有趣的问题,有许多可能的解决方案。@Welbog评论根据应用程序的规模提出了一个很好的观点。非正规化数据库显然是一种可能性。
获取分组的数据是实现微服务的挑战之一,并且我们的服务获得的粒度越大,这个挑战就越大。您的数据库设置是什么样子的?我假设您的两个服务使用不同的数据库,否则您的问题将有一个简单的解决方案。
在不了解您的系统的细节的情况下,我会假设对数据库的进行反规范化将是阻力最小的方法。
您可以探索这样一种想法,即也许这两个服务实际上应该是单个服务。纳米服务不是我们想要的,有时两个服务实际上在一起更合乎逻辑。必须一起改变的东西,应该一起包含。我不是说这在你的情况下是适用的,我只是说它值得考虑。
我相信其他人会有不同的想法,但基于我对整个系统知之甚少,很难说;然而,我认为这是一个有趣的问题,我将遵循这个问题,看看其他人提出的解决方案是什么。
https://stackoverflow.com/questions/55970673
复制相似问题