快速玩转Dubbo生态之限流降级篇(Sentinel)
1. 创建实验资源
开始实验之前,您需要先创建ECS实例资源。
1. 在实验室页面,单击创建资源。
2. (可选)在实验室页面左侧导航栏中,单击云产品资源列表,可查看本次实验资源相关信息(例如IP地址、用户信息等)。
说明:资源创建过程需要1~3分钟。
2. Sentinel背景知识Sentinel是什么?
本步骤为背景知识学习,详解Sentinel是什么?
随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。
3. Sentinel背景知识Demo示例架构说明
本步骤为背景知识学习,详解Demo示例架构代码。
- FooService接口定义。
public interface FooService { String sayHello(String name); }
- FooService接口的实现类FooServiceImpl。
@DubboService(timeout = 3000) public class FooServiceImpl implements FooService { @Override public String sayHello(String name) { return String.format("Hello, %s at %s", name, LocalDateTime.now()); } }
- 限流配置。
FlowRule flowRule = new FlowRule(FooService.class.getName()) .setCount(10) .setGrade(RuleConstant.FLOW_GRADE_QPS); FlowRuleManager.loadRules(Collections.singletonList(flowRule));
4. Demo启动实践
本实验场景提供示例代码和相关环境,本步骤指导您如何快速启动示例。
- 执行如下命令,构建用例,打包Demo工程。
cd /root/dubbo-samples/dubbo-samples-sentinel mvn clean package
返回结果如下,表示打包成功。
- 执行如下命令,启动Provider。
java -classpath ./target/dubbo-samples-sentinel-1.0-SNAPSHOT.jar org.apache.samples.sentinel.FooProviderBootstrap
返回结果如下,表示Provider启动成功。
- 在实验页面右上角,单击图标,新建一个终端窗口二。
- 在终端窗口二中,执行如下命令,启动OrderService。
cd /root/dubbo-samples/dubbo-samples-sentinel java -classpath ./target/dubbo-samples-sentinel-1.0-SNAPSHOT.jar org.apache.samples.sentinel.FooConsumerBootstrap
返回结果如下,您可看到Demo的输出结果。
实验地址:https://developer.aliyun.com/adc/scenario/74815088dfb24186a7833c7eae36d6ea