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

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

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

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

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

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

副线程用例.png

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

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

消息同步框架.png

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

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

同步索引库业务分析

同步索引库业务分析.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,041评论 2 89
  • 亲爱的儿子:哲,你今天给妈妈打电话的那一刻,妈妈看见了你,心中无比的高兴,儿子平安回来了!当听到说你爸爸明天住院治...
    儿子的小鱼阅读 120评论 0 0
  • 听到有趣的聊天,其中之一是城里人,他的观点是山区人民就应该比城里人勤劳,但是所谓的他见过的山区人民也不见得多勤劳。...
    六月的星星阅读 313评论 0 0
  • 亲爱的跃迁群的伙伴们,大家早上好!欢迎大家能够准时准点的来到我们2018年1月第四周周检视会的空中会场,在这里,请...
    N南亚Y阅读 181评论 0 0
  • 作者: 克里斯托弗·麦克杜格尔 出版社:南海出版公司 出版日期:2012年8月 文章摘要: 马克吐温曾说:我们要努...
    ROSA711阅读 563评论 0 51