限流是一种通过控制系统对外提供的资源、服务或接口的访问数量或速率,以保护系统免受过载的一种策略。
它的目的是确保系统能够在承受范围内提供稳定和可靠的服务,避免因过多的请求而导致系统崩溃、资源耗尽或响应延迟过高的情况发生。
在 Sentinel 中,实现限流的方法有以下两种:
通过代码方法实现限流。
通过 Sentinel 控制台设置实现限流。
1.通过代码实现限流
通过代码实现限流需要以下两步方可实现:
定义资源
a,通过代码定义资源。
b,通过注解定义资源。
定义限流规则
具体实现如下。
1.1 定义资源
定义资源可以通过代码方式或注解方式来实现,具体实现如下。
① 通过代码定义资源
可以通过代码的的方式 SphU.entry(“resourceName”) 来定义资源,具体实现代码如下:
@RequestMapping("/getuser")
public String getUser() {
try (Entry entry = SphU.entry("getuser")) {
// 被保护逻辑
return "User";
} catch (Exception e) {
// 限流之后的业务逻辑
return "被限流了";
}
}
PS:SphU 是 Sentinel Protection Hotspot Util 的缩写,Sentinel 热点保护工具类。
② 通过注解方式定义资源
通过注解 @SentinelResource 也可以实现资源的定义,如下代码所示:
/ 定义资源和限流后触发的方法
@SentinelResource(value = "resourceName", blockHandler = "myBlockHandler")
@RequestMapping("/getnamebyid")
public String getNameById(Integer id)

最低0.47元/天 解锁文章
4627

被折叠的 条评论
为什么被折叠?



