Spring Cloud Zookeeper 與服務註冊表

Spring Cloud Zookeeper 實作了 ServiceRegistry 介面,讓開發人員能以程式化的方式註冊任意服務。

ServiceInstanceRegistration 類別提供了 builder() 方法來建立 Registration 物件,ServiceRegistry 可以使用它,如下列範例所示

@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 recipe 不支援此行為。)利用彈性的 payload,Spring Cloud Zookeeper 透過更新一些特定的 metadata,然後在 Spring Cloud LoadBalancer ZookeeperServiceInstanceListSupplier 中篩選該 metadata 來實作 OUT_OF_SERVICEZookeeperServiceInstanceListSupplier 會篩選掉所有不等於 UP 的非空實例狀態。如果實例狀態欄位為空,為了向後相容性,則會將其視為 UP。若要變更實例的狀態,請使用 POSTOUT_OF_SERVICEServiceRegistry 實例狀態 actuator 端點發出請求,如下列範例所示

$ http POST http://localhost:8081/serviceregistry status=OUT_OF_SERVICE
先前的範例使用了來自 httpie.orghttp 命令。