Spring Cloud Alibaba [Nacos 構成の動的リフレッシュ、Nacos クラスター アーキテクチャの紹介、Nacos のデータ永続性、分散トラフィック保護について] (5)

 

目次

分散構成センター_Nacos 構成の動的リフレッシュ

分散構成センター_Dubbo サービス ドッキング分散構成センター

分散構成センター_Nacos クラスター アーキテクチャの紹介 

分散構成センターのデータ永続性_Nacos

 分散構成センター_Nacosクラスター構成

分散トラフィック保護_分散トラフィック保護について 

分散トラフィック保護_Sentinel を知る


 

分散構成センター_Nacos 構成の動的リフレッシュ

動的リフレッシュの構成 

構成の動的リフレッシュには、@RefreshScope の注釈を付けるだけで済みます。

アノテーション方法

@RestController
/* 只需要在需要动态读取配置的类上添加此注解就可以 */
@RefreshScope
public class ConfigController {
    
 @Value( "${config.config}" )
 private String appName;
  
 @GetMapping("/getConfig")
 public String nacosConfingTest2(){
      return(appName);
 }
}

リアルタイムのエフェクトフィードバック

1. Nacos 分散構成センターは、____ アノテーションを通じて動的リフレッシュを実現します。

リフレッシュ

Bリフレッシュスコープ

C スコープ

上記のDはすべて間違っています

分散構成センター_Dubbo サービス ドッキング分散構成センター

POM による依存関係の導入 

       <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>

コンソールはdataIdを作成します

bootstrap.ymlを作成する 

spring:
 main:
   allow-bean-definition-overriding: true
   allow-circular-references: true
 application:
    #应用名字
   name: consumer-dubbo-order
 cloud:
   nacos:
     config:
        # 设置应用名字
       prefix: ${spring.application.name}
        # 配置文件后缀
       file-extension: yaml
        # 配置中心地址
       server-addr: 192.168.66.101:8848
 profiles:
    # 设置环境
   active: dev

テスト

http://localhost:80/order/index をリクエストします

 

分散構成センター_Nacos クラスター アーキテクチャの紹介 

Nacos クラスターを構築する必要がある理由 

デフォルトでは、Nacos は組み込みデータベース Derby を使用してデータを保存します。したがって、デフォルト構成で複数の Nacos ノードを起動すると、データ ストレージに一貫性の問題が発生します。この問題を解決するために、Nacos はクラスター展開をサポートする集中ストレージ方式を採用しており、現在は MySQL ストレージのみをサポートしています。

Nacos は 3 つの展開モードをサポートします

1. スタンドアロン モード - テストおよびスタンドアロン試用用。

2. クラスター モード - 高可用性を確保するために実稼働環境で使用されます。

3. マルチクラスター モード - マルチデータセンター シナリオ用。 

クラスタモード

リアルタイムのエフェクトフィードバック

1. Nacos クラスターを構築して、_____ 問題を解決します。

データに一貫性がありません

Bセーフ

C単一障害点

上記のDはすべて間違っています 

2. Nacos のデフォルトのメモリ データベースは____ です。

SQLite

B MySQL

Cダービー

上記のDはすべて間違っています

分散構成センターのデータ永続性_Nacos

データベースを初期化する 

Nacos データベース スクリプト ファイルは、Nacos-server の初期化ファイルをダウンロードするときに、圧縮パッケージの\nacos\confディレクトリに入ります: nacos-mysql.sqlここで、 mynacosという名前のデータベースを作成し、初期化スクリプトを実行します。成功すると、11 個のテーブルが生成されます。

設定ファイルを変更する 

ここでは、Nacos-server の構成ファイルを変更する必要があります。Nacos-server は実際には Java プロジェクトまたは Springboot プロジェクトです。その構成ファイルは nacos\conf ディレクトリにあり、 application.properties という名前で、データ ソース構成はファイルの最後に追加ます

spring.datasource.platform=mysql

db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/mynacos?
characterEncoding=utf8&connectTimeout=1000&so
cketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456

Nacos-server と Nacos-config を起動します 

最初に Nacos サーバーを起動し、起動が成功したら Nacos コンソールに入ります。この時点で、Nacos コンソールの外観が新しくなり、以前のデータは消えています。

注: 新しいデータ ソースが追加されたため、Nacos はすべての設定ファイルを mysql から読み取り、初期化したばかりのデータベースはクリーンなので、当然、表示するデータや情報はありません。

新しい設定ファイル DataID: nacos-config.yml をパブリックスペース (public) に作成します。設定内容は次のとおりです。 

server:
   port: 9989
nacos:
   config: 配置文件已持久化到数据库中...

次に、Nacos でデモ プロジェクトを開始します (4)。サービスが正常に開始されたら、次のように Nacos コンソールを観察します。

 

データベースに永続化されているかどうかを確認する 

 分散構成センター_Nacosクラスター構成

クラスタの起動 

3 つのポートを介してローカルで 3 台のマシンをシミュレートします。ポートは 8848、8858、8868 です。

#copy3份解压后的nacos,修改各自的application.properties中的端口号,分别为:8848,8858,8868
server.port=8848
server.port=8858
server.port=8868

cluster.conf ファイルはそれぞれの conf ディレクトリに配置され、ファイルの内容は次のとおりです。

