【发布时间】:2015-10-18 05:51:38
【问题描述】:
我需要一些关于如何实现搜索以在微服务拥有的关系数据库中搜索关键字的建议。 我有一些带有自己的关系数据库的微服务。这些微服务很可能部署在 docker 容器中。 使用像 Apache SOLR 这样的搜索引擎的最佳方法是什么,这样每个微服务的数据库都可以被索引,我们可以实现关键字搜索
提前致谢
【问题讨论】:
标签: search solr microservices
我需要一些关于如何实现搜索以在微服务拥有的关系数据库中搜索关键字的建议。 我有一些带有自己的关系数据库的微服务。这些微服务很可能部署在 docker 容器中。 使用像 Apache SOLR 这样的搜索引擎的最佳方法是什么,这样每个微服务的数据库都可以被索引,我们可以实现关键字搜索
提前致谢
【问题讨论】:
标签: search solr microservices
这似乎是一个架构问题,虽然它是有道理的,但这个问题也有点开放式,具体取决于您的系统需要什么。我脑海中浮现的几件事是:
就个人而言,我自己从未使用过 DataImportHandler,但我最初的想法是它将 Apache SOLR 耦合到 MySQL。设置 DataImportHandler 需要 Apache SOLR 知道 MySQL 架构、访问凭据等。因此,我建议使用第二个选项,它会转向 shared-nothing 架构。
我将把 MySQL 支持的服务称为“实体”服务,因为它听起来像是用于保存某些特定类型对象的规范服务。实体服务和搜索服务将有自己特定的消费者,将来自 Kinesis 或 Kafka 的事件摄取到他们的数据存储中,搜索服务提供给 Apache SOLR,实体服务提供给 MySQL。
这有助于将服务与知道彼此存在的情况分离开来,并允许它们中的每一个相互独立地扩展。这将是数据的冗余,但应该没问题,因为数据访问模式不同。
我想提到的另一个警告是,它假定您要保存的实体是异步的。请注意,此系统中的消息目前不需要将其持久化在 MySQL 中,在本例中是实体服务。但是,您可以根据自己的喜好对其进行更改,以便消息保留在实体服务中,然后通过队列传播到搜索服务以进行索引。在它被索引后,您可以添加额外的端点来搜索 Apache SOLR。希望这能让您对其他一些架构如何发挥作用有所了解。如果您对您的系统和所涉及的实体有更多的了解,您可能会得到更好的答案。
【讨论】: