Spring Cloud Eureka Clientの登録と発見

12593 ワード

分布式のフレームワーク設計はDubboとSpring Cloudのため、現在非常に流行しており、実際には、このフレームワーク設計が乱用されている場合が多い.例えば、ある開発者に面接して、自分が作ったプロジェクトがSpring Cloudのフレームワークをどのように使用するか、各コンポーネントがどのように協力するか、10台のアリクラウドの仮想マシンにどのように配置されるかを冗談で話しました.その結果、システムの同時アクセス数を聞いてみました.彼は2000だと言っていました(あなたは間違っていません.私も間違っていません.こんなにたくさんの0です)、私はその時言いませんでした.心の中でMMP、2000は同時にこんなに大きな戦いをしていましたか.
もちろん、ソフトウェアが分散アーキテクチャを使用し始めたとき、登録と発見のメカニズムは非常に有用であり、最近、オンデマンドサービスを行っており、トランスコードサービス側はpythonを通じてffmpegを呼び出して行い、restfulインタフェースを対外的に提供しているが、本来のシステムにもRestfulのサービスがあり、後続の機能も増加すると予想されている.いくつかのコンポーネントがSpringbootで記述され、すべての呼び出しはhardcodeプロファイルによって実現されます.Spring Cloudで管理しようと思って、Spring Cloudが提案した登録サーバeurekaを使いました.
Spring自身のセットは簡単で、サーバーは互いに登録されており、Springbootアプリケーションもいくつかのプロファイルを変更するだけで接続できます.しかし、プロジェクトにはPythonが提供するRestfulサービスもあるので、Spring Cloudにも登録したほうがいいですが、ネットで見つけたpython eurekaの資料は多くないので、結局は自分で書くつもりです.数日かけて登録を終了してサービスを書き終わったが、コードはまだ最適化に間に合わないため、醜くて貼らない.以下は登録と発見の流れとrestfulパラメータで、分かったら、各道の達人が書くのも速い.
まず、Spring Cloud Eureka Serverが稼働していることを確認します.
以下にrestfulインタラクションに関するフローを示します.
1,Spring Cloud Eureka Serverに登録情報を送信してサービスとして登録する(もちろん、自分のサービスを登録しないように設定することで、サービスのための利用者としてのみ)
登録されたアドレスは次のとおりです.http://spring-cloud-server:8761/eureka/apps/[あなたのアプリケーションサービス名]/[あなたのノードID]
ノードid、springのデフォルトは(カッコなし):  [ip:サービス名小文字:ポート]実装時に参考になる
この例では、http://192.168.3.163:8761/eureka/apps/YOUR-SERVICE/192.168.3.111:your-service:8000
送信されたcontent-typeはアプリケーション/jsonです
送信時に使用するhttp methodは、POST
送信内容:(送信時に余分な改行、タブ、スペース記号を外してrequest bodyに直接書き込んでください)
        {
            'instance': {
                'instanceId': '192.168.3.111:your-service:8000',
                'hostName': '192.168.3.111',
                'app': 'YOUR-SERVICE',
                'ipAddr': '192.168.3.111',
                'status': 'UP',
                'overriddenstatus': 'UNKNOWN',
                'port': {
                    '$': 8000,
                    '@enabled': 'true'
                },
                'securePort': {
                    '$': 443,
                    '@enabled': 'false'
                },
                'countryId': 1,
                'dataCenterInfo': {
                    '@class': 'com.netflix.appinfo.InstanceInfo$DefaultDataCenterInfo',
                    'name': 'MyOwn'
                },
                'leaseInfo': {
                    'renewalIntervalInSecs': 30,
                    'durationInSecs': 90,
                    'registrationTimestamp': 0,
                    'lastRenewalTimestamp': 0,
                    'evictionTimestamp': 0,
                    'serviceUpTimestamp': 0
                },
                'metadata': {
                    'management.port': '8000'
                },
                'homePageUrl': 'http://192.168.3.111:8000/',
                'statusPageUrl': 'http://192.168.3.111:8000/info',
                'healthCheckUrl': 'http://192.168.3.111:8000/health',
                'vipAddress': 'http://192.168.3.111/',
                'secureVipAddress': 'http://192.168.3.111/',
                'isCoordinatingDiscoveryServer': 'false',
                'lastUpdatedTimestamp': '1536310204574',
                'lastDirtyTimestamp':   '1536310204574'
            }
        }

