You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
spring-cloud-tencent/spring-cloud-tencent-examples/polaris-circuitbreaker-example/README-zh.md

2.1 KiB

Spring Cloud Polaris CircuitBreaker Example

样例简介

本样例将介绍如何在Spring Cloud项目中使用spring-cloud-starter-tencent-polaris-circuitbreaker以使用其各项功能。

该样例分为两个微服务,即

  1. polaris-circuitbreaker-example-a
  2. polaris-circuitbreaker-example-b 有两个实例 B默认正常服务和 B2模拟异常服务

polaris-circuitbreaker-example-apolaris-circuitbreaker-example-b发生调用。

使用说明

修改配置

修改 resource/bootstrap.yml 中北极星的服务端地址

spring:
  cloud:
    polaris:
       address: grpc://${ip}:8091

启动样例

启动Polaris后端服务

参考Polaris Getting Started

启动应用

  • IDEA启动

分别启动

  1. spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-a下的ServiceA
  2. spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-b下的ServiceB
  3. spring-cloud-tencent-examples/polaris-circuitbreaker-example/polaris-circuitbreaker-example-b2下的ServiceB2

验证

Feign调用

执行以下命令发起Feign调用其逻辑为ServiceB抛出一个异常

curl -L -X GET 'localhost:48080/example/service/a/getBServiceInfo'

预期返回情况:

在出现

hello world ! I'm a service B1

时,表示 B2 已经被熔断了,请求只会打到 B1。

验证更多场景

您也可以调整 example-bexample-b2resource/bootstrap.yml is-throw-runtime-exception 参数调整服务是否抛出异常。

例如测试以下场景:

  1. 两个实例都是正常的,这时候预期是 B1 和 B2 都能正常被调用到
  2. 一个实例正常一个实例不正常,这时候预期是不正常实例被熔断,请求只会打到正常的实例
  3. 两个实例都不正常,这时候 Feign 会自动 Fallback 到 ProviderBFallback.java 的实现类