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に直接書き込んでください)
あなたのlastDirtyTimestampを保存することに注意してください.その後、ドキドキするときはこのフィールドを使用する必要があります.
2次のインタフェースを使用して、関連する登録情報を取得(検出)します.
Webサイトは次のとおりです.http://spring-cloud-server:8761/eureka/apps
この例では、http://192.168.3.163:8761/eureka/apps
使用するhttp methodは:GET
返される情報はXMLドキュメントで、フォーマットは次のとおりです.
返される基本は、現在(登録したコンポーネントを含む)登録されているコンポーネントのリストであり、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
すべてのサービス・アドレスが変更されていない場合は、次のように簡単な情報を返します.
ここでversion_deltaはバージョン情報、apps_hashcodeのUP_3_ 現在3台の機器が生存していることを示していますが、計算は行わないでください.バージョンが変更された場合、deltaは変更されたノードを返します.情報は大体次のとおりです.
デルタ情報に基づいて、ローカルキャッシュしないサービスを整理してください.あるいは、上記のライブラリ全体を取得するサービスで、データのキャッシュをリフレッシュすることもできます.この登録サービス情報のリフレッシュも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は返します.
以上の手順で、pythonなどの他のアプリケーションをSpring Cloudのシステムに組み込むことができます.
もちろん、ソフトウェアが分散アーキテクチャを使用し始めたとき、登録と発見のメカニズムは非常に有用であり、最近、オンデマンドサービスを行っており、トランスコードサービス側は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のシステムに組み込むことができます.