目前负责的业务一直有一个小问题没有太好的解决办法,这个小问题是什么呢?传说中的学生选课。
这玩意跟商城的秒杀还不一样,商城的秒杀是萝卜多,坑少,最后不一定能秒杀的到。学生选课是一个萝卜一个坑,最后你一定能选上课。这么相对来说,商城秒杀要比学生选课的难度要高一个等级。
话也说回来了,能玩得了秒杀活动的商城,大概率也都是分布式部署,有单独的一个秒杀系统,配置了多个秒杀服务器。但是本公司就没有那么有实力了,就一台服务器。还得让前端在大数据量请求并发的时候可以正常访问。
这个事儿哈,我想过使用ip进行限制,但是有一个小问题,同一个学校的学生的ip都一样。
那怎么搞呢?
后来我想到了使用RabbitMQ,但是现阶段是有问题的,只有一台服务器,不符合在生产环境中部署的要求。一旦要是崩了,没有备份,造成数据丢失就很麻烦。而且RabbitMQ会增加整个系统的复杂度。不利于后期维护。
后来发现了好东西:Sentinel,这个好这个,官网:https://sentinelguard.io/zh-cn/index.html
下面我们在Springboot中集成Sentinel
一:Sentinel依赖
<!-- Sentinel 对 Spring Cloud Alibaba 的适配 -->
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-core</artifactId>
<version>1.8.6</version>
</dependency>
<!-- SpringBoot 使用 @SentinelResource(value = "AddUser", blockHandler = "exceptionHandler") 需要的依赖 -->
<!-- <dependency>--&