springcloud-zuul主要記事

序文

、マイクロサービスのためには、複数のサーバーにデプロイされているサーバーのIPアドレスと統一することができない、我々は、使用インタフェースにフロントデスクを呼び出すための単一のIPアドレスを公開する必要があります;ゲートウェイをルーティングする中心的な役割をzuulは、バックグラウンドサービスのための統一管理ですzuulこれは、統一ゲートウェイルータの役割を果たしている。見Netflixがzuulを使用して、次のように使用zuulに:

  1. 認証:真剣権
  2. 洞察:ビジョン監視
  3. ストレステスト:ストレステスト
  4. カナリアテスト:カナリアテスト
  5. 動的ルーティング:動的ルーティング
  6. サービスの移行:移行サービス
  7. 負荷制限:負荷分散カットを
  8. セキュリティ:セキュリティ認証
  9. 静的応答処理:静的応答処理
  10. アクティブ/アクティブトラフィック管理:トラフィック管理イニシアチブ

この記事では、いくつかの事前の知識を取り、主エントリー書類であり、あなたが初心者会場springcloudコラム知識を求める人系統的な研究されている場合は、

二zuul、クライアント

2.1のpom.xml

新しいプロジェクトzuul-クライアントを作成し、spring-cloud-starter-netflix-eureka-clientサービスの登録と発見のために依存しています。

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>

2.2プレゼンテーション層

プレゼンテーション層は、一元管理するためのサービスをルーティングzuulサーバのための試験インタフェースを提供します。

/**
 * @Author lsc
 * <p>zuul 路由网关测试表现层 </p>
 */
@RestController
public class ZuulController {

    @RequestMapping("/zszxz")
    public String getUser(String username){
        return "hello"+username;
    }
}

2.3 application.yml

  1. 指定ポート8101
  2. サービス名zuulクライアント暴露
  3. ユーレカのサービス登録
server:
  port: 8101

spring:
  application:
    name: zuul-client # 应用名称

eureka:
  client:
    service-url:
      # 服务注册地址
      defaultZone: http://peer1:10081/eureka/,http://peer2:10082/eureka/,http://peer3:10083/eureka/
  instance:
    prefer-ip-address: true

2.4起動クラス

@EnableDiscoveryClient 登録と発見のためのオープンユーレカ

/**
 * @Author lsc
 * <p> zuul-client启动类</p>
 */
@SpringBootApplication
@EnableDiscoveryClient//开启eureka注册与发现
public class ZuulApp {

    public static void main(String[] args) {
        SpringApplication.run(ZuulApp.class, args);
    }
}

三zuulサーバ

3.1のpom.xml

zuul-サーバープロジェクト、ユーレカの導入、zuul依存を作成します。

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-zuul</artifactId>
        </dependency>
    </dependencies>

3.2 application.yml

  1. 指定ポート8100
  2. zuulサーバーの名前を指定します。
  3. ユーレカサービスの登録と発見
  4. zuulルーティングルールセット、zuulクライアントサービス/ ** zuulルーティング管理によって統一/ API / **
server:
  port: 8100

spring:
  application:
    name: zuul-server # 应用名称

eureka:
  client:
    service-url:
      # 服务注册地址
      defaultZone: http://peer1:10081/eureka/,http://peer2:10082/eureka/,http://peer3:10083/eureka/
  instance:
    prefer-ip-address: true

zuul:
  routes:
    # zuul-client 路由规则
    zuul-client:
      path: /api/** # 转发路径
      serviceId: zuul-client # 服务id

3.3起動クラス

埋め込まれたルーティングエージェントを開く@EnableZuulProxy。

/**
 * @Author lsc
 * <p>zuul-server </p>
 */
@SpringBootApplication
@EnableZuulProxy
public class ZuulServerApp {

    public static void main(String[] args) {
        SpringApplication.run(ZuulServerApp.class, args);
    }
}

四つのテスト結果

4.1スタートプロジェクトリスト

  1. 開始した3ユーレカ・サーバー(1-3)、ポート10081,10082,10083
  2. スタートzuul、クライアント
  3. スタートzuulサーバ

