微课堂项目笔记

该项目是一个前后端分离的云学习平台,支持多语种课程培训,包含客户端、机构端和运营端。采用SpringBoot和SpringCloud进行后端开发,利用MySQL、Redis、RabbitMQ和MinIO等技术。在权限管理方面,运用SpringSecurity进行用户认证和授权。此外,项目还涉及分布式事务处理、高并发下的库存管理以及防止超卖问题的解决方案。
摘要由CSDN通过智能技术生成

项目介绍

云学习网络课堂系统 Cloud Online Learning System

公司自己研发语言云学习网络课堂系统, 能够提供多语种语言培训等相关课程[英语等级培训,雅思培训,BEC商务英语培训]。

本项目分为三个端: 客户端, 机构端, 运营端。采用B2B2C的业务模式。机构端可以在平台入驻,发布课程,我们公司作为运营方对机构端发布的课程进行审核,审核通过即发布成功。

本项目是前后端分离的架构, 后端采用SpringBoot、Spring Cloud进行开发, 数据库使用MySQL和Redis,RabbitMQ和MinIO分布式文件系统。

我在这个项目负责 机构端:内容管理、媒资管理、权限管理的设计与开发。 内容管理: 如果培训机构要发布一门课程,需要填写课程基本信息,营销信息,师资信息提供给运营方审核,一般24小时通过,这里采用了分布式事务进行开发,就是课程发布需要将课程信息存入数据库,并且存入redis缓存,同时要将课程文件存入分布式文件系统。 媒资管理Media Asset Management: 媒体资源查询, 视频的处理上传; 文件上传; 文件删除 客户端: 选课管理、权限管理、订单支付模块。 选课管理: 课程分为免费和收费,免费课程用户点击添加课程后可直接插入我的课程表,如果是付费课程,则需经过订单支付微服务,支付成功后更新订单状态,通过消息队列通知选课服务添加课程到我的课程表。 订单支付: 选课以后生成二维码,用户进行扫码支付,支付完成以后生成支付订单。

稳定性治理Ensure the Stability

保证服务高可用【high availability】 服务可能使用很多中间件,所以在项目启动以后可能会出现故障,所以要保证服务依旧可用

权限管理:详见Spring Security

Spring Security

我这个项目使用Spring Security进行用户登录授权认证,用户认证就是判断改用户是否合法,用户授权就是判断用户是否有权限进行某个操作。

我具体实现的流程是这样:

Spring Security 本质就是过滤器链,

登陆的时候,通过一个AuthenticationManager类调用我们通过自定义UserDetailService里面的loadUserByUsername来查询数据库比对用户返回UserDetails,然后生成jwt Token存入redis并且响应给前端。

我们配置了一个jwt token过滤器,用户访问接口的时候会使用redis校验token的合法性, 同时这个过滤器来获取用户的授权信息,通过SecurityContextHolder上下文封装到authentication

Spring Security中会使用默认的FilterSecurityInterceptor 获取authentication来进行权限校验。在项目开发中我们会依据Role-based Access Control角色权限控制模型来设计数据库,这个模型的好处在于给不同的用户提供不同的角色,不同的角色会有不同的Authority, 在Controller层@PreAuthorize注解会根据数据库中Authority来判断是否符合接口的Authority。

还可以说: 跨域问题; CRSF (Cross-Site Request Forgery)

高并发解决超卖问题

因为并发量高,每个线程都要去查是否有库存,然后再进行减库存的操作。

这样会导致,查完库存会有库存,减库存的时候就没有库存,要保证原子操作。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值