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>
###啟動服務觀察polaris consolespring: cloud: polaris: address: grpc://127.0.0.1:8091登入後複製
@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 機制實現。
#
<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 的限流功能幫忙業務快速存取限流能力。
<dependency> <groupId>com.tencent.cloud</groupId> <artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId> </dependency>com.tencent.cloud spring-cloud-starter-tencent-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"
<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 <dependency> <groupId>com.tencent.cloud</groupId> <artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId> </dependency> org.springframework.cloud spring-cloud-starter-loadbalancer 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中文網其他相關文章!