すべての記事
https://www.cnblogs.com/lay2017/p/11908715.html
テキスト
エントランス
上記の我々ユーレカは安らか外部のRPCコールを提供するために、ジャージのスタイルを使用して、言いました。我々は(コントローラspringmvcに相当)登録されたサービスのリソースを見つけなければなりません
メソッドADDINSTANCE ApplicationResourceクラスのサービスは、サーバ・エントリとして登録されます
民間 最終PeerAwareInstanceRegistryレジストリ。 @役職 @Consumes({ "アプリケーション/ jsonの"、 "アプリケーション/ xmlの" }) 公共応答ADDINSTANCE(InstanceInfo情報、@HeaderParam(PeerEurekaNode.HEADER_REPLICATION)文字列isReplication){ // ... registry.register(情報、 "真" 。等号(isReplication))。 リターンのResponse.Status(204).build(); }
registerメソッドがPeerAwareInstanceRegistryと呼ばれていることがわかります
フォローレジスタ方法
@Override 公共 のボイドレジスタ(最終 InstanceInfo情報、最終 ブールisReplication){ // ... スーパー.register(情報、leaseDuration、isReplication)。 replicateToPeers(Action.Register、info.getAppName()、info.getId()、情報、ヌル、isReplication)。 }
メソッドを登録し、主に2つのことを行います
1)インスタンス情報を登録します
2)他のノードへ
私たちは、インスタンスの登録を懸念している、super.register方法に従ってください
登録方法は、我々は、プロセスのコアを見て、非常に長いです
民間最終のConcurrentHashMap <文字列、地図<文字列、リース<InstanceInfo >>>レジストリ=新しいのConcurrentHashMap <文字列、地図<文字列、リース<InstanceInfo >>>(); 公共 のボイドレジスタ(InstanceInfo登録者、int型 leaseDuration、ブールisReplication){ しようと{ 地図 <文字列、リース<InstanceInfo >> GMAP = registry.get(registrant.getAppName()); もし(GMAP == NULL ){ 最終 ConcurrentHashMapの<文字列、リース<InstanceInfo >> gNewMap = 新規のConcurrentHashMap <文字列、リース<InstanceInfo >> (); GMAP = registry.putIfAbsent(registrant.getAppName()、gNewMap)。 もし(GMAP == NULL ){ GMAP = gNewMap。 } } リース <InstanceInfo>リース= 新しいリース<InstanceInfo> (登録、leaseDuration)。 gMap.put(registrant.getId()、リース)。 // 省略 } finally { // } }
それは実際には、InstanceInfoは、レジストリのコレクションに追加します、シンプルに見えます。私たちは、どのようなレジストリの格納構造に焦点を当て
それは、我々が変更JSONのレジストリ構成を表現するために例を使用する2つの地図を組み合わせたものです
{ "製品":{ // サービス名 "固有のインスタンスID":{ // インスタンス識別子 "リース":{ // ホールドインスタンス情報 "instanceInfo":{ // インスタンス情報 "APPNAME":「コモディティサービス「」するinstanceId「:」唯一のインスタンスID「」ip-addrで「:」IPアドレス「」ポート「:」コールのポート」 } } } } }
実際には、構造物の多くの例でサービスに係る情報サービスのクラスタを保持します。
概要
ユーレカサービス、登録サービスを提供するために、ジャージーRPCを使用すると、実際にレジストリに情報を追加する例です。しかし、我々はデータが過渡状態の例、飼育係の練習で、この区別があるので、永続化のためユーレカなしインスタンスのデータを見ることができます。