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_SERVICE
。ZookeeperServiceInstanceListSupplier
會篩選掉所有不等於 UP
的非空實例狀態。如果實例狀態欄位為空,為了向後相容性,則會將其視為 UP
。若要變更實例的狀態,請使用 POST
和 OUT_OF_SERVICE
對 ServiceRegistry
實例狀態 actuator 端點發出請求,如下列範例所示
$ http POST http://localhost:8081/serviceregistry status=OUT_OF_SERVICE
先前的範例使用了來自 httpie.org 的 http 命令。 |