项目总结——云商城
2026/8/5 14:48:18 网站建设 项目流程

一、管理员

进行后台管理

二、数据库

分库:商品,订单,秒杀,用户+权限+支付log

三、文件上传和下载

  1. Ceph集群
  2. Swift API
  3. 配置用户信息,获取容器,使用容器进行upload+download

四、商品发布

id不为空,修改,id为空,增加

product:spu+skus

五、OpenResty:nginx+lua

动静分离:location

多级缓存:lua脚本+redis缓存,先查nginx缓存,再查redis,最后查后端服务

后端服务开启缓存:@CacheConfig,@Cacheable,@CacheEvict,@CachePut

缓存一致性:canal+EntryHandler+调用后端缓存更新接口

六、ES

  1. ES的构建:通过实现ElasticsearchRepository接口,重写方法,实现ES更新的Feign接口,canal调用feign接口,实现数据库更新同步ES索引
  2. ES的搜索:
  • 构建搜索条件:普通搜索+排序withSort+分页withPageable
  • 构建分组条件:品牌/分类:List;属性Map<String,Set<String>>
  • 亮亮:withHighlightBuilder

七、搜索页面+详情页面

数据绑定:thymeleaf+vue

商品详情静态页面:通过templateengine,使用模版+数据+输出,得到对应的静态页面

canal实时生成静态页面

八、购物车:Mongodb

查询多+数据量大+持久

1.数据量大;2.结构化的数据,比如JSON数据;3.支持复杂查询

mapper继承mongodbrepository

MongoTemplate操作:key是username+id

九、下单操作

1.订单

根据用户名查到对应列表

订单下单处理:先看库存,够用扣减,增加订单,增加订单明细,删除购物车数据

订单:使用Seata的AT模式,构建分布式事务组

2.支付

支付系统调用微信API,加密传输:MD5验签+AES

微信验签,微信进行预支付,返回二维码地址,前台通过Qrious展示二维码

微信进行密码输入,验证之后,返回支付结果给回调地址

支付系统通过MQ异步生成支付日志,异步更改订单状态

主动查询支付结果:将不可逆转的日志结果,存到pay_log,没有数据再去查微信支付服务

3.退款

更改订单状态退款申请中,进行退款申请,使用MQ让支付系统发起退款申请

支付系统使用MQ将退款申请结果返回给订单系统

成功:更改订单状态

不成功:回滚库存

十、每日秒杀

1.页面

秒杀商品:es索引库

秒杀商品详情页:静态页面生成

定时任务:elastic-job lite,当活动增加或修改,创建对应的定时任务删除静态页面

2.热门数据获取

Lua脚本收集logjson日志,发送给Kafka,

在访问html详情页的location里面,进行log_by_lua的配置,

Apache Druid:数据摄入:kafka

3.热门商品分离

每隔10分钟,读取新增热门商品,将islock改为1,进行隔离,加入缓存

4.秒杀隔离实现

微服务网关过滤器,拦截秒杀请求

进行排队判断:排队标识避免重复排队,加入RocketMQ

排队下单:使用redission分布式锁,先过布隆过滤器,然后下单,扣减库存,库存为0加入布隆过滤器

十一、网关鉴权

1.JWT令牌

登录的时候创建令牌,加上ip,返回给用户

用户访问,校验令牌+ip

2.网关过滤器

redis布隆过滤器里面存储对应的uri,先校验uri是否有效

redis存储对应的权限,先检查是否拦截,拦截就进行权限校验

ApplicationRunner:加入所有权限和所有角色权限映射

pathMatcher:通配符匹配

权限校验完,进行秒杀热商品排队

十二、限流

  • sentinel+gateway限流:网关API分组,限流规则
  • nginx限流:速率+连接数+黑白名单
  • LVS百万并发:NAT模式,TUN模式,DR模式

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询