|
该版本仍在开发中,尚未被视为稳定。对于最新稳定版,请使用Spring Cloud Zookeeper 5.0.0! |
Zookeeper 服务发现
服务发现是基于微服务架构的关键原则之一。正在努力 手动配置每个客户端或某种约定可能很难做到,而且可以 脆。Curator(Zookeeper 的 Java 库)提供服务 通过服务发现进行发现 延期。Spring Cloud Zookeeper 使用该扩展进行服务注册, 发现。
激活
包括对 的依赖org.springframework.cloud:spring-cloud-starter-zookeeper-discovery使
自动配置,用于设置 Spring Cloud Zookeeper Discovery。
对于网页功能,你仍然需要包含org.springframework.boot:spring-boot-starter-web. |
| 使用 Zookeeper 3.4 版本时需要更改 你描述的依赖方式。 |
向Zookeeper注册
当客户端注册Zookeeper时,它会提供元数据(如主机和端口、ID, 以及名称)关于自身的。
以下示例展示了一个 Zookeeper 客户端:
@SpringBootApplication
@RestController
public class Application {
@RequestMapping("/")
public String home() {
return "Hello world";
}
public static void main(String[] args) {
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
}
| 上述示例是一个普通的 Spring Boot 应用程序。 |
如果Zookeeper位于其他地方本地主持人:2181,配置必须
提供服务器的位置,如下示例所示:
spring:
cloud:
zookeeper:
connect-string: localhost:2181
如果你使用 Spring Cloud Zookeeper 配置,
前例所示的值需要为bootstrap.yml而不是application.yml. |
默认服务名称、实例ID和端口(取自环境)是${spring.application.name}, Spring Context ID,${server.port}分别。
拥有春云启动者Zookeeper 发现在 classpath 上,应用变成了两者
一个是Zookeeper的“服务”(即它会自行注册),另一个是“客户端”(即它可以
查询Zookeeper以查找其他服务)。
如果您想禁用 Zookeeper 的发现客户端,可以设置spring.cloud.zookeeper.discovery.enabled自false.
使用 DiscoveryClient
Spring Cloud 支持OpenFeign(一个 REST 客户端构建器),Rest模板和Web客户端通过 Spring Cloud 负载均衡器,使用逻辑服务名称而非物理网址。
你也可以使用org.springframework.cloud.client.discovery.DiscoveryClient哪
为发现客户端提供一个简单的API,且不专属Netflix,如所示
以下示例:
@Autowired
private DiscoveryClient discoveryClient;
public String serviceUrl() {
List<ServiceInstance> list = discoveryClient.getInstances("STORES");
if (list != null && list.size() > 0 ) {
return list.get(0).getUri().toString();
}
return null;
}