Skip to content

黑马程序员的spring cloud微服务项目,这里采用go-zero框架实现

Notifications You must be signed in to change notification settings

einyboycode/hmall-go-zero

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

54 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

黑马商城

一、项目介绍

黑马程序员的spring cloud微服务项目,这里采用go-zero框架实现

二、技术栈

etcd + mysql + redis + kafka +dtm

三、服务拆分

  • 用户服务

  • 商品服务

  • 订单服务

  • 购物车服务

  • 支付服务

四、相关模块对RPC方法的依赖(红色为rpc服务,绿色mq服务,白色为api服务)

1、商品服务的RPC方法

(1)商品查询

  • 商品服务更新时,通过mq服务更新缓存

  • 查询购物车列表,需要返回对应的商品信息

  • 购物车更新时,也是通过对应mq服务更新购物车列表缓存

  • 创建订单时也要用到商品信息

(2)扣减库存

  • 在订单服务中创建订单时,需要扣减相应商品的库存

2、地址管理服务的RPC方法,查询地址

  • 在订单服务中创建订单时,需要获取用户的地址

3、订单服务的RPC方法

(1)订单查询

  • 在支付服务中生成支付单时,要用到订单的信息

    (2)更新订单状态

  • 在支付服务中的余额支付成功后,改变订单状态

4、用户服务的RPC方法,扣减余额

  • 在支付服务中使用余额支付,会调用到扣余额的服务

5、删除购物车

  • 在订单服务中创建订单时,需要删除购物车中下单的商品

6、支付服务RPC,更新支付单流水

  • 在支付服务中的余额支付成功后,更新订单流水

五、分布式事务

1、订单创建服务

该服务中需要完成

  • 订单创建

  • 删除购物车

  • 扣减库存

事务时序图

  • 三项事务使用DTM进行控制,订单创建中的地址查询和商品查询是并发执行,然后需要写入三张表,订单表、订单详情表、订单物流表也是并发执行

  • 每一项事务提供对应回滚方法

2、支付服务

该服务中需要完成

  • 余额支付

  • 更新支付单流水

  • 改变订单状态

事务时序图

  • 余额支付中,先验证密码,在进行扣减,扣减后为负数进行回滚

About

黑马程序员的spring cloud微服务项目,这里采用go-zero框架实现

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Go 99.3%
  • Dockerfile 0.7%