首頁 > 軟體

Sentinel整合Feign流程詳細講解

2022-08-31 14:03:40

修改84模組

84消費者呼叫提供者9003

Feign元件一般是消費側

重點依賴

 <!--SpringCloud openfeign -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

啟用Sentinel對Feign的支援

spring:
  application:
    name: nacos-order-consumer
  cloud:
    nacos:
      discovery:
        #Nacos服務註冊中心地址
        server-addr: localhost:8848
    sentinel:
      transport:
        #設定Sentinel dashboard地址
        dashboard: localhost:8080
        #預設8719埠,假如被佔用會自動從8719開始依次+1掃描,直至找到未被佔用的埠
        port: 8719
management:
  endpoints:
    web:
      exposure:
        include: '*'
# 啟用Sentinel對Feign的支援
feign:
  sentinel:
    enabled: true  

# 啟用Sentinel對Feign的支援

feign:

sentinel:

enabled: true

增加業務類介面

@FeignClient(value = "nacos-payment-provider",fallback = PaymentFallbackService.class)//呼叫中關閉9003服務提供者
public interface PaymentService
{
    @GetMapping(value = "/paymentSQL/{id}")
    public CommonResult<Payment> paymentSQL(@PathVariable("id") Long id);
}

@FeignClient(value = "nacos-payment-provider",fallback =PaymentFallbackService.class)//呼叫中關閉9003服務提供者

@Component
public class PaymentFallbackService implements PaymentService
{
    @Override
    public CommonResult<Payment> paymentSQL(Long id)
    {
        return new CommonResult<>(444,"服務降級返回,沒有該流水資訊",new Payment(id, "errorSerial......"));
    }
}

呼叫失敗的時候,就會呼叫重寫的方法

修改控制類

 //==================OpenFeign
    @Resource
    private PaymentService paymentService;
    @GetMapping(value = "/consumer/openfeign/{id}")
    public CommonResult<Payment> paymentSQL(@PathVariable("id") Long id)
    {
        if(id == 4)
        {
            throw new RuntimeException("沒有該id");
        }
        return paymentService.paymentSQL(id);
    }

新增@EnableFeignClients啟動Feign的功能

@EnableDiscoveryClient
@SpringBootApplication
@EnableFeignClients
public class OrderNacosMain84
{
    public static void main(String[] args) {
            SpringApplication.run(OrderNacosMain84.class, args);
    }
}

測試

啟動9003 9004 84 埠

存取:http://localhost:84/consumer/paymentSQL/1

測試84呼叫9003,此時故意關閉9003微服務提供者,看84消費側自動降級,不會被耗死

熔斷框架比較

業務降級,是指犧牲非核心的業務功能,保證核心功能的穩定執行。簡單來說,要實現優雅的業務降級,需要將功能實現拆分到相對獨立的不同程式碼單元,分優先順序進行隔離。在後臺通過開關控制,降級部分非主流程的業務功能,減輕系統依賴和效能損耗,從而提升叢集的整體吞吐率。

降級的重點是:業務之間有優先順序之分。降級的典型應用是:電商活動期間關閉非核心服務,保證核心買買買業務的正常執行。

到此這篇關於Sentinel整合Feign流程詳細講解的文章就介紹到這了,更多相關Sentinel整合Feign內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com