基于微服务架构的关键字搜索

时间:2015-10-18 05:51:39

标签: search solr microservices

我需要一些关于如何实现搜索以搜索微服务所拥有的关系数据库中的关键字的建议。 我有一些微服务与自己的关系数据库。这些微服务可能部署在docker容器中。 使用像Apache SOLR这样的搜索引擎的最佳方法是什么,以便每个微服务都可以使用。数据库可以编入索引,我们可以实现关键字搜索

提前致谢

1 个答案:

答案 0 :(得分:1)

这似乎是一个架构问题,虽然它有意义,但问题也有点开放,取决于您的系统需要什么。我头脑中的一些事情是:

  1. 使用Apache SOLR中的DataImportHandler
  2. 使用像Kafka或Kinesis这样的消息队列,并在此情况下使用独立服务传播到他们的数据存储,Apache SOLR支持的搜索服务和MySQL支持的其他服务。
  3. 就个人而言,我自己从未使用过DataImportHandler,但我最初的想法是它将Apache SOLR与MySQL相结合。设置DataImportHandler需要Apache SOLR知道MySQL架构,访问凭据等。因此,我建议第二个选项转向无共享架构。

    我打算将MySQL支持的服务称为“实体”服务,因为它听起来像是用于保存某些特定类型对象的规范服务。实体服务和搜索服务将拥有自己的特定消费者,从Kinesis或Kafka将数据存储中的事件,Apache SOLR的搜索服务和MySQL的实体服务提取。

    这有助于将服务与已知彼此存在的服务分离,并允许每个服务彼此独立地扩展。这将是数据的冗余,但它应该没有问题,因为数据访问模式是不同的。

    我想提到的另一个警告是,它假定您要保存的实体是允许异步的。请注意,此系统中的消息不要求它在MySQL中持久保存,在本例中是实体服务。但是,您可以根据自己的喜好对其进行更改,以使消息在实体服务中保留,然后通过队列传播到搜索服务以进行索引。在索引之后,您可以添加其他端点来搜索Apache SOLR。希望这能让您对其他一些架构如何发挥作用有所了解。如果您对您的系统和涉及的实体有更多的了解,您可能会得到更好的答案。