拉新分布式系统简单介绍

需求分析

1024商城采用分布式架构部署的一个大型网上商城系统,类似于京东商城。本系统分前台系统和后台系统。前台系统主要负责商城的页面的显示功能,这里采用的面向服务的方式,pc端手机端只负责显示页面,业务逻辑都在服务层实现,客户端调用服务端接口来实现显示功能。
系统采用分库,分模块设计,
优惠券模块:

  • 优惠券记录服务
    分页查询领劵记录 、加锁优惠券、 释放优惠券、根据领劵id查找详情
  • 优惠券服务
    分页查询优惠券、领券接口、新用户注册领券

订单模块:

  • 订单服务
    创建订单、查询订单状态、定时关闭订单、分页查询我的订单、订单二次支付、支付结果回调通知

用户模块:

  • 用户服务
    发送邮件验证码、检验邮件验证码、登录服务、注册服务、图形验证码服务、查看用户详情、上传图片
  • 地址服务
    新增收货地址、根据id删除收货地址,收货地址列表、收货地址详情

网关模块:

  • 网关
    负责转发服务

商品模块

  • 商品记录服务
    锁定商品库存、恢复商品库存、根据id查找商品详情、根据id批量查找商品详情、分页查找商品列表

  • 购物车服务
    添加购物车、清除购物车、查看我的购物车、删除购物项、修改购物车商品数量、确认购物车商品信息

  • 轮播图服务
    轮播图列表服务

普通模块

  • 配置
    swagger配置、redisson的配置、mybatisplus分页插件的配置

  • 枚举
    地址状态、异常状态、客户端类型、优惠券类别、优惠券状态、优惠券发布状态、订单支付类型、订单状态类型、订单类型、库存状态、发送验证码类型

  • 异常
    自定义异常、总的系统异常、流量异常

  • 固定值
    CahceKey: 注册验证码 code:%s:%s 、购物车 cart:%s 、提交表单 order:submit:%s
    TimeConstant:订单支付有效时间

  • 工具
    判断是邮箱或者手机符合规则
    JsonData工具
    JWT登录权限校验工具
    CommonUtil工具 ,生成需要长度的数字,md5加密,得到当前时间轴,获取ip,响应object给前端

###调用模式

  • 用户服务:
    发放优惠券

  • 优惠券服务:
    查询订单状态

  • 订单服务
    锁定优惠券
    查看优惠券是否可用
    查询用户地址防止越权设计
    锁定商品库存
    确定商品
    获取商品最新的价格

  • 商品服务
    查询订单状态

数据库设计

  • 用户数据库设计
    user表
字段名字解释
id自增主键
name姓名
sex性别
head_img头像
point积分
slogan用户签名
create_time创建时间
pwd密码
secret敏感字段加密
mail邮箱

address表

字段名字解释
id自增主键
user_id用户的id
default_status是否为默认收货地址
recevice_name收货人姓名
phone手机号码
province省/直辖市
city
region
detail_address详细地址
create_time创建时间
  • product数据库设计
    轮播图设计
字段名字解释
id自增id
img图片
url跳转地址
url权重

product设计

字段名字解释
id自增id
title标题
cover_img封面图
detail详情
old_amount老的价格
amount新的价格
stock库存
create_time创造时间
lock_stock锁定库存

product_task设计

字段名字解释
id自增主键
buy_num购买数量
product_name商品名字
lock_state锁定状态
create_time创造时间
out_trade_no订单号
product_id商品id
  • coupon数据库设计
    coupon表
字段名称解释
id自增
category类别
publish发布类型
coupon_title优惠券标题
coupon_img优惠券名称
price价格
user_limit用户限领张数
start_time生效时间
end_time过期时间
stock优惠券库存
create_time创建时间
publish_count发布张数
condition_price优惠券门槛

couponrecord表

表字段名解释
id自增主键
user_id用户id
user_name用户名字
user_state用户使用状态
coupon_id优惠券id
coupon_title优惠券标题
start_time开始时间
end_time结束时间
order_id订单id
price抵扣价格
condition_price

coupon_task表

表字段名解释
id自增主键
coupon_record_id领卷记录id
lock_state锁定状态
out_trade_no订单号
create_time创建时间

order数据库设计
product_order

表字段名解释
id自增主键
out_trade_no订单编号
state状态
create_time订单生成时间
total_amout订单总金额
pay_amout实际支付价格
pay_type支付类型
nickname昵称
head_img头像
user_id用户id
del是否删除
update_time更新时间
order_type订单类型
recerver_address收货地址

product_order_item

表字段名字解释
id自增主键
order_out_no订单编号
product_order_id订单id
product_id商品id
buy_num购买数量
product_img商品图片
create_time创建时间
total_amount总价
amount单价

技术分析

  • rabbitMQ
    当延迟队列,消息先投入(普通交换机,普通交换机绑定私信交换机),消费时从(死信队列也是普通交换机)里面消费,监听死信队列
  • nacos
    注册服务,网关转发
  • redission
    redis的分布式锁,解决redis原子性锁不能自动续期的问题
  • redis
    图片验证码
    redis中key 是 captchar:md5(user-agent+ip) 32 ,value 是captcharContext
    只有通过图片验证码才会发送邮箱验证码,邮箱验证码也是用redis存储
    redis中key是 code:%s:%s,第一个%s是用来SendCode_Enum ,第二个%s是发送的to邮箱 ,value 是  code_currentTime, code是随机生成验证码,currentTime是当前生成时间
    60秒内不重新发送,防止盗刷
	整个结构在redis中使用RedisTemplate<String,String>存储
	
	购物车用redis存储
	购物车的键值,redis中key是 cart:%s   %s是用户的唯一标识,一般使用userId
    整个结构是redisTemplate<Sting,Hash>, Hash中的第一个是ProductId,第二个就是CartItemVO
    方法有 add delete  confirmCart changeNum  showCart 	deleteitem
  • task表
    恢复锁定的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值