认清现实 , 放弃幻想。 (特此感谢动力节点老杜分享出来的学习路线)
10. 第十阶段:互联网项目实战
10.1 项目:动力商城
10.1.1 技术架构
SpringBoot + SpringCloud + Mysql-Cluster + Mybatis-plus + Redis-Cluster+ MongoDB + Elasticsearch + FastDFS + RocketMQ + Oauth2.0 + JWT + LCN+AliPay+ Wechat + Linux + Nginx + Docker + ECS+JDK1.8 + IDEA(IDE)+ Maven+GitLab+ Tomcat + Postman + Navicat + SourceTree+Vue+elementui
10.1.2 项目介绍
标签:实战,功能,第十,项目,用户,商品,互联网,完成,采用 From: https://www.cnblogs.com/NorthPoet/p/17025065.html动力商城是以 B2C 模式运营的在线商城,总览企业及公司产品于一体,主打自主研发品牌以推广的互联网化新商城。系统采用的微服务架构模式,以功能模块划分,前台系统主要功能包括用户注册和登录,商品浏览,商品收藏,评论展示,我的订单,网站导航,我的购物车,订单支付,产品咨询,个人中心,客服系统,会员系统,频道系统等系统。后台主要功能包括用户信息管理,商品管理,商品分类管理,消息管理,订单管理,商品评价管理,用户反馈管理,日志系统管理,竞品分析系统,服务监控系统,报表系统,供应商系统。库存系统等..功能及技术要点说明:
1.采用微服务(SpringCloud+alibaba)技术框架搭建和开发
2.接口采用 RestFul 风格设计并且使用 Yapi 做接口文档
3.采用 Mysql 作为项目数据库,搭建 Mysql 主从集群,在项目中使用自定义注解+AOP完成读写分离的操作
4.搭建 Redis-cluster 作为项目的缓存中间件,使用自定义注解完成查询菜单等数据的缓存,提高系统性能,并且合理地设置过期时间以及淘汰策略,避免出现缓存雪崩等情况
5.使用 Nacos 集群搭建注册中心,完成服务的注册和发现/并且作为项目的配置文件中心,使得服务和配置文件集中化管理和复用
6.采用新一代网关 Gateway 结合注册中心完成请求动态路由,使用全局过滤器完成token的校验,ip 黑名单,结合 Redis 做限流操作
7.在项目授权中使用 Oauth2.0 整合 jwt 非对称加密做项目应用的授权,抽象common模块完成资源服务器的统一解析工作,并且将 jwt 存入 redis,整合网关做业务登出功能,增强系统的安全性
8.使用 spring-admin 作为服务解控组件,实时监控服务状态,当服务出现问题,可以邮件发送给维护人员,及时解决问题
9.使用递归加载菜单,并且将菜单数据存入 Redis,提高用户体验
10.前后端分离方式,前端封装权限验证组件,后端接口采用权限注解的方式完成按钮的显示和隐藏,以及确保用户在不通过按钮的情况下,直接访问后端接口
11.自定义日志注解,将用户操作日志,通过 AOP 等技术,记录到Es/MongoDB 中,定期做日志分析,发现用户操作习惯以及接口响应速度瓶颈,并且做定期优化
12.搭建 log-service 来做统一的系统日志采集,各功能模块将系统日志,通过RocketMQ异步的方式发送到日志中心,日志中心统一持久化 (ELK)
13.搭建 Fastdfs/OSS 对象存储分布式文件服务器,将系统文件统一上传管理
14.设计用户角色权限等经典 RBAC 完成基于角色的授权方案
15.服务间采用 openFeign+Hystrix 完成远程调用和熔断方案
16.设置 Feign 的拦截器完成各种场景下 token 的传递机制,保证服务接口安全
17.完成商品分类,商品属性规格,商品标签,商品评论等业务功能
18.处理 sku 和 spu 的以及属性值等关系,完成商品的新增上架功能
19.采用 Elasticseach 作为项目搜索引擎,完成模糊查询,分页,排序,高亮等复杂查询
20.在项目启动时使用自定义分页和多线程的方式完成 Mysql 商品数据全量同步Es
21.采用窗口滑动模型完成生产环境中商品修改的增量导入功能
22.采用 xxl-job 分布式定时任务调度中心完成项目中的定时任务功能
23.采用消息队列 MQ 完成商品快速同步 Es 的功能
24.调用第三方接口获取省区市等地域地址,完成商城门店管理业务
25.前台商城采用微信小程序的方式,先通过 wx.login 获取code 再通过服务器发送请求获取 openId,并且整合 oauth2.0 完成微信小程序和后端的交互凭证功能
26.完成用户收藏和取消商品的业务,完成用户新增收货地址以及修改默认收货地址等业务
27.搭建 message-service 消息模块,完成项目中消息的处理,整合阿里大于完成短信发送功能,结合微信公众平台完成微信消息的推送功能,并且持久化到数据库
28.完成商品的展示以及多种评论的展示业务
29.独立完成购物车模块,实现多租户多店铺添加购物车,以及购物车商品回显的功能
30.编写 order-service 订单模块业务,使用雪花算法生成全局唯一订单号,完成从商品以及购物车的订单确认
31.在用户下单时清空购物车,远程调用扣减数据商品库存,通过mq 修改es 中的库存,写订单表,同时写延迟队列
32.采用 LCN 分布式事务框架,处理项目中的分布式问题
33.采用延迟队列完成用户下单后超时未支付,商品库存回滚等功能
34.集成微信支付,完成用户下单后拉起微信支付功能
35,秒杀子系统
- 在每天的 10 点 将 mysql 的数据同步到 redis 中去 在 web 门户模块中接收前端发来的请求,通过 bloomFilter 对用户和商品进行过滤,确保一个用户针对一件商品只能购买一次
- 在通过 redis 做库存的预判,并且多方 10%的流量进入抢购,确保商品都可以售完,也可以节省大量无效请求进入 RocketMQ
- 快速返回请求结果,让线程立刻回收,提高服务器并发性能 在 service 消费者模块,使用多线程的方式进行数据处理 使用 redis 来作为分布式锁工具,使用 redisson 客户端工具完成,锁超时、锁续命等问题
- 将数据库商品库存扣减,并且写入订单表,同时做好事务处理。