ZooKeeper
bin 目录
1、这个目录包含的脚本可以方便地访问(特别是 classpath)到 ZooKeeper 服务器和命令行客户端
(1)以 .sh 结尾的文件与 unix 和 cygwin 兼容
(2)以 .cmd 结尾的文件与 msdos / windows 兼容
2、zkCleanup.sh:清理 ZooKeeper 历史数据,包括事务日志文件、快照数据文件
3、zkCli.sh、zkCli.cmd:ZooKeeper 简易客户端,可以对 ZooKeeper 服务端数据进行各种操作
4、zkEnv.sh:设置 ZooKeeper 启动时的环境变量,不单独执行,需要嵌入到 zkServer.sh 或其他脚本中使用
5、zkServer.sh、zkServer.cmd:ZooKeeper 服务器的启动、停止、重启、状态查询
(1)Linux 开启 ZooKeeper,bin 目录下
./zkServer.sh start
6、注册节点为临时节点
服务提供者(例)
1、依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
2、yaml 配置文件
server:
#8004 表示注册到 ZooKeeper 的服务提供者端口号
port: 8004
spring:
application:
#微服务别名,服务提供者注册 ZooKeeper 到注册中心的名称
name: cloud-provider-payment
cloud:
zookeeper:
#ZooKeeper的连接地址
connect-string: {ip:port}
3、Spring Boot 启动类
@SpringBootApplication
//Consul 或 ZooKeeper 开启服务发现
@EnableDiscoveryClient
public class PaymentMain8004 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8004.class,args);
}
}
4、Controller
@RestController
public class PaymentController {
@Value("${server.port}")
private String serverPort;
@RequestMapping(value = "/payment/zk")
public String paymentzk() {
return "springcloud with zookeeper:"+ serverPort + "\t" + UUID.randomUUID().toString();
}
}
客户端、服务器 ZooKeeper 版本冲突
1、一般不修改服务器
2、排除客户端依赖,重新引入与服务器相同版本依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<!-- 排除自带 ZooKeeper -->
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 添加服务端版本的 ZooKeeper -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>保持与服务端相同版本</version>
</dependency>
服务消费者(例)
1、依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
2、yaml 配置文件
server:
#80 表示注册到 ZooKeeper 的服务者端口号
port: 80
spring:
application:
#微服务别名,注册 ZooKeeper 到注册中心的名称
name: cloud-consumer-order
cloud:
zookeeper:
#ZooKeeper的连接地址
connect-string: {ip:port}
3、Spring Boot 启动类
@SpringBootApplication
public class OrderZK80 {
public static void main(String[] args) {
SpringApplication.run(OrderZK80.class,args);
}
}
4、配置类
@Configuration
public class ApplicationContextBean {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate() {
return new RestTemplate();
}
}
5、Controller
@RestController
public class OrderZKController {
public static final String INVOKE_URL = "http://cloud-provider-payment";
@Autowired
private RestTemplate restTemplate;
@RequestMapping(value = "/consumer/payment/zk")
public String paymentInfo() {
String result = restTemplate.getForObject(INVOKE_URL + "/payment/zk", String.class);
return result;
}
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战