带spring数据elasticsearch的可伸缩elasticsearch模块是否可行?

a8jjtwal  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(1)|浏览(291)

我正在设计一个可伸缩的服务(springboot),使用它可以将数据索引到ElasticSearch。
用例:
我的应用程序使用6个具有相同模式的数据库(mysql)。每个数据库都迎合特定的地区。
我有一个微型服务,它连接到所有这些数据库,并以类似的方式将特定表中的数据索引到elasicsearch服务器(v6.8.8),每个数据库有6个elasticsearch索引。 Quartz jobs 为此目的而雇用 RestHighLevelClient . 此外,还存在每秒运行的增量作业,以使用审核和索引查找更改。
当前问题:
当前的设计是不可伸缩的—一个服务完成所有的工作(数据加载、Map、批量升级)。因为索引是通过quarts作业完成的,所以scaling服务(运行多个示例)将多次运行同一个作业。
无故障转移-寻找分布式elasticsearch节点并将数据索引到两个节点。如何有效地做到这一点。
我在考虑 spring data elasticsearch 在将数据持久化到数据库时索引数据sametime。
它提供所有的功能吗?我使用:
elasticsearch从安装模板到创建/删除索引、别名。
蓝色/绿色部署-索引到非活动节点并更改别名。
批量升级、查询、聚合等
欢迎任何其他解决方案。谢谢你的时间。

ujv3wf0j

ujv3wf0j1#

其中一个用例是以可伸缩的方式将数据从db(mysql)移动到es。它基本上是一个cdc(更改数据捕获)管道。
您可以使用kafka连接框架来实现相同的功能。
流程应该是这样的:
read mysql transaction logs=>将数据发布到kafka(这可以使用debezium source connector完成)
使用kafka的数据=>将其推送到ElasticSearch(这可以使用es sync connector完成)
为什么要使用框架?
使用connect框架可以直接从mysql事务日志中读取数据,而无需编写代码。
connect框架是一个分布式的、可扩展的系统
它将减少数据库的负载,因为现在不需要查询数据库来检测任何更改
易于设置

相关问题