接口幂等性
通过加锁
通过数据库乐观锁字段
数据库悲观锁字段 加事务
最多的是令牌机制 类似于验证码 发令牌 下次携带令牌访问 用一次就销毁
分布式事务
seata 后台管理系统 并发要求不高的可以使用seata
高并发事务 使用最终一致性 babbitMQ(必要) 由发送端和接收端的确认机制
性能与压力测试
JMETER
监控jvm性能 jkd自带的jconsle
为了提升接口的吞吐量
缓存是必不可少的
但是使用缓存存在一下问题
缓存击穿
缓存雪崩
缓存穿透
为了解决以上问题 我们可以使用分布式锁 redisson
当大并发来请求数据库时 我们可以使用分布式缓存锁住 只让一个请求去访问数据库
查询到数据后 将数据放入到redis中 后面其他数据就可以从redis中直接获取到数据
从而避免访问数据库
我们同样可以使用分布式锁来保证接口幂等性
比如并发的几个请求都访问了该接口 我们使用分布式锁锁住 让该接口只能调用一次数据库
释放锁之后再来调用 就来判断数据的状态 如果已经被处理了 就执行其他逻辑
异步 线程池
为了控制整个系统的资源 我们需要使用线程池
所有的异步任务都要提交给线程池
为了保证各个线程之间的顺序 我们可以使用comparableFuture
在相同域名下 登录一次 保证处处登录
我们需要整合springsession
将微服务所有的session进行了同步
只要登录成功后 进入哪一个服务都可以获取到数据
使用springsession解决了分布式session不一致的问题
