妖猫商城是一个采用微服务框架springcloud 实现的电商项目。

本项目实现了权限管理、商品管理(商品、属性、品牌、类目)等,并实现了商品详情页到支付的整个流程。

主要采用的技术如下:

redis:利用redis实现了微服务下的登录,商品详情页的缓存。

rockemq:利用rocketmq 实现了分布式事务

mongodb:利用mongodb存储购物车

nacos:注册和配置中心

sentinel: 降级、熔断、限流

zookeeper:分布式锁

分布式事务:异步消息解耦

交易创建成功后,订单、券、库存必须保证一致性,促销服务、商品服务、订单服务是分库部署的,传统单体的事务就不能满足要求了。这里采用基于消息异步回滚的方式,首先开始创建订单,订单的状态为不可见,然后进行锁券、减库存的操作,操作失败,发送回滚消息,下游的促销和商品服务收到回滚消息,进行回滚操作。

支付的流程:

跳到支付宝支付成功后,首先更新支付记录的状态为成功,然后发送消息通知订单系统。

订单服务收到支付服务的通知,然后更新订单状态,发送订单成功消息,通知下游的服务做订单成功的处理。

消息的消费:

消费过程不能保证不出异常,这里做的方式是首先将消息存储到本地消息表,这时候消息队列的使命就完成了,然后后台异步的去处理消息。

定时任务去处理消费失败的消息,本地消息表里添加了一个处理次数的字段,当处理次数达到一定数量的时候,则该消息标记为死亡,待技术人员修复问题后,重新去处理该失败的消息。

其次消息的消费还要保证幂等性。

妖猫商城后台:主要实现了系统管理、促销管理、商品管理

系統管理包含用户、角色、资源。

资源分两种菜单和动作,菜单资源控制着前端的菜单是否添加路由并显示,动作控制着url和页面上的按钮是否显示。

权限服务首先需要开启@EnableHttpAuth

@EnableHttpAuth
public class ProductConfig {

其次需要在配置文件上添加,这样该服务就开启了权限保护,接下来在后台接口上只需添加@LoginAuth("授权标识")

permission:enabled: true

前端的控制按钮的显示需要指令 v-action:授权标识 。

商品管理:分为类目、品牌、属性、商品添加、商品管理

后台类目:商品类目一般分为前端类目和后台类目,目前只实现了后台类目

品牌:品牌和商品类目是多对多的关系。

属性:属性分为销售属性和普通属性,销售属性影响商品的价格。

商品添加:

前台可以通过链接:http://localhost:8080/#/goods?id=22 (id替换成新创建的商品id)进入商品详情页

点击立即购买,未登录会引导去登录,登录成功后,就可以进入订单提交界面

点击结算,就会跳到支付页面,按流程向下,会看到这个页面

点击确认支付后,并输入交易密码,支付成功,点击完成,就会返回到我们的页面

支付结果页面

本地环境搭建:

后台服务源码地址:https://gitee.com/suzhe/ymall.git

后台管理系统源码地址:https://gitee.com/suzhe/ymall-manage.git

前台wap源码地址:https://gitee.com/suzhe/ymall-webapp.git

个别软件的windows版本:https://pan.baidu.com/s/1TGk4CbPCII2CdwJePutC4A

1、注册中心nacos:官网 https://nacos.io/zh-cn/docs/quick-start.html

点击startup即可启动

2、rocketmq启动

windows 需要配置环境变量

分别启动nameserver和broker

3、fastdfs:可以参考下面这篇文章

https://my.oschina.net/suzheworld/blog/2991071

4、mongo:可以参考下面这篇文章

https://my.oschina.net/suzheworld/blog/3031248

5、内网映射:支付返回和通知的地址,需要内网映射。

https://natapp.cn/

6、redis和zookeeper也需要搭建好。

pay-service下支付宝的沙箱环境配置需要修改成你的配置:

然后修改这些服务的相关配置文件

创建各个服务的数据表

启动所有的服务。

后台管理:

安装依赖。

$ yarn install

如果网络状况不佳,可以使用 cnpm 进行加速,并使用 cnpm 代替 yarn

$ yarn run serve

启动完成后打开浏览器访问

前端wap源码:

同样需要执行yarn install和yarn run serve运行。

转载于:https://my.oschina.net/suzheworld/blog/3100116

基于微服务的分布式电商系统-妖猫商城相关推荐

  1. 基于SSM框架大型分布式电商系统开发(1-2)

    前言 开发个人的毕业设计,整个项目的静态页由别人提供,其余功能皆是自己开发,记录下开发流程. 第一章 分布式框架-Dubbox 1.Zookeeper 在Linux系统的安装(第一天) 1.1在Lin ...

