2017-11-24 9 views
0

私はサービス発見によってマイクロサービスBを呼び出す必要があるモノリスアプリケーションAを持っています。 Consulは、使用されるサービス検出サーバーです。マイクロサービスBは領事サーバーに登録されています。モノリスアプリケーションからのコンサルのサービス発見

Aから私はサービスの発見を経てこれを行うにはどのようにhttp://hostname:portname/endpoint

を与えることによって、Bを呼び出すことができています。

私はサービス検出を行うためにorg.springframework.cloud.client.discovery.DiscoveryClientを使用できるように、モノリスアプリケーションAに依存spring-cloud-dependenciesを追加しようとしたが、この春の依存性は、デフォルトのポートの両方の実行としての私のJBossと衝突された組み込みのTomcatジャーにもたらしています8080。サービス発見のためだけにmonolith Aをspringbootアプリに変換することはオプションではありません。

モノリスアプリケーションからConsulサーバーへのサービスディスカバリを行うための非春のオプションはありますか?

答えて

0

モノリスアプリケーションから領事サーバーを検索することができました。領事

public String serviceUrl(String serviceName) { 
     String consulRegistryHost = System.getProperty("consul.registry.url"); 
     Consul consul = Consul.builder().withUrl(consulRegistryHost).build(); // connect to Consul on localhost by default , otherwise 
     HealthClient healthClient = consul.healthClient(); 

     List<ServiceHealth> nodes = healthClient.getAllServiceInstances(serviceName).getResponse(); // discover only "passing" nodes 
     if (nodes != null && nodes.size() > 0) { 
      ServiceHealth node = nodes.get(0); 
      return "http://"+node.getService().getAddress()+":"+node.getService().getPort(); 
     } 
     return null; 
    } 
+0

のようなクライアント側の負荷分散ソリューションこれはクライアント側の負荷分散です。インスタンスの状態を継続的に監視し、負荷分散を行う必要がありますアルゴリズム(ラウンドロビン、...)とエラーを処理します。あなたはそれを行う外部の方法について尋ねた、私の答えを受け入れてください –

0

に登録されたとしてあなたは気づい領事を使用することができ、下記の方法は、ホスト名を返しますあなたのpom.xmlに

<!-- https://mvnrepository.com/artifact/com.orbitz.consul/consul-client --> 
<dependency> 
    <groupId>com.orbitz.consul</groupId> 
    <artifactId>consul-client</artifactId> 
    <version>0.17.0</version> 
</dependency> 

を依存関係を追加したサービスが実行されているhttp://hostname:portのようなポートとhttps://traefik.io/またはhttps://github.com/fabiolb/fabioなどのクライアント側ロードバランサまたはhttps://linkerd.io/

関連する問題