项目开发注意小计

内容纲要

id

分布式集群数据库id采vachar: 在分布式集群下,需要通过类似雪花算法做到id唯一

编写过程

dao -> service -> controller

cookie

cookie存储空间为4kb

 以键值对的形式存储信息在浏览器
cookie不能跨域,当前及其父级域名可以取值
cookie可以设置有效期
cookie可以设置path

无需登录,无需查库,保存在浏览器端
优点:性能好,访问快,没有和数据库交互
缺点1:换电脑购物车数据丢失(未登录情况下)
缺点2:电脑被其他人登录,隐私安全

session

基于服务器内存的缓存(非持久化) , 可保存请求会话
每个session通过sessionid来区分不同请求
session可设置过期时间
session也是以键值对的形式存在

用户登录后,购物车数据放入用户会话中
优点:初期性能较好,访问快
缺点1:session基于内存,用户量庞大影响服务器性能
缺点2:只能差在于当前会话,不适合集群与分布式系统

cookie与session

在后端设置了session之后,分离式的前端中的cookie会有一个一个sessionid,之后的每一个请求中的session都会携带这个sessionid

数据库

用户登录后,购物车数据存入数据库
优点:数据持久化,可在任何地点任何时间访问
缺点:频繁读写数据库,造成数据库压力

redis

用户登录后,购物车数据存入redis缓存
优点1 :数据持久化,可在任何地点任何时间访问
优点2 :频繁读写只基于缓存,不会造成数据库压力
优点3 :适用于集群与分布式系统,可扩展性强

slf4j

日志级别 debug,error,warn,info springboot默认为info,debug级别控制台不能打印输出

生产环境关闭sql的日志打印

电商项目价格以分为单位

二维码生成

jquery.qrcode 生成二维码

分布式集群项目定时任务

使用定时任务关闭超期未支付订单,会存在的弊端:
1. 会有时间差,程序不严谨
     10.39下单,11:00检查不足一个小时,12:00检查,超过1小时多余39分钟

2. 不支持集群
     单机没问题,使用集群后,就会有多个定时任务
     解决方案:只使用一台计算机节点,单独运行所有的定时任务
3. 会对数据库全表搜索,极其影响数据库性能: select * form order_status where orderStatus = 10 
     定时任务,仅仅适用于小型轻量级项目,传统项目

消息队列: MQ ->RabbitMQ,RocketMQ,Kafka,ZeroMQ...
     延时任务(队列)
     10.12分下单,未付款(10)状态,11:12分检查,如果当前状态还是10,则直接关闭订单状态即可

文件上传必须为multipart/form-data格式

THE END
分享
二维码
< <上一篇
下一篇>>