目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

JAVA全系列 教程

3762个小节阅读:7091.5k

收藏
全部开发者教程

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(464)
赞(0)

可靠消息最终一致性分布式事务实现_本地消息表

image-20220411164733032

本地消息表模式的核心通过本地事务保证数据业务操作和消息的一致性,然后通过定时任务发送给消费方或者中间加一层MQ的方式,保障数据最终一致性。

库表设计

订单微服务中出库本地消息表:

image-20220411181057605

基础功能

image-20220411171142398

流程:

  • 1:用户下单,订单微服务创建订单,插入订单表
  • 2:同时插入本地消息表(订单的出库单本地消息表),并根据订单号设置消息表为待确认状态
  • 3:同步/异步调用库存微服务接口,扣减商品库存,并插入出库单。如果为了提高性能和用户体验,这里可以使用异步方案,使用线程或者MQ。
  • 4:同步/异步调用订单微服务接口,更新消息表为确认状态、更新订单状态为待出货状态

分析

在这里插入图片描述

Task微服务的任务

img

定时任务的作用:

  • 1:首先task微服务开启一个定时任务,定时去轮训订单微服务中的本地消息表中未确认的消息数据;
  • 2:然后调用库存微服务中的接口,根据订单编号(本地消息表和出库单表都有订单编号),判断本地消息表中的订单是否存在于出库单中;
  • 3:如果本地消息表中的订单在出库单中不存在,则调用库存微服务中的接口,更新商品库存,并插入出库单,在同一事务中操作;
  • 4:然后根据订单号更新本地消息表中的状态为已确认;如果更新消息失败,继续执行第一步操作;
  • 5:如果本地消息表中的订单在出库单中存在,则将消息状态更新为已确认;
  • 6:更新订单状态为待发货。

实时效果反馈

1.本地消息表实现可靠消息最终一致性分布式事务中Task定时任务的主要作用__

A 保证数据可靠性

B 保证数据最终一致性

C 保证数据可用性

D 以上都错误

答案

1=>B

 

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2