elasticsearch 关于每个微服务一个Elasticsearch实例的架构问题,elasticsearch,architecture,microservices,elasticsearch,Architecture,Microservices" /> elasticsearch 关于每个微服务一个Elasticsearch实例的架构问题,elasticsearch,architecture,microservices,elasticsearch,Architecture,Microservices" />

elasticsearch 关于每个微服务一个Elasticsearch实例的架构问题

elasticsearch 关于每个微服务一个Elasticsearch实例的架构问题,elasticsearch,architecture,microservices,elasticsearch,Architecture,Microservices,我喜欢微服务的方式。比一块巨石更容易(或更容易)部署、管理、开发等等。microservices模式表示每个microservice有一个数据库实例,在大多数情况下这不是问题,但在某些情况下却是问题。我用一个例子来解释我的问题 我有一个网络服务,用户可以上传图像,其他用户可以对其进行评论和评分,还有一个查看计数器。现在我将实现4个服务 上传图像服务 用户将其图像上传到网站 图像包含一些元信息,如描述、标题、标签、上载日期 评论服务 如果用户向图像添加注释,则此服务将处理请求并在数据库中创建

我喜欢微服务的方式。比一块巨石更容易(或更容易)部署、管理、开发等等。microservices模式表示每个microservice有一个数据库实例,在大多数情况下这不是问题,但在某些情况下却是问题。我用一个例子来解释我的问题

我有一个网络服务,用户可以上传图像,其他用户可以对其进行评论和评分,还有一个查看计数器。现在我将实现4个服务

  • 上传图像服务
    • 用户将其图像上传到网站
    • 图像包含一些元信息,如描述、标题、标签、上载日期
  • 评论服务
    • 如果用户向图像添加注释,则此服务将处理请求并在数据库中创建一个条目,其中包含属性content、videoId、userId和date
  • 查看柜台服务
    • 始终如果用户查看/单击该图像,将创建一个新的服务请求,并在数据库中存储一个带有用户id和视频id的新条目
  • 每个服务都有自己的数据库,所有服务彼此完全独立。服务之间的通信仅通过RESTAPI进行。数据库是弹性搜索

    问题来了。我将创建第四个服务“图像搜索服务”。这是一项非常常见的任务,就像youtube中的搜索功能一样。 为了获得最佳搜索结果,我需要前面3项服务中的每个属性/信息。当然,搜索取决于标签、描述和上传日期,但喜欢/不喜欢也会产生影响,以及视图和评论。例如,具有高视图计数的图像将排名更高

    <>但是当我把所有这些信息存储在单独的DBS中时,我不能在一个查询中考虑它,但是我认为这是全文搜索的必要条件。 是否有人可能有一些经验或想法来解决这个问题,或者是否有最佳实践?我对事件来源有一些了解,但这不是解决这个特殊问题的正确方法


    当然,我可以为每个服务创建三个请求,然后自己创建一个算法并合并结果,但我认为elasticsearch是这个工作的合适人选

    JHipster在mysql数据库上使用elasticsearch。也许这是一个解决办法