solr索引第七篇:索引库同步分析

问题描述:运营商系统调用了商品服务,对商品做了以下操作:
1.添加:在数据库中新添加(入库)商品数据;索引库数据添加;
2.修改:索引库数据更新;
3.删除:索引库数据删除;

运营商系统只能操作数据库数据,对数据库数据做了修改,添加,删除操作,但是索引库数据没有发生改变,造成索引库的数据和数据库的数据不一致。

解决方案:
1)商品服务调用搜索服务,实现索引库的同步:
不行,
服务层不能调用服务层;

2)商品服务添加,修改,删除,把相关商品的数据返回给运营商系统(服务消费者),由服务消费者调用搜索服务实现同步:
不采用;
缺点:
表现层只负责业务的分发,不负责业务处理;
表现层对事务无法无法进行控制;
不满足开发业务的规范;

3)开启副线程模式同步索引库(并发量较小)

4165335-bf5d7f7b8d02e35e.png
副线程用例.png

用户请求,主线程开发一个发短信的副线程:
副线程在后台进行发短信的任务,副线程执行这个任务可能需要耗费1s时间;
主线程直接返回结果给用户了,耗时可以忽略不记;
其实后台程序还在执行,如果处理失败了,就执行事务回滚。

4)mq消息中间件模式同步索引库(并发量较大)
mq和副线程的作用一样的;
本案例中,mq就是主线程,副线程就是一个个微服务;

4165335-1ceb4444831aee5d.png
消息同步框架.png

如何同步?
1⃣️商品服务添加,删除,修改, 向mq消息服务器发送一条消息;
2⃣️ mq收到消息,即刻ack回应,表示收到了消息,然后调用搜索服务,同步索引库。

这种实现,可能会出现的问题:
mysql数据库中数据改变了发送消息,mq接收到消息就会回应,之后就没有回应了,如果后续流程失败了, 消息发送者也不知道啊;

同步索引库业务分析

4165335-487e00b4f384ed7b.png
同步索引库业务分析.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值