あなたのlastDirtyTimestampを保存することに注意してください.その後、ドキドキするときはこのフィールドを使用する必要があります.
2次のインタフェースを使用して、関連する登録情報を取得(検出)します.
Webサイトは次のとおりです.http://spring-cloud-server:8761/eureka/apps
この例では、http://192.168.3.163:8761/eureka/apps
使用するhttp methodは:GET
返される情報はXMLドキュメントで、フォーマットは次のとおりです.

  1
  UP_3_
  
    YOUR-SERVICE
    
      192.168.3.111:your-service:8000
      192.168.3.111
      MSTOR-VIDEO-TRANSCODE-CENTRE
      192.168.3.111
      UP
      UNKNOWN
      8000
      443
      1
      
        MyOwn
      
      
        30
        90
        1536310204574
        1536310204574
        0
        1536310204574
      
      
        8000
      
      http://192.168.3.111:8000/
      http://192.168.3.111:8000/info
      http://192.168.3.111:8000/health
      http://192.168.3.111
      http://192.168.3.111
      false
      1536310204574
      1536310204574
      ADDED
    
  
  
    EUREKA
    
      192.168.3.116:eureka:8762
      192.168.3.116
      EUREKA
      192.168.3.116
      UP
      UNKNOWN
      8762
      443
      1
      
        MyOwn
      
      
        30
        90
        1536303101988
        1536310773961
        0
        1536303101988
      
      
        8762
      
      http://192.168.3.116:8762/
      http://192.168.3.116:8762/actuator/info
      http://192.168.3.116:8762/actuator/health
      eureka
      eureka
      false
      1536303101988
      1536302098452
      ADDED
    
    
      192.168.3.116:eureka:8761
      192.168.3.116
      EUREKA
      192.168.3.116
      UP
      UNKNOWN
      8761
      443
      1
      
        MyOwn
      
      
        30
        90
        1536303103823
        1536310785455
        0
        1536303103047
      
      
        8761
      
      http://192.168.3.116:8761/
      http://192.168.3.116:8761/actuator/info
      http://192.168.3.116:8761/actuator/health
      eureka
      eureka
      true
      1536303103837
      1536303101851
      ADDED
    
  

返される基本は、現在(登録したコンポーネントを含む)登録されているコンポーネントのリストであり、XML形式で保存されています.これらの情報を使用する言語の関連エンティティに変換して記録してください.また、コンポーネント名によってStatusがUPであるコンポーネントを取得するための関連能力を提供する.
3,心拍数を送信し,登録時に記入した時間に従い,30秒ごとにサーバに心拍数情報を送信する.
送信先:http://spring-cloud-server:8761/eureka/apps/[あなたのサービス名]/[あなたのノードID]?status=UP&lastDirtyTimestamp=[登録時に記録されたlastDirtyTimestamp]
この例のアドレスは次のとおりです.http://192.168.3.163:8761/eureka/apps/YOUR-SERVICE/192.168.3.111:your-service:8000?status=UP&lastDirtyTimestamp=1536310204574
送信されたhttp methodは:PUT
4,同時に,サービスキャッシュを定期的に更新し,伝送圧力を低減するためにdeltaを用いて取得した.
アドレス:http://spring-cloud-server:8761/eureka/apps/delta
この例では、次のようになります.http://192.168.3.163:8761/eureka/apps/delta
使用するhttp methodは:GET
すべてのサービス・アドレスが変更されていない場合は、次のように簡単な情報を返します.

  92
  UP_3_

ここでversion_deltaはバージョン情報、apps_hashcodeのUP_3_ 現在3台の機器が生存していることを示していますが、計算は行わないでください.バージョンが変更された場合、deltaは変更されたノードを返します.情報は大体次のとおりです.

  94
  UP_2_
  
    YOUR-SERVICE
    
      192.168.3.111:your-service:8000
      192.168.3.111
      YOUR-SERVICE
      192.168.3.111
      DOWN
      UNKNOWN
      8000
      443
      1
      
        MyOwn
      
      
        30
        90
        1536312407562
        1536312407562
        1536312407566
        1536310699505
      
      
        8090
      
      http://192.168.3.111:8000/
      http://192.168.3.111:8000/info
      http://192.168.3.111:8000/health
      mstor-video-transcode-centre
      mstor-video-transcode-centre
      false
      1536312407566
      1536312408251
      DELETED
    
  

デルタ情報に基づいて、ローカルキャッシュしないサービスを整理してください.あるいは、上記のライブラリ全体を取得するサービスで、データのキャッシュをリフレッシュすることもできます.この登録サービス情報のリフレッシュも30秒ごとに行われる.
5,ノードの終了.
ノードの脱退時には,まずDOWN情報を送信し,この要求はノード登録と完全に一致しているが,JSONにおけるstatusがUPからDOWNに変更されただけであり,ここではこれ以上述べることはない.
その後、削除されたURLを呼び出します.http://spring-cloud-server:8761/eureka/apps/[あなたのサービス名]/[あなたのサービスインスタンスid]
この例ではhttp://192.168.3.163:8761/eureka/apps/YOUR-SERVICE/192.168.3.111:your-service:8000
使用するHTTPメソッドはDELETE
6,infoおよびhealthインタフェース
一般的なモードでは、コンポーネントが自発的にサーバに自分の状態を報告する必要がありますが、Spring Cloudには、サーバがコンポーネントのコンテンツの取得を要求する別の方法があります.この場合、コンポーネントに2つのインタフェースを提供するように要求されます.デフォルトでは、/infoおよび/healthです.これは、インスタンスの登録時に指定することもできます.デフォルトでは、Springbootアプリケーション/infoインタフェースは空のJSONオブジェクトを返し、/healthは返します.
{"description": "Composite Discovery Client", "status": "UP"}

 
以上の手順で、pythonなどの他のアプリケーションをSpring Cloudのシステムに組み込むことができます.