semaphore-solon-cloud-plugin
<dependency>
<groupId>org.noear</groupId>
<artifactId>semaphore-solon-cloud-plugin</artifactId>
</dependency>
1、描述
分布式扩展插件。基于 jdk 自带的 semaphore 适配的 solon cloud 融断器插件。提供基本的融断或限流服务。
2、配置示例(此配置可通过配置服务,动态更新)
solon.cloud.local:
breaker:
root: 100 #根断路器的阀值(即默认阀值)
main: 150 #qps = 100 #main 为断路器名称(不配置则为 root 值)
2、通过注解,添加埋点
//此处的注解埋点,名称与配置的断路器名称须一一对应
@CloudBreaker("main")
@Controller
public class BreakerController {
@Mapping("/breaker")
public void breaker() throws Exception{
Thread.sleep(1000); //方便测试效果
}
}
3、手动模式埋点
public class BreakerFilter implements Filter {
@Override
public void doFilter(Context ctx, FilterChain chain) throws Throwable {
if (CloudClient.breaker() == null) {
chain.doFilter(ctx);
} else {
//此处的埋点,名称与配置的断路器名称须一一对应
try (AutoCloseable entry = CloudClient.breaker().entry("main")) {
chain.doFilter(ctx);
} catch (BreakerException ex) {
throw new IllegalStateException("Request capacity exceeds limit");
}
}
}
}