我正在设计一个可伸缩的服务(springboot),使用该服务将数据索引到 flex 搜索。
用例:
我的应用程序使用6个具有相同架构的数据库(mySql)。每个数据库都针对特定区域。我有一个微服务,该服务连接到所有这些数据库,并以类似的方式将特定表中的数据索引到elasicsearch服务器(v6.8.8),每个数据库有6个Elasticsearch索引。
为此使用Quartz jobsRestHighLevelClient。还有每秒运行的增量作业,以使用审计和索引来查找更改。
当前问题:

  • 当前的设计不可扩展-一种服务可以完成所有工作(数据加载,映射,批量上传)。由于索引是通过夸脱作业完成的,因此扩展服务(运行多个实例)将多次运行同一作业。
  • 无故障转移-查找分布式Elasticsearch节点并将数据索引到这两个节点。如何有效地做到这一点。

  • 我正在考虑使用spring data elasticsearch同时将要持久化到数据库的索引数据。
    它提供所有功能吗?我用 :
  • Elasticsearch,从安装模板到创建/删除索引,别名。
  • 蓝色/绿色部署-索引到非 Activity 节点并更改别名。
  • 批量更新,查询,聚合..etc

  • 欢迎任何其他解决方案。谢谢你的时间。

    最佳答案

    您的用例之一是以可扩展的方式将数据从DB(Mysql)移至ES。它基本上是CDC(更改数据捕获)管道。
    您可以使用kafka-connect框架。
    流程应类似于:

  • 读取Mysql事务日志 => 将数据发布到Kafka(可以使用Debezium Source Connector来完成)
  • 从Kafka消耗数据 => 将其推送到Elastic Search(可以使用ES-SYNC Connector来完成)

  • 为什么使用框架?
  • 使用connect框架数据可以直接从Mysql Transaction日志中读取,而无需编写代码。
  • Connect框架是一个分布式可扩展系统
  • 它将减少数据库的负载,因为您现在不需要查询数据库来检测任何更改
  • 易于设置
  • 09-04 08:06
    查看更多