4.1 zuulクライアントアクセス

訪問のhttp:// localhostを:8101 / zszxzユーザ名= zszxzそれは通常のインタフェースのテストですか?

4.2アクセスzuulサーバ

HTTPをご覧ください:// localhostを:8100 / API / zszxzユーザ名= zszxzゲートウェイルーティングのテスト?

締結zuulクライアントサービス/ **すべてのパスは、zuulサーバサービス/ API / **パスをマッピングされます。

ファイブzuul一般的な構成

5.1ルーティング簡素化の設定

ルーティング簡素化設定が設定され、対応するルーティングサービスID名に厳密に従っを必要とします。

元のルーティングルール

zuul:
  routes:
    # zuul-client 路由规则
    zuul-client:
      path: /api/** # 转发路径
      serviceId: zuul-client # 服务id

次のようにルーティングルールを簡略化し、

zuul:
  routes:
    zuul-client: /api/**

5.2は、コンフィギュレーションをルーティング除外する

日々の開発では、いくつかの内部サービスが外部アクセスに利用できないことは避けられないが、内部サーバ間の呼び出しは、あなたが設定トラブルシューティング設定のルーティングに使用することができます。次の設定は、zuulクライアントに加えて、すべてのサービスを除外します。もちろん、読者のまた、いないワイルドカード*が、特定のサービスIDを使用することができます。

zuul:
  ignoredServices: '*'
  routes:
    zuul-client: /api/**

特定を使用して構成をルーティング5.3 IPアドレス

コンフィギュレーションをルーティングサービスIDを使用することに加えて、あなたはまた、IPアドレスの設定を使用することができますが、一般的には、このオプションを使用しないでください。

zuul:
  routes:
    zuul-client:
      path: /api/**
      url: http://127.0.0.1:8101

5.4リボンを使用してバランスをとるzuulロード

一般的に使用されるzuulは、単純なユーレカ独自の負荷分散され、現在はリボンのロードバランシングを使用すると、あなたは以下の構成HystrixCommandを実行する必要がサポート

zuul:
  routes:
    zuul-client:
      path: /api/**
      serviceId: zuul-client
      stripPrefix: true #开启前缀

hystrix:
  command:
    zuul-client:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 10000

zuul-client:
  ribbon:
    NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList
    listOfServers: http://127.0.0.1:8101,http://127.0.0.1:8102
    ConnectTimeout: 1000
    ReadTimeout: 3000
    MaxTotalHttpConnections: 500
    MaxConnectionsPerHost: 100

5.5は、コンフィギュレーションをルーティング除外する

セクション5.2サービスルーティングを排除することができる、このセクションでは、特定のインターフェイスモードへのパスを除外することができる。以下は、すべてのパスがパスに含まれる界面zuulクライアント管理者に除外されます。

zuul:
  ignoredPatterns: /**/admin/**
  routes:
    zuul-client: /api/**

以上5.6ルーティングの設定

次の構成例であればサービスIDの構成は、複数のサービスを配置する前に、リーダからの経路によって定義されるIDと特定のサービス。

zuul:
  routes:
    zuul-client1:
      path: /api/1/**
    zuul-client2:
      path: /api/2**

5.7除外ヘッダ

構成要求は、ヘッダ内の機密情報を除外し、それは良い選択です。

zuul:
  routes:
    zuul-client:
      path: /api/**
      sensitiveHeaders: Cookie,Set-Cookie,Authorization
      url: http://127.0.0.1:8101

シックス・参考文献

参考資料

zuul-githubのします。https://github.com/Netflix/zuul/wiki

springcloud公文書ます。https://cloud.spring.io/spring-cloud-static/Finchley.SR4/single/spring-cloud.html

出典:あなたが得ることができる会場や知識を求める人spingcloud列の説明

107元記事公開 ウォンの賞賛250 ビューに10万+を

おすすめ

転載: blog.csdn.net/youku1327/article/details/104108108