在实现基于事件源的微服务时,我们遇到的主要问题之一是汇总数据以进行响应。例如,我们可能有两个实体,例如学校和学生。一种微服务可能负责处理与学校相关的业务逻辑,而另一种微服务可能处理学生。
现在,如果有人通过REST端点进行查询并询问特定的学生,并且他们可能同时期望学校和学生的详细信息,那么对我来说唯一已知的方法如下。
使用类似服务链接的方法。一个示例是Api-Gateway在对几个微服务发出几个请求后汇总响应。
具有在所有服务中复制的所有内容。本质上,数据将是重复的。
让服务相互调用以获取这些额外的信息。该解决方案有效,但难以扩展,并且与使用事件源的基本思想背道而驰。
我的问题是,还有什么其他方法可以做到这一点?
答案 0 :(得分:0)
更好的方法是创建一个单独的报告/搜索服务,聚合来自这两个服务的数据。例如,使用 ElasticSearch 或 SOLR 实现。这现在允许用户跨多个服务和聚合进行搜索和查询。
当然,它最终会保持一致,但我怀疑这是一个问题。这可以更好地分离关注点,同时您还可以为您的用户提供良好的搜索体验。