首頁  >  文章  >  Java  >  SpringCloud Tencent 全套解決方案一

SpringCloud Tencent 全套解決方案一

PHP中文网
PHP中文网轉載
2022-07-14 14:32:262132瀏覽

Spring Cloud Tencent 是什麼?

Spring Cloud Tencent 是騰訊開源的一站式微服務解決方案。 Spring Cloud Tencent 實現了 Spring Cloud 標準微服務 SPI,開發者可以基於 Spring Cloud Tencent 快速開發 Spring Cloud 微服務架構應用程式。 Spring Cloud Tencent 的核心依托騰訊開源的一站式服務發現與治理平台 Polarismesh ,實現各種分散式微服務場景。

Spring Cloud Tencent 提供的能力包括但不限於:

#專案位址:https://github. com/Tencent/spring-cloud-tencent

專案原始碼位址

https://github.com/lltx/spring-cloud-tencent-demo

一、安裝北極星

北極星是騰訊開源的服務發現和治理中心,致力於解決分散式或微服務架構中的服務可見、故障容錯、流量控制和安全問題。雖然,業界已經有些元件可以解決其中一部分問題,但是缺少一個標準的、多語言的、框架無關的實作。

騰訊具有海量的分散式服務,加上業務線和技術堆疊的多樣性,沉澱了大大小小數十個相關元件。從 2019 年開始,我們透過北極星對這些組件進行抽象和整合,打造公司統一的服務發現和治理方案,幫助業務提升研發效率和營運品質。

北極星安裝非常簡單的下載響應平台的zip 直接運行即可,下載地址:https://github.com/polarismesh/polaris/releases/tag/v1 .9.0

二、服務註冊與發現

  • 服務增加polaris-discovery 依賴

  • ##

    <dependency>
        <groupId>com.tencent.cloud</groupId>
        <artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId>
    </dependency>
application.yaml 存取polaris server

#
spring:
  cloud:
    polaris:
      address: grpc://127.0.0.1:8091

##啟動服務觀察polaris console
  • 服務呼叫範例

  • #
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
  return new RestTemplate();
}

@Autowired
private RestTemplate restTemplate;

@GetMapping("/consumer")
public String consumer() {
  return restTemplate.getForObject("http://lengleng-tencent-discovery-provider/provider/lengleng", String.class);
}
三、設定管理

在應用程式啟動Bootstrap 階段,Spring Cloud 會呼叫PolarisConfigFileLocator 從Polaris 服務端取得設定檔並載入到Spring 上下文。透過 Spring Boot 標準的 @Value,@ConfigurationProperties 註解即可取得設定內容。動態配置刷新能力,則透過 Spring Cloud 標準的 @RefreshScope 機制實現。
  • 服務增加polaris-config 依賴

#

<dependency>
    <groupId>com.tencent.cloud</groupId>
    <artifactId>spring-cloud-starter-tencent-polaris-config</artifactId>
</dependency>

bootstrap.yaml 存取polaris-config

    spring:
      cloud:
        polaris:
          address: grpc://127.0.0.1:8081
          config:
            groups:
              - name: ${spring.application.name}
                files: "application"
  • 特別注意: 這裡需要配置在bootstrap, spring-cloud-tencent 未適配spring boot 最新的檔案載入機制

  • #北極星控制台增加配置

    ##
    @Value("${name:}")
    private String name;

    四、服務限流

    服務限流是最常見的一種服務自我保護措施之一,防止流量洪峰打垮服務。 Spring Cloud Tencent Rate Limit 模組內建了 Spring Web 和 Spring WebFlux 場景的限流 Filter,結合 Polaris 的限流功能幫忙業務快速存取限流能力。

      服務增加polaris-ratelimit 依賴,使用限流元件時加入discovery ,方便在服務清單編輯
    • <dependency>
          <groupId>com.tencent.cloud</groupId>
          <artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId>
      </dependency>
      
          com.tencent.cloud
          spring-cloud-starter-tencent-polaris-ratelimit
      
      服務存取polaris-ratelimit
    • spring:
        cloud:
          polaris:
            address: grpc://127.0.0.1:8091
            namespace: default
            ratelimit:
              reject-http-code: 403
              reject-request-tips: "lengleng test rate limit"
      ##########北極星控制台增加限流規則########### ##########五、服務路由#########polaris 能夠實現的路由形式較多元資料路由、就近路由、規則路由、自訂路由等形式,本文以元資料路由示範,如下圖只會路由至相同元資料資訊的服務########################服務增加polaris-router依賴#########
      <dependency>
          <groupId>com.tencent.cloud</groupId>
          <artifactId>spring-cloud-starter-tencent-polaris-router</artifactId>
      </dependency>
      #########服務標記元資料###
    spring:
      cloud:
        polaris:
          address: grpc://127.0.0.1:8091
        tencent:
          metadata:
            content:
              version: local

    六、限流熔断

    故障实例熔断是常见的一种容错保护机制。故障实例熔断能实现主调方迅速自动屏蔽错误率高或故障的服务实例,并启动定时任务对熔断实例进行探活。在达到恢复条件后对其进行半开恢复。在半开恢复后,释放少量请求去进行真实业务探测。并根据真实业务探测结果去判断是否完全恢复正常。

    • 添加限流熔断相关的依赖 polaris-circuitbreaker

    
        com.tencent.cloud
        spring-cloud-starter-tencent-polaris-circuitbreaker
    
    
    
        org.springframework.cloud
        spring-cloud-starter-loadbalancer
    
    
    <dependency>
        <groupId>com.tencent.cloud</groupId>
        <artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId>
    </dependency>
    
    
        org.springframework.cloud
        spring-cloud-circuitbreaker-spring-retry
    
    
    
        org.springframework.cloud
        spring-cloud-starter-openfeign
    
    • 提供 Feign 服务调用实现

    spring-cloud-tencent 当前版本仅支持 feign 熔断

    @FeignClient(contextId = "demoFeign", value = "lengleng-circuitbreaker-tencent-circuitbreaker-provider",
      fallback = DemoFeignFallback.class)
    public interface DemoFeign {
     @GetMapping("/provider")
     String get(@RequestParam String name);
    
    }
    • 服务接入 polaris-circuitbreaker

    spring:
      cloud:
        polaris:
          address: grpc://127.0.0.1:8091
    
    #开启断路器
    feign:
      circuitbreaker:
        enabled: true
    • 编写熔断规则 polaris.yml

    consumer:
      circuitBreaker:
        checkPeriod: 100ms
        chain:
          - errorCount
          - errorRate
        plugin:
          errorCount:
            continuousErrorThreshold: 1
            metricNumBuckets: 1
          errorRate:
            errorRateThreshold: 100
            metricStatTimeWindow: 1s
            requestVolumeThreshold: 1

                   

    以上是SpringCloud Tencent 全套解決方案一的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    陳述:
    本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除