192.168.66.100:8848
192.168.66.100:8858
192.168.66.100:8868

ナコスサービスを開始する

./startup.sh

クラスターの Nacos にアクセスするための負荷分散として Nginx を使用する 

環境のインストール

yum -y install gcc make automake pcre-devel
zlib zlib-devel openssl openssl-devel

Nginxをインストールする

./configure
make && make install

nginx.conf ファイルを構成する

#定义upstream名字,下面会引用
upstream nacos{  
        #指定后端服务器地址
        server 192.168.66.100:8848;        
        server 192.168.66.100:8858;  
        server 192.168.66.100:8868;    
}
server {
  listen 80;
  server_name localhost;
  location / {
      proxy_pass http://nacos;        #引用upstream
 }
}

Nginxを再起動する

docker restart nginx

nacos アクセスの負荷分散は、nginx にアクセスすることで実現できます。

http://localhost/nacos をリクエストします

 

分散トラフィック保護_分散トラフィック保護について 

分散システムでは、サービス間の相互呼び出しにより分散トラフィックが生成されます。コンポーネントを通じてトラフィックを保護し、効果的にトラフィックを制御する方法は、分散システムの技術的な課題の 1 つです。 

サービスアバランチとは

マイクロサービス システムがあり、ABCD の 4 つのマイクロサービスが含まれており、すべてクラスター モードで構築されているとします。

雪崩の問題:

呼び出しチェーン内のサービス障害によりリンク全体がアクセスできなくなるため、マイクロサービスは互いに呼び出します。 

解決 

サービス保護テクノロジー

Spring Cloud では、複数のサービス保護テクノロジーがサポートされています。 

1、ヒストリックス

2、センチネル

3、レジリエンス4J

Sentinel サービスのフォールト トレランスのアイデア 

Sentinel は Spring Cloud Alibaba のサービス フォールト トレラント コンポーネントであり、私たちはそれを「アンチトラフィック センチネル」と呼ぶことがよくあります。これは、アリババのダブル イレブン プロモーションの中核シナリオの守護聖人であり、豊富なサービスのフォールト トレラント アプリケーション シナリオが組み込まれています。トラフィックをエントリ ポイントとして、さまざまな内部および外部の防止および制御方法を通じてサービスの安定性を維持するという目的を達成します。

 

内部例外ガバナンス 

Sentinel では、ダウングレードと融合によって内部例外を処理できます。いわゆるダウングレードとは、サービス呼び出しに応答タイムアウトやサービス例外などが発生した場合に、サービス内で「ダウングレード ロジック」を実行できることを意味します。

 

いわゆるサーキット ブレーカーとは、異常な呼び出しの量が特定の判定条件に達した場合、たとえば、異常なダウングレードおよび低速な呼び出しリクエストの割合がしきい値に達し、ウィンドウ タイム内でダウングレードされたリクエストの数が一定の数に達した場合に、マイクロサービスが一定期間対象サービスの呼び出しを停止し、すべての受信リクエストがダウングレード ロジックを直接実行することを意味します。したがって、サーキット ブレーカーは「複数のサービス コール例外」の累積結果です。 

 

 外部フロー制御

トラフィック制限は、トラフィック シェーピングおよびフロー制御スキームの一種です。Sentinelでは、クラスタの処理能力に応じてサービスごとにフロー制限ルールを設定し、QPSや同時スレッド数などの次元で外部アクセストラフィックを制御できます。訪問数がしきい値を超えると、それ以降のリクエストは「高速フェイル」になります。これは、最も一般的に使用されるトラフィック制限方法です。

 

リアルタイムのエフェクトフィードバック

1. 次の ___ により、サービス雪崩の問題を解決できます。

タイムアウトメカニズム

Bヒューズ機構

Cフロー制御

上記はすべて正しいです 

2. Sentinel の外部フロー制御とは、_____ を指します。

ヒューズ

B が格下げされました

C電流制限

D 分離

分散トラフィック保護_Sentinel を知る

Sentinel は Ali のオープンソース プロジェクトであり、サービスの安定性を確保するために、フロー制御、サーキット ブレーカーの劣化、システム負荷保護などの複数の側面を提供します。

 Sentinel の主な機能

 

 センチネルは 2 つの部分に分かれています

1. コンソール (ダッシュボード): コンソールは主に、プッシュ ルールの管理、監視、クラスターの電流制限割り当て管理、マシンの検出などを担当します。

2. コア ライブラリ (Java クライアント): フレームワーク/ライブラリに依存せず、Java 7 以降のランタイム環境で実行でき、Dubbo / Spring Cloud およびその他のフレームワークも適切にサポートします。

知らせ:

Sentinel は、Sentinel コア ライブラリとダッシュボードに簡単に分けることができます。コア ライブラリは Dashboard に依存しませんが、Dashboard と組み合わせることで最高の結果を達成できます。 

センチネルを使用しているのは誰ですか?

 

Sentinel と Hystrix および resilience4j の比較 

リアルタイムのエフェクトフィードバック

1. Sentinel の次の利点は ___ です。

A はすぐに使用できるコンソールを提供します

B 豊富なサーキット ブレーカーのダウングレード戦略

C はトラフィック シェーピングをサポートします

上記はすべて正しいです 

おすすめ

転載: blog.csdn.net/m0_58719994/article/details/131818284