基于微服务的分布式电商系统-妖猫商城
妖猫商城是一个采用微服务框架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
基于微服务的分布式电商系统-妖猫商城相关推荐
- 基于SSM框架大型分布式电商系统开发(1-2)
前言 开发个人的毕业设计,整个项目的静态页由别人提供,其余功能皆是自己开发,记录下开发流程. 第一章 分布式框架-Dubbox 1.Zookeeper 在Linux系统的安装(第一天) 1.1在Lin ...
- 尚硅谷2020微服务分布式电商项目《谷粒商城》学习笔记
尚硅谷2020微服务分布式电商项目<谷粒商城> 项目简介 资料 百度云 链接:https://pan.baidu.com/s/1eGCTi6pLtKbDCwBs-zCOzQ 提取码:1pm ...
- 基于JAVA电子产品专卖电商系统计算机毕业设计源码+系统+lw文档+部署
基于JAVA电子产品专卖电商系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA电子产品专卖电商系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Ja ...
- 大型分布式电商系统架构是如何从0开始演进
大型分布式电商系统架构是如何从0开始演进的?本文是学习大型分布式网站架构的技术总结.对架构一个高性能.高可用.可伸缩及可扩展的分布式网站进行了概要性描述,并给出一个架构参考.文中一部分为读书笔记,一部 ...
- 电商系统设计MySQL_基于MySQL设计的图书电商系统的制作方法
本发明涉及一种图书销售系统,尤其涉及基于MySQL设计的图书电商系统. 背景技术: 相较于传统的图书经营模式,网络图书销售的成本更低,且图书信息更新快,而消费者也能够随时随地购买图书,完全不受时间和空 ...
- 一款基于微信的小程序电商系统源码(前端+后台)带文字安装教程
小程序电商系统源码(前端+后台)带文字安装教程 运行环境 服务器宝塔面板 PHP 5.6 Mysql 5.5及以上版本 Linux Centos7以上 系统介绍: 1.一款基于微信的小程序电商系统,是 ...
- likeshop100%开源免费商用电商系统,PC商城、H5商城、小程序商城、安卓APP商城、苹果APP商城全部100%开源,免费商用
简介: 怎样是适合 能够通过开发文档部署文档,这是唯一的能力要求,上手非常简单.流畅. 使用宝塔部署,即可快速搭建PC商城.小程序商城.公众号H5商城.安卓APP.苹果APP. 如果你具备开发能力,也 ...
- HH SaaS电商系统移动端商城,买家选择商品规格的交互设计
文章目录 未完整选择商品规格时 商品图如何显示 库存如何显示 价格如何显示 选择规格提示文案如何显示 原型图 已选完整选择商品规格时 商品图如何显示 库存如何显示 价格如何显示 原型图 SKU下架后如 ...
- 搭建微服务架构的电商平台系统
业务介绍 基于传统电商业务搭建一套线上商城平台,主要涉及到三个角色分为平台.供应商.普通会员用户: 平台审核注册的供应商.审核供应商发布的商品.定义全平台商品促销活动等功能 供应商新建商品.发布商品. ...
最新文章
- 燃烧温度计算程序_【知识库】燃气燃烧器如何安全操作?
- java获取系统运行日志文件_java – 如何获取特定的日志文件并在jenkins控制台输出中显示其内容...
- 动态规划:斐波那契数列里面的东西?
- 关于小程序·云开发峰会,你想get的干货全在这了!
- jcmd_jcmd,大约JDK 11
- 二进制包如何知道go 版本_gops 是怎么和 Go 的运行时进行交互的?
- mysql 64位 安装1045_MySql 安装时的1045错误
- 玩转Docker镜像
- MyISAM与InnoDB的区别是什么?
- Go实战--golang中defer的使用
- linux在VM下分辨率的问题
- 小众却非常好用的文件同步备份工具-FileYee
- python实现的 AWGN信道下QPSK调制信号的平均相位估计
- Java经典算法题(一,kafka权威指南百度网盘
- ngix请求转发配置
- 平面设计配色方案有哪些
- 进击的马云,失落的码农
- Linux 学习笔记16 信号量
- 一个画多个bed文件venn图的好工具
- android相机实时滤镜,android 包含美颜等40余种实时滤镜相机
热门文章
- win10优化大师v1.0去插件免费版
- jpg在线转换成pdf
- 如何将网站提交到百度、Google等搜索引擎?
- 在linux上面如何解决高iowait问题
- linux系统调用create简单实例,linux文件编程-【系统调用】-creat()
- 一步步透彻理解Lock的Acquire和Release原理源码
- 使用vueaxios请求的get方式实现留言评论的添加,删除功能
- warning: /* within comment
- 用于低分辨率图像和小物体的新 CNN 模块SPD-Conv
- 关于LOAM系列SLAM算法中IMU的去重力和坐标系变换