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 コマンドを使用しています。 |