>  기사  >  Java  >  SpringCloud Tencent 완전한 솔루션 1

SpringCloud Tencent 완전한 솔루션 1

PHP中文网
PHP中文网앞으로
2022-07-14 14:32:262230검색

Spring Cloud Tencent란 무엇인가요?

Spring Cloud Tencent는 Tencent가 제공하는 원스톱 마이크로서비스 솔루션 오픈 소스입니다. Spring Cloud Tencent는 Spring Cloud 표준 마이크로서비스 SPI를 구현합니다. 개발자는 Spring Cloud Tencent를 기반으로 Spring Cloud 마이크로서비스 아키텍처 애플리케이션을 신속하게 개발할 수 있습니다. Spring Cloud Tencent의 핵심은 Tencent의 오픈 소스 원스톱 서비스 검색 및 거버넌스 플랫폼 Polarismesh를 사용하여 다양한 분산 마이크로서비스 시나리오를 구현합니다.

Spring Cloud Tencent에서 제공하는 기능에는 다음이 포함되지만 이에 국한되지는 않습니다.:

프로젝트 주소:https://github.com/Tencent/spring-cloud-tencent

프로젝트 소스 코드 address

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

1. Polaris 설치

Polaris는 분산 또는 마이크로서비스 아키텍처 서비스 가시성, 내결함성 문제를 해결하는 데 전념하는 Tencent의 오픈 소스 서비스 검색 및 거버넌스 센터입니다. , 흐름 제어 및 보안 문제. 업계에는 이러한 문제 중 일부를 해결할 수 있는 일부 구성 요소가 이미 있지만 표준, 다중 언어, 프레임워크 독립적 구현이 부족합니다.

Tencent는 수많은 분산 서비스와 다양한 비즈니스 라인 및 기술 스택을 보유하고 있으며, 이는 크고 작은 수십 개의 관련 구성요소를 축적해 왔습니다. 2019년부터 Polaris를 통해 이러한 구성 요소를 추상화하고 통합하여 기업의 R&D 효율성과 운영 품질을 향상시키는 데 도움이 되는 통합 서비스 검색 및 거버넌스 솔루션을 만들었습니다.

Polaris 설치는 매우 간단합니다.

2. 서비스 등록 및 검색

서비스에 polaris-discovery 종속성이 추가됩니다.

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

  • application.yaml polaris 서버 접속
  • 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);
    }

    3. 애플리케이션 시작 부트스트랩 단계에서, 스프링 클라우드는 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, 텐센트는 적합하지 않습니다. 스프링 부트의 최신 파일 로딩 메커니즘을 탑재했습니다
Polaris 콘솔 추가 구성

코드 사용 구성

@Value("${name:}")
private String name;
4.
  • 서비스 현재 제한은 서비스에 대한 가장 일반적인 자체 보호 조치 중 하나는 트래픽 피크로 인해 서비스가 중단되는 것을 방지하는 것입니다. Spring Cloud Tencent 속도 제한 모듈에는 Spring Web 및 Spring WebFlux 시나리오용 전류 제한 필터가 내장되어 있으며 Polaris의 현재 제한 기능과 결합되어 기업이 현재 제한 기능에 신속하게 액세스할 수 있도록 도와줍니다.

현재 제한 구성요소를 사용할 때 서비스에 검색을 추가하여 서비스 목록을 더 쉽게 편집할 수 있습니다. 대만에서는 현재 제한 규칙을 추가합니다.

  • 5. 서비스 라우팅

  • 폴라리스 더 많은 라우팅 형식을 구현할 수 있습니다: 메타데이터 라우팅, 가장 가까운 라우팅, 규칙 라우팅, 사용자 정의 라우팅 등. 이 기사에서는 메타데이터 라우팅 데모를 사용합니다. 아래 표시된 것처럼 동일한 메타데이터 정보를 가진 서비스만 라우팅됩니다
    서비스에 polaris-router 종속성이 추가되었습니다
  • <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
    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 완전한 솔루션 1의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제