センチネルとは
Sentinelの公式タイトルは、分散システム用のトラフィックガードです。名前から判断すると、サービスの安定性を保証するために使用されていることは容易に想像できます。Spring Cloudのサービス安定性保証コンポーネントには、Hystrix(廃止)も含まれています。Sentinelに
はより多くの機能と詳細があるため、SentinelをSpring Cloudアプリケーションに統合する方法、およびSentinelダッシュボードを使用して現在の制限ルールを構成する方法について説明しましょう。
Sentinelを使用してインターフェース電流制限を実装する
Sentinelの使用は2つの部分に分かれています。
- entinel-dashboard:hystrix-dashboardに似ていますが、より強力です。hystrix-dashboardのようなリアルタイムの監視に加えて、フロー制御ルールとヒューズルールのオンライン保守も提供します。
- クライアントの統合:各マイクロサービスクライアントは、監視情報をダッシュボードに表示して表示し、現在の制限またはヒューズルールをリアルタイムで変更するために、クライアントのパッケージとセンチネルの構成を統合する必要があります。
Sentinelダッシュボードをデプロイする
ダウンロードアドレス:sentinel-dashboard-1.6.0.jar Start
by command:
java -jar sentinel-dashboard-1.6.0.jar
開始ポートを変更する必要がある場合:-Dserver.port=8888
デフォルトでは、番兵ダッシュボードはポート8080で開始するため、次の図に示すように、localhost:8080にアクセスして、ポートが正常に開始されたかどうかを確認できます。
注:デフォルトのユーザー名とパスワードはsentinel
、ユーザーのログイン構成に関連しています。以下のパラメーターを起動コマンドに追加して構成できます。
- -
Dsentinel.dashboard.auth.username=sentinel
:コンソールのログインユーザー名を指定するために使用されますsentinel
。 - -
Dsentinel.dashboard.auth.password=123456
:コンソールのログインパスワードを123456として指定するために使用されます。これらの2つのパラメーターが省略されている場合、デフォルトのユーザーとパスワードは両方ともsentinel
- -
Dserver.servlet.session.timeout=7200
:Spring Bootサーバーセッションの有効期限を指定するために使用されます。たとえば、7200は7200秒を意味し、60mは60分を意味し、デフォルトは30分です。
図に示すように、
Sentinelを統合します。
ステップ1:SpringをSpring Cloudアプリケーションのpom.xmlに導入します。 Cloud AlibabaのSentinelモジュール:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
ステップ2:次のspring.cloud.sentinel.transport.dashboard
ようなSpring Cloudアプリケーションのパラメーターを使用して、センチネルダッシュボードのアクセスアドレスを構成します。
spring.application.name=alibaba-sentinel-rate-limiting
server.port=8001
# sentinel dashboard
spring.cloud.sentinel.transport.dashboard=localhost:8080
ステップ3:メインアプリケーションクラスを作成し、以下のような残りのインターフェイスを提供します。
@SpringBootApplication
public class TestApplication {
public static void main(String[] args) {
SpringApplication.run(TestApplication.class, args);
}
@Slf4j
@RestController
static class TestController {
@GetMapping("/hello")
public String hello() {
return "didispace.com";
}
}
}
手順4:アプリケーションを起動して、localhost:8001 / helloインターフェースにpostmanまたはcurlを介して数回アクセスします。
$ curl localhost:8001/hello
didispace.com
これで、監視ページが表示されます。
現在の制限ルール
設定QPS、しきい値を構成します。
全体的な構成の効果は、インターフェースの現在の制限ポリシーは、1秒あたり最大2つの要求を許可することです。
現在の制限ルールの
確認次のような現在の制限制御がトリガーされるかどうかを確認します。
$ curl localhost:8001/hello
didispace.com
$ curl localhost:8001/hello
didispace.com
$ curl localhost:8001/hello
Blocked by Sentinel (flow limiting)
参考資料:
センチネル学習教材