Maison  >  Article  >  Java  >  SpringCloud Tencent, solution complète 1

SpringCloud Tencent, solution complète 1

PHP中文网
PHP中文网avant
2022-07-14 14:32:262236parcourir

Qu'est-ce que Spring Cloud Tencent ?

Spring Cloud Tencent est une solution de microservices open source unique de Tencent. Spring Cloud Tencent implémente le microservice standard Spring Cloud. Les développeurs peuvent développer rapidement des applications d'architecture de microservice Spring Cloud basées sur Spring Cloud Tencent. Le cœur de Spring Cloud Tencent s'appuie sur la plateforme open source unique de découverte de services et de gouvernance de Tencent, Polarismesh, pour mettre en œuvre divers scénarios de microservices distribués.

Les fonctionnalités fournies par Spring Cloud Tencent incluent, sans s'y limiter,:

adresse du projet:https://github.com/Tencent/spring-cloud-tencent

code source du projet adresse

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

1. Installer Polaris

Polaris est le centre de découverte et de gouvernance de services open source de Tencent dédié à la résolution des architectures distribuées ou de microservices, à la visibilité des services et à la tolérance aux pannes. , contrôle des flux et problèmes de sécurité. Bien qu'il existe déjà certains composants dans l'industrie qui peuvent résoudre certains de ces problèmes, il manque une implémentation standard, multilingue et indépendante du framework.

Tencent dispose d'un grand nombre de services distribués et d'une diversité de secteurs d'activité et de piles technologiques, qui ont accumulé des dizaines de composants connexes, grands et petits. À partir de 2019, nous avons extrait et intégré ces composants via Polaris pour créer une solution unifiée de découverte de services et de gouvernance pour l'entreprise afin d'aider l'entreprise à améliorer l'efficacité de la R&D et la qualité opérationnelle.

L'installation de Polaris est très simple. Téléchargez le zip de la plateforme de réponse et exécutez-le directement

2 Enregistrement et découverte du service

application.yaml. pour accéder au serveur Polaris

    <dependency>
        <groupId>com.tencent.cloud</groupId>
        <artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId>
    </dependency>
  • Démarrer le service d'observation de la console Polaris
      Exemple d'appel de service
    • spring:
        cloud:
          polaris:
            address: grpc://127.0.0.1:8091
    • 3. phase de piège, Spring Cloud le fera appelez PolarisConfigFileLocator pour obtenir le fichier de configuration du serveur Polaris et chargez-le dans le contexte Spring. Le contenu de la configuration peut être obtenu via l'annotation standard @Value,@ConfigurationProperties de Spring Boot. La capacité d'actualisation de la configuration dynamique est implémentée via le mécanisme @RefreshScope standard de Spring Cloud.

      Le service ajoute une dépendance polaris-config
    • @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.yaml pour accéder à polaris-config

    <dependency>
        <groupId>com.tencent.cloud</groupId>
        <artifactId>spring-cloud-starter-tencent-polaris-config</artifactId>
    </dependency>
    Remarque spéciale : cela doit être configuré dans bootstrap, ; tencent ne convient pas Équipé du dernier mécanisme de chargement de fichiers de Spring Boot
    • Configuration ajoutée de la console Polaris

      Configuration de l'utilisation du code
    • spring:
        cloud:
          polaris:
            address: grpc://127.0.0.1:8081
            config:
              groups:
                - name: ${spring.application.name}
                  files: "application"
    • Quatre limites actuelles de service
    .

    La limite actuelle du service est l'une des mesures d'autoprotection les plus courantes pour les services consiste à empêcher les pics de trafic de faire tomber le service. Le module Spring Cloud Tencent Rate Limit intègre un filtre de limitation de courant pour les scénarios Spring Web et Spring WebFlux, combiné à la fonction de limitation de courant de Polaris pour aider les entreprises à accéder rapidement à la capacité de limitation actuelle.

      Le service ajoute polaris-ratelimit. Ajoutez la découverte lors de l'utilisation du composant de limitation actuel pour faciliter la modification de la liste de services. Taiwan ajoute les règles de limitation actuelles

    5. Routage du service

    polaris. peut implémenter plus de formulaires de routage que le routage de métadonnées, le routage le plus proche, le routage de règles, le routage personnalisé, etc. Cet article utilise la démonstration de routage de métadonnées ; Comme indiqué ci-dessous, seuls les services avec les mêmes informations de métadonnées seront routés
      Le service ajoute une dépendance au routeur Polaris
    • @Value("${name:}")
      private String name;
      Métadonnées de la marque de service
    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

                   

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer