SpringCloud
zookeeper中的节点是持久还是临时的?
答:临时的。
服务挂了,服务节点就没了。
有win版
docker pull zookeeper3.5.2docker run --privileged=true -d --name zookeeper --publish 2181:2181 -d zookeeper:latest# 进入容器
docker exec -it id /bin/bash# 进到services
cd services
ls
#可查看服务的名字
不需要server端:
依赖:zookeeper-discovery是基于SpringCloud依赖的
3.4.14
org.apache.zookeeper zookeeper ${zookeeper.version}
org.springframework.cloud spring-cloud-starter-zookeeper-discovery org.apache.zookeeper zookeeper
org.apache.zookeeper zookeeper org.slf4j slf4j-log4j12
配置yml文件
server:# 8004表示注册到zookeeper服务器的支付服务提供者端口号port: 8004spring:application:# 服务别名---注册zookeeper到注册中心的名称name: cloud-provider-paymentcloud:zookeeper:# 默认localhost:2181connect-string: localhost:2181
启动类添加**@EnableDiscoveryClient**,该注解用于向使用consul或者zookeeper作为注册中心时注册服务
依赖配置一样,消费者使用RestTemplate调用服务提供者接口,@LoadBalanced实现集群负载均衡,轮询。
/*** @author zzyy* @date 2020-02-18 17:27**/
@Configuration
public class ApplicationContextConfig {@Bean@LoadBalancedpublic RestTemplate getRestTemplate() {return new RestTemplate();}
}
/*** @author zzyy* @create 2020-02-18 17:23**/
@RestController
@Slf4j
public class OrderZkController {public static final String INVOKE_URL = "http://cloud-provider-payment"; //提供者服务名字,前提是消费者和提供者都要注册到注册中心@Resourceprivate RestTemplate restTemplate;/*** http://localhost/consumer/payment/zk** @return*/@GetMapping("/consumer/payment/zk")public String paymentInfo() {return restTemplate.getForObject(INVOKE_URL + "/payment/zk", String.class);}
}
注册中心集群:connect-string: localhost:2181,ip1:2181,ip2:2181
服务集群保证服务名一致即可。
server:# 8004表示注册到zookeeper服务器的支付服务提供者端口号port: 8004spring:application:# 服务别名---注册zookeeper到注册中心的名称name: cloud-provider-paymentcloud:zookeeper:# 默认localhost:2181connect-string: localhost:2181,ip1:2181,ip2:2181