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;
    }
}
posted @   半条咸鱼  阅读(158)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示