ホームページ  >  記事  >  Java  >  SpringCloud Tencent の完全なソリューション 1

SpringCloud Tencent の完全なソリューション 1

PHP中文网
PHP中文网転載
2022-07-14 14:32:262237ブラウズ

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

プロジェクト ソース コード アドレス

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

1. Polaris のインストール

Polaris は、分散型またはマイクロサービス アーキテクチャにおけるサービスの可視性、フォールト トレランス、フロー制御、セキュリティの問題の解決に特化した Tencent のオープンソース サービス ディスカバリおよびガバナンス センターです。 「業界には、これらの問題の一部を解決できるいくつかのコンポーネントがすでに存在しています」が、標準的な、複数言語に対応した、フレームワークに依存しない実装が不足しています。

Tencent は多数の分散サービスを有しており、事業分野や技術スタックの多様性と相まって、大小合わせて数十の関連コンポーネントを蓄積しています。 2019年から、当社はPolarisを通じてこれらのコンポーネントを抽象化および統合し、企業向けの統合されたサービス検出およびガバナンスソリューションを作成し、企業の研究開発効率と運用品質の向上を支援しました。

Polaris のインストールは非常に簡単です。応答プラットフォームの zip をダウンロードして直接実行します,ダウンロード アドレス:https://github.com/polarismesh/polaris/releases/tag/ v1 .9.0

#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 コンソール

    #サービスコールの例
  • @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. 構成管理

アプリケーション起動のブートストラップフェーズ中に、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"

    特記事項: これはブートストラップで設定する必要があります, spring-cloud-tencent は Spring boot の最新のファイル読み込みメカニズムに適応していません

Polaris コンソールの追加構成

#コード使用構成

##
@Value("${name:}")
private String name;
    4. サービス電流制限
  • サービス電流制限は、トラフィックのピークによってサービスが圧倒されるのを防ぐための最も一般的なサービス自己保護手段の 1 つです。 Spring Cloud Tencent Rate Limit モジュールには、Spring Web および Spring WebFlux シナリオ用の電流制限フィルターが組み込まれており、Polaris の電流制限機能と組み合わせて、企業が電流制限機能に迅速にアクセスできるようにします。

サービスは、polaris-ratelimit 依存関係を追加します,電流制限コンポーネントを使用するときに検出を追加して、サービス リストの編集を容易にします

<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 コンソールに電流制限ルールが追加されました

  • #5. サービス ルーティング

  • polaris は、メタデータ ルーティング、最近接ルーティング、ルール ルーティング、カスタム ルーティングなどより多くのルーティング フォームを実装できます。,この記事のデモメタデータ ルーティングの#xff0c;以下に示すように、同じメタデータ情報を持つサービスのみがルーティングされます

# サービスは、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 の完全なソリューション 1の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。