  2. 尚硅谷2020微服务分布式电商项目《谷粒商城》学习笔记

    尚硅谷2020微服务分布式电商项目<谷粒商城> 项目简介 资料 百度云 链接:https://pan.baidu.com/s/1eGCTi6pLtKbDCwBs-zCOzQ 提取码:1pm ...

  3. 基于JAVA电子产品专卖电商系统计算机毕业设计源码+系统+lw文档+部署

    基于JAVA电子产品专卖电商系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA电子产品专卖电商系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...

  4. 大型分布式电商系统架构是如何从0开始演进

    大型分布式电商系统架构是如何从0开始演进的?本文是学习大型分布式网站架构的技术总结.对架构一个高性能.高可用.可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考.文中一部分为读书笔记,一部 ...

  5. 电商系统设计MySQL_基于MySQL设计的图书电商系统的制作方法

    本发明涉及一种图书销售系统,尤其涉及基于MySQL设计的图书电商系统. 背景技术: 相较于传统的图书经营模式,网络图书销售的成本更低,且图书信息更新快,而消费者也能够随时随地购买图书,完全不受时间和空 ...

  6. 一款基于微信的小程序电商系统源码(前端+后台)带文字安装教程

    小程序电商系统源码(前端+后台)带文字安装教程 运行环境 服务器宝塔面板 PHP 5.6 Mysql 5.5及以上版本 Linux Centos7以上 系统介绍: 1.一款基于微信的小程序电商系统,是 ...

  7. likeshop100%开源免费商用电商系统,PC商城、H5商城、小程序商城、安卓APP商城、苹果APP商城全部100%开源,免费商用

    简介: 怎样是适合 能够通过开发文档部署文档,这是唯一的能力要求,上手非常简单.流畅. 使用宝塔部署,即可快速搭建PC商城.小程序商城.公众号H5商城.安卓APP.苹果APP. 如果你具备开发能力,也 ...

  8. HH SaaS电商系统移动端商城,买家选择商品规格的交互设计

    文章目录 未完整选择商品规格时 商品图如何显示 库存如何显示 价格如何显示 选择规格提示文案如何显示 原型图 已选完整选择商品规格时 商品图如何显示 库存如何显示 价格如何显示 原型图 SKU下架后如 ...

  9. 搭建微服务架构的电商平台系统

    业务介绍 基于传统电商业务搭建一套线上商城平台,主要涉及到三个角色分为平台.供应商.普通会员用户: 平台审核注册的供应商.审核供应商发布的商品.定义全平台商品促销活动等功能 供应商新建商品.发布商品. ...

最新文章

  1. 燃烧温度计算程序_【知识库】燃气燃烧器如何安全操作?
  2. java获取系统运行日志文件_java – 如何获取特定的日志文件并在jenkins控制台输出中显示其内容...
  3. 动态规划:斐波那契数列里面的东西?
  4. 关于小程序·云开发峰会,你想get的干货全在这了!
  5. jcmd_jcmd,大约JDK 11
  6. 二进制包如何知道go 版本_gops 是怎么和 Go 的运行时进行交互的?
  7. mysql 64位 安装1045_MySql 安装时的1045错误
  8. 玩转Docker镜像
  9. MyISAM与InnoDB的区别是什么?
  10. Go实战--golang中defer的使用
  11. linux在VM下分辨率的问题
  12. 小众却非常好用的文件同步备份工具-FileYee
  13. python实现的 AWGN信道下QPSK调制信号的平均相位估计
  14. Java经典算法题(一,kafka权威指南百度网盘
  15. ngix请求转发配置
  16. 平面设计配色方案有哪些
  17. 进击的马云,失落的码农
  18. Linux 学习笔记16 信号量
  19. 一个画多个bed文件venn图的好工具
  20. android相机实时滤镜,android 包含美颜等40余种实时滤镜相机

热门文章

  1. win10优化大师v1.0去插件免费版
  2. jpg在线转换成pdf
  3. 如何将网站提交到百度、Google等搜索引擎?
  4. 在linux上面如何解决高iowait问题
  5. linux系统调用create简单实例,linux文件编程-【系统调用】-creat()
  6. 一步步透彻理解Lock的Acquire和Release原理源码
  7. 使用vueaxios请求的get方式实现留言评论的添加,删除功能
  8. warning: /* within comment
  9. 用于低分辨率图像和小物体的新 CNN 模块SPD-Conv
  10. 关于LOAM系列SLAM算法中IMU的去重力和坐标系变换