首页 技术 正文
技术 2022年11月23日
0 收藏 961 点赞 2,128 浏览 993 个字

业务背景

  在大型网站中,为了减少DB压力、让数据更精准、速度更快,将读拆分出来采用搜索引擎来为DB分担读的压力,ElasticSearch就是目前市面上比较流行的搜索引擎,他的检索速度奇快、支持各种复杂的全文检索,在各种场景下对比其他的搜索引擎的检索速度都显得尤为出众。这篇就先不介绍ElasticSearch了,后续我会出一个ElasticSearch的教程,目前已经写的查不多了,mq相信大家应该最熟悉就不过多介绍了。

  使用搜索引擎,我们需要将DB中的数据同步到搜索引擎中,为了保证让用户看见最优质的数据所以讲搜索引擎中的数据进行优化,简称:搜索池。将一些不达标的数据不展示出给用户。将不同种类的数据类型,添加进入搜索池的条件,如果添加修改搜索池为同步操作,操作频繁并且如果处理时间过长可能会引发超时等等一些问题,影响了核心业务的操作。所以讲同步搜索池数据的操作采用mq异步执行同步数据任务,这样数据的同步就不会影响核心业务的操作。但是虽然解决了保证核心业务的处理但是有时也会有许多坑,这里作者就分享一次踩坑经历。

问题背景

  在批量同步数据的时候,每次执行了一遍删除数据的个数与添加一遍后的个数对不上,例如:一共有20条数据,删除一批数据剩10条,同样的添加了这批数据还剩18条,这2条数据就丢了。这时候就比较苦恼了,检查了业务与另一个线程的业务也没有发现报错或者逻辑出现问题。伪代码:

public Integer 方法名(参数){
//批量修改操作 DAO
参数集合.forEash(s->{
//遍历将变更数据唯一id发送mq
});
}

问题分析

  这里是修改完数据后发送mq请求,根据传参的不同添加或者删除 搜索引擎中的数据。按逻辑来说这样子写是没有什么问题的。但是经过层层的调试,终于发现了问题所在。在我们的系统中这个类是被加上事物的,因为是update数据所以这些操作都是会加上事物的。那事物为什么会影响呢?看下图

MQ异步同步搜索引擎ElasticSearch数据踩坑

  很明显的看到在没有真正修改数据之前先发送了mq请求,而mq拿到请求去查询这些数据的时候这些数据的状态还没有被真正修改。所以先发送mq请求和真正修改数据之间的短时间变差,导致了优先被发送mq请求的前几条数据出现问题。所以在批量发送mq请求的时候一定要注意事物控制的问题,单量操作一般不会出现问题,因为单量的速度是很快的。提醒大家在提高性能的同时,一定要仔细评估方案细节。

微信扫一扫

支付宝扫一扫

本文网址:https://www.zhankr.net/141042.html

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:875 阅读:5,090
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:806 阅读:3,508
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:565 阅读:4,320
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:730 阅读:4,314
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:4,920
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:3,105
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:8:00-16:00

客服电话

400-888-8888

客服邮箱

ceotheme@ceo.com

扫描二维码

关注微信公众号

扫描二维码

手机访问本站