畅购电商项目总结

本文详细介绍了构建一个B2C电商系统的技术栈和关键功能,包括使用Springcloud和SpringBoot的微服务架构,FastDFS分布式文件存储,JWT进行鉴权,通过nginx+lua+redis实现广告缓存和限流,canal进行数据同步,以及微信支付、订单处理和秒杀功能的实现策略。
摘要由CSDN通过智能技术生成

一. 项目简介

电商模式:B2C

前台页面:HTML+VUE+AJAX

电商环境:采用docker部署到虚拟机上(模拟服务器)

电商架构:Springcloud+SpringBoot

二. 静态页展示

三. 分布式文件存储

1)FastDFS简介

文件上传首先搭建 FastDFS,FastDFS是一个开源的轻量级分布式文件系统,解决了大容量存储和负载均衡的问题。

2)上传流程

四. 微服务网关限流&鉴权

1)微服务网关Gateway

搭建gateway网关,所有外部请求都经过网关,统一的进行管理,从而达到安全,性能,监控的目的,还可以在网关内部配置令牌桶,进行限流操作.令牌桶通过生成令牌的速度,达到先流的目的。

2)密码加密采用Bcrypt

密码需要加密,所以采用了Bcrypt技术,相对来说Bcrypt更安全,因为引入了盐机制。

3)JWT微服务鉴权

登录需要签发token,通过jwt进行签发和验证token得目的。

五. 商品管理

1)能够使用开源算法snowflake生成分布式id

  1. UUID 可以利用数据库也可以利用程序生成,一般来说全球唯一。
  2. Redis 当使用数据库来生成ID性能不够要求的时候,我们可以尝试使用Redis来生成ID。这主要依赖于Redis是单线程的,所以也可以用生成全局唯一的ID。可以用Redis的原子操作INCR和INCRBY来实现。

2)根据id增删改查

六. 网站首页高可用nginx+lua

1)使用nginx+Lua+redis实现广告缓存

  1. Lua是一个小巧的脚本语言,用标准的C语言编写一源代码的形式开放。
  2. OpenResty是一个基于NGINX的可伸缩的Web平台,提供了很多高质量第三方模块。

2)掌握nginx限流的基本使用方法

3)采用了redis二级缓存

七. 数据同步解决方案-canal

  1. canal可以用来监控数据库数据的变化,从而获得新增数据,或者修改的数据。
  2. canal是应对阿里巴巴存在杭州和美国的双机房部署,存在跨机房同步的业务需求而提出的。
  3. 通过canal进行监听数据库变化,发送到rabbitmq队列,消费者和生产者之间实现通信,达到数据同步目的。

八. 商品搜索

1)商品搜索以及页面渲染

2)商品搜索业务有:条件筛选,规格过滤,价格区间搜索,分页查询,排序查询,高亮查询

  1. 条件筛选:页面每次向后台传入对应的分类和品牌,后台据分类和品牌进行条件过滤即可。
  2. 规格过滤:规格这一部分,需要向后台发送规格名字以及规格值,我们可以按照一定要求来发送数据,后台接到数据后,可以根据前缀spec_来区分是否是规格,如果以则为规格数据,需要根据指定规格找信息。
  3. 价格区间搜索:价格区间查询,每次需要将价格传入到后台,前端传入后台的价格大概是 price=0‐500或者 price=500‐1000 依次类推,最后一个是 price=3000 ,后台可以根据-分割。
  4. 分页查询:页面需要实现分页搜索,所以我们后台每次查询的时候,需要实现分页。用户页面每次会传入当前页和每页查询多少条数据,当然如果不传入每页显示多少条数据,默认查询30条即可。
  5. 排序查询:排序这里总共有根据价格排序、根据评价排序、根据新品排序、根据销量排序,排序要想实现非常简单,只需要告知排序的域以及排序方式即可实现。
  6. 高亮查询:高亮显示是指根据商品关键字搜索商品的时候,显示的页面对关键字给定了特殊样式, 让它显示更加突出,如上图商品搜索中,关键字编程了红色,其实就是给定了红色样 式。

九. 用户认证

用户认证采用的是单点登录,并且会将cookie存储到浏览器缓存中,达到一处登录处处登录得目的,认证技术用到了 Springsecurity+oauth2解决认证方案,在项目中配置对应的公钥和私钥进行配对 匹配成功即可达到认证得目的。

十. 购物车

购物车用到了redis数据库+spring security,首先购物车里的数据每个人不一样,我们不可以搜索数据库中的数据,用key和value键值对形式存储到了redis数据库中,对每个商品加上标识,标识就是每个人的用户名,根据登陆人得用户名去匹配每个人购物车里的数据。

十一. 微信支付

  1. 能够根据微信支付的开发文档调用微信支付的api

  2. 完成统一下单生成微信支付二维码功能

  3. 完成支付回调的逻辑处理,掌握Ngrok的使用

  4. 完成推送支付通知功能

十二. 订单处理

1)通过rabbitmq的延迟消息完成超时订单处理

2)完成批量发货功能,了解第三方物流系统

3)完成自动收货功能,自动收获采用了定时任务组件Cron表达式,定时执行固定接口

十三. 秒杀

秒杀有两个限制,1.时间2.库存. 不同时间段显示不通商品,商品过了秒杀时间就恢复原价.而且需要考虑的是短时间内涌入大量请求,所以为了减轻系统压力,通过了流量削峰,自定义切面接口进行限流操作.并且数据库需要单独设计

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值