我正在设计使用微服务的应用程序,但不确定使用哪种最佳机制从多个服务收集数据。
我相信有两种选择:
- 集成了“服务间”通信机制,该机制允许服务直接对话。在将合并的响应返回给API网关之前,API网关将调用单个服务,然后再调用其他服务来收集数据。然后,API将响应返回给调用方。(当对serviceB的调用需要serviceA的响应时,这必须是同步调用。IE单独的人和地址服务。)
- 让API网关直接调用每个服务,并在返回响应之前合并API中的数据。
我倾向于第二种选择,因为使服务彼此交谈会引入耦合,在这种情况下,我最好还是构建一个整体应用程序。但是,使用此选项时,我可以想到一些严重的缺点:
让API执行对多个服务的多次调用会增加API服务器的负载,尤其是在其中某些调用处于阻塞状态时。
这种方法意味着API必须“知道”应用程序正在尝试做什么(IE Logic必须被编程到API中才能依次处理调用服务,然后合并数据),而不仅仅是充当微服务的愚蠢“终点”。
我想知道解决此问题的标准方法是什么,是否还有我遗漏的第三种选择?