二、ユーレカサーバー登録サービス

すべての記事

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を使用すると、実際にレジストリに情報を追加する例です。しかし、我々はデータが過渡状態の例、飼育係の練習で、この区別があるので、永続化のためユーレカなしインスタンスのデータを見ることができます。

 

おすすめ

転載: www.cnblogs.com/lay2017/p/11918712.html