搜尋
首頁Javajava教程SpringCloud Tencent 全套解決方案一

SpringCloud Tencent 全套解決方案一

Jul 14, 2022 pm 02:32 PM
微服務spring cloud大數據

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。如有侵權,請聯絡admin@php.cn刪除
    如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?如何將Maven或Gradle用於高級Java項目管理,構建自動化和依賴性解決方案?Mar 17, 2025 pm 05:46 PM

    本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

    如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?如何使用適當的版本控制和依賴項管理創建和使用自定義Java庫(JAR文件)?Mar 17, 2025 pm 05:45 PM

    本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

    如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?如何使用咖啡因或Guava Cache等庫在Java應用程序中實現多層緩存?Mar 17, 2025 pm 05:44 PM

    本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

    如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?如何將JPA(Java持久性API)用於具有高級功能(例如緩存和懶惰加載)的對象相關映射?Mar 17, 2025 pm 05:43 PM

    本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

    Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Java的類負載機制如何起作用,包括不同的類載荷及其委託模型?Mar 17, 2025 pm 05:35 PM

    Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA

    See all articles

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    AI Hentai Generator

    AI Hentai Generator

    免費產生 AI 無盡。

    熱門文章

    R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
    3 週前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳圖形設置
    3 週前By尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您聽不到任何人,如何修復音頻
    3 週前By尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25:如何解鎖Myrise中的所有內容
    4 週前By尊渡假赌尊渡假赌尊渡假赌

    熱工具

    DVWA

    DVWA

    Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

    Atom編輯器mac版下載

    Atom編輯器mac版下載

    最受歡迎的的開源編輯器

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    SublimeText3 英文版

    SublimeText3 英文版

    推薦:為Win版本,支援程式碼提示!

    ZendStudio 13.5.1 Mac

    ZendStudio 13.5.1 Mac

    強大的PHP整合開發環境