我们有一个漂亮的标准(我想考虑)的架构,如下所示:
现在,一些繁重的客户端页面需要从大约5个微服务中获取数据(某些调用可以是并行的)。您可以想象,这可能会导致问题。
想到了一些解决方案,希望人们可以考虑一下,或者提供替代方案:
将数据从微服务复制到第一个服务,这意味着只需调用一次
在这种情况下,这对我来说没有意义,因为服务是独立的..那么,此信息的“守护者”是谁?我们复制给谁?他们为什么要承担这项责任,而不是其他服务?
缓存(网络)
这听起来是最好的解决方案,并且易于实现。但是,如果数据经常更改,我们仍然可能会遇到问题。
聚合层
我们已经有了这个(GraphQL)。但是,尽管网络性能更好,但瓶颈只会使瓶颈更进一步。但是,即使它们是并行的,这仍然需要进行5次调用。
缓存数据库
拥有一个由每个团队管理的DB / API,这些团队从微服务订阅更新。因此,他们只需要拨打1个电话即可。但是,这对我来说,克服了聚合层(即GraphQL),和的问题,这意味着前端团队需要了解微服务和事件(而API网关应对此加以保护)。当然,我们可以让后端团队来解决这个问题-但是,我们又在图GraphQL / BFF的意义上败了,因为我们现在在后端创建另一个BFF。
非常欢迎您提供想法,建议和替代选择!