我们有一堆微服务,前面有一个 API 网关。我们创建了一个搜索服务,可以跨服务进行搜索并聚合客户端应用程序的数据。我们有两种方法来解决这个问题:
我喜欢第二种方法,因为它可以干净地隐藏 API 网关的搜索抽象,但由于每个微服务都负责联系搜索服务,因此服务之间可能存在搜索处理逻辑重复,这是我们希望避免的,因为我们拥有的服务数量巨大。
您认为更好的模式是什么?有没有比这些更好的架构可供我利用?
我不知道搜索服务的具体职责是什么,但如果如我想象的那样,它是一项聚合其他服务的信息以向用户显示的服务,我将使用以下两种方法之一来处理此问题:
搜索服务定期调用每个微服务,询问所需信息并进行相应处理。
如果搜索服务不知道何时生成此信息,并且您希望近乎实时地更新它,而无需进行密集轮询的成本,我将使用消息代理,其中不同的微服务将生成包含该信息的事件搜索服务将消耗它们并相应地更新其信息
无论哪种方式,我都不会使用 API 网关作为协调器来调用不同的微服务,因为 API 网关不应该了解任何有关业务逻辑的信息,它的职责只是作为外部调用的单一入口点,也许其他跨领域任务,例如审计或授权
在微服务架构中,数据通常分布在不同的服务中,每个服务都有自己的数据库。在这些微服务中实施多级搜索可能具有挑战性。有多种选择可以有效实施该解决方案。
参考下面的文章 https://vamsitokala.blogspot.com/2023/11/multi-level-search-in-microservice.html