分布式电影票务系统后端部分功能开发

服务与接口分析

用户服务

  1. 注册
  2. 登录
  3. 密码修改
  4. 头像修改
  5. 账户注销

电影服务

  1. 查看电影详情
  2. 增加电影
  3. 通过类别查看电影列表
  4. 查看演员详情
  5. 查看某电影演员列表,redis->mysql

影院服务

  1. 增加排片
  2. 查看影院列表(分页)
  3. 查看影院详情
  4. 查看排片列表
  5. 获取座位信息
  6. 订票,更新座位信息
  7. 退票,更新座位信息

订单服务

  1. 添加订单
  2. 取消订单
  3. 延时队列来实现订单超时未支付问题

评论服务

  1. 增加评论
  2. 删除评论

搜索服务

  1. 全文检索

文件服务

  1. 上传文件

秒杀服务

  1. 基于redis实现分布式锁

组件分析

  1. 基于SpringCloudAlibaba整合其他组件
  2. 数据库采用MySQL
  3. 数据访问层使用Mybatis+Mybatisplus
  4. 服务调用方面使用OpenFeign声明式调用(同步),使用rabbiyMQ进行异步调用
  5. 注册中心与配置中心使用nacos
  6. 网关使用gateway
  7. 搜索使用elk,所有查询都由ElasticSearch提供
  8. 秒杀使用redis分布式锁
  9. 分布式事务使用seata
  10. 任务调度使用quartz

问题总结

  1. 配置redis集群后,从rdm和redisson中都无法连接到redis,rdm报错无法连接节点6380,Java报错没有下一步信息;且Java中配置的redis主机IP在连接是变成了127.0.0.1

由于在搭建redis集群,redis-cli --cluster create后接host:port写的是127.0.0.1,所以只有从127.0.0.1地址才能连接到集群,127.0.0.1和本机ip不是完全可以当作一个ip使用的

  1. 手动往redis中存数据时,使用redissonClient取数据报协议不支持的异常

由于redissonClient存取数据时根据协议进行编码和解码,如果手动存不符合解码格式,报错

  1. redis分布式锁的watchdog如果自动续期,为什么不会导致死锁

看门狗的目的是避免锁到期了而业务程序还没有结束的情况,默认有30秒的限期,每次延长10s,超过三十秒则看门狗也不会再起作用

  1. 分布式id的解决

本来使用redis存放序列,然后通过序列来解决分布式id问题,但是考虑到数据库访问次数太过频繁,改用百度的分布式id框架uid-generator

  1. 认证中心的实现

使用gateway网关整合jwt做认证中心,每次签发token签发两个,一个token30分钟,一个refreshToken60分钟,当token过期,使用refreshToken来刷新token

  1. 使用seata实现分布式事务,对日期datetime类型会json传唤错误

将数据库的datetime类型改为timestamp类型即可

  1. rabbitMQ报错Only one ConfirmCallback is supported by each RabbitTemplate(每个RabbitTemplate只支持一个ConfirmCallback)

callback是rabbitTemplate的一个属性,如果在处理请求时设置那么由于rabbitTemlate是单例的,重复设置就会报这个错,将callback实现注入到rabbitTemlate中在启动时加载一次即可(或将rabbitTemlate改为原型的)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值