5. Spring Cloud Zookeeper 和服务注册表

Spring Cloud Zookeeper 实现了该接口,让开发人员 以编程方式注册任意服务。ServiceRegistryspring-doc.cn

该类提供了一种创建可供 . 使用的对象的方法 ,如下所示 例:ServiceInstanceRegistrationbuilder()RegistrationServiceRegistryspring-doc.cn

@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);
}

5.1. 实例状态

Netflix Eureka 支持在服务器上注册的实例。 这些实例不会作为活动服务实例返回。 这对于蓝/绿部署等行为非常有用。 (请注意,Curator Service Discovery 配方不支持此行为。利用灵活的有效负载,Spring Cloud Zookeeper 通过更新一些特定的元数据,然后在 Spring Cloud LoadBalancer 中过滤该元数据来实现。 将筛选掉所有不等于 的非 null 实例状态。 如果 instance status 字段为空,则认为它是为了向后兼容。 要更改实例的状态,请对实例 status actuator 端点进行 with,如以下示例所示:OUT_OF_SERVICEOUT_OF_SERVICEZookeeperServiceInstanceListSupplierZookeeperServiceInstanceListSupplierUPUPPOSTOUT_OF_SERVICEServiceRegistryspring-doc.cn

$ http POST http://localhost:8081/service-registry status=OUT_OF_SERVICE
前面的示例使用 httpie.org 中的命令。http