您好,登錄后才能下訂單哦!
今天小編給大家分享一下SpringCloud Tencent解決的方法的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
Spring Cloud Tencent 是騰訊開源的一站式微服務解決方案。Spring Cloud Tencent 實現了 Spring Cloud 標準微服務 SPI,開發者可以基于 Spring Cloud Tencent 快速開發 Spring Cloud 微服務架構應用。Spring Cloud Tencent 的核心依托騰訊開源的一站式服務發現與治理平臺 Polarismesh ,實現各種分布式微服務場景。
Spring Cloud Tencent 提供的能力包括但不限于:
北極星是騰訊開源的服務發現和治理中心,致力于解決分布式或者微服務架構中的服務可見、故障容錯、流量控制和安全問題。雖然,業界已經有些組件可以解決其中一部分問題,但是缺少一個標準的、多語言的、框架無關的實現。
騰訊具有海量的分布式服務,加上業務線和技術棧的多樣性,沉淀了大大小小數十個相關組件。從 2019 年開始,我們通過北極星對這些組件進行抽象和整合,打造公司統一的服務發現和治理方案,幫助業務提升研發效率和運營質量。
服務增加 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> <dependency> <groupId>com.tencent.cloud</groupId> <artifactId>spring-cloud-starter-tencent-polaris-ratelimit</artifactId> </dependency>
服務接入 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
<dependency> <groupId>com.tencent.cloud</groupId> <artifactId>spring-cloud-starter-tencent-polaris-circuitbreaker</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency> <dependency> <groupId>com.tencent.cloud</groupId> <artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-circuitbreaker-spring-retry</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency>
提供 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解決的方法”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。