Spring Cloud Zookeeper とサービスレジストリ

Spring Cloud Zookeeper は ServiceRegistry インターフェースを実装しており、開発者はプログラム的な方法で任意のサービスを登録できます。

ServiceInstanceRegistration クラスは、次の例に示すように、ServiceRegistry で使用できる Registration オブジェクトを作成する builder() メソッドを提供します。

@Autowired
private ZookeeperServiceRegistry serviceRegistry;

public void registerThings() {
    ZookeeperRegistration registration = ServiceInstanceRegistration.builder()
            .defaultUriSpec()
            .address("anyUrl")
            .port(10)
            .name("/a/b/c/d/anotherservice")
            .build();
    this.serviceRegistry.register(registration);
}

インスタンスのステータス

Netflix Eureka は、サーバーに OUT_OF_SERVICE 登録されたインスタンスを持つことをサポートしています。これらのインスタンスは、アクティブなサービスインスタンスとして返されません。これは、青 / 緑の デプロイなどの動作に役立ちます。(Curator Service Discovery レシピはこの動作をサポートしていないことに注意してください) 柔軟なペイロードを利用することで、Spring Cloud Zookeeper は特定のメタデータを更新し、その後 Spring Cloud LoadBalancer ZookeeperServiceInstanceListSupplier でそのメタデータをフィルター処理することで OUT_OF_SERVICE を実装できるようになります。ZookeeperServiceInstanceListSupplier は、UP と等しくないすべての非 null インスタンスステータスをフィルターで除外します。インスタンスのステータスフィールドが空の場合、下位互換性のために UP とみなされます。インスタンスのステータスを変更するには、次の例に示すように、ServiceRegistry インスタンスステータスアクチュエーターエンドポイントに対して OUT_OF_SERVICE を使用して POST を作成します。

$ http POST http://localhost:8081/serviceregistry status=OUT_OF_SERVICE
前述の例では、httpie.org (英語) の http コマンドを使用しています。