第三章 Zookeeper服务注册与发现

Zookeeper服务注册与发现

gitee:springcloud_study: springcloud:服务集群、注册中心、配置中心(热更新)、服务网关(校验、路由、负载均衡)、分布式缓存、分布式搜索、消息队列(异步通信)、数据库集群、分布式日志、系统监控链路追踪。

Zookeeper安装与Linux系统

1. Zookeeper注册中心

zookeeper是一个分布式协调工具,可以实现注册中心功能;连接zookeeper注册中心时要关闭Linux服务器防火墙后启动zooleeper服务器或者Linux暴露端口;zookeeper服务器取代Eureka服务器,zk作为服务注册中心。

2. 服务提供者cloud-provider-payment8004

pom文件:

XML 复制代码
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>

application.yaml:

XML 复制代码
server:
  port: 8004
spring:
  application:
    name: cloud-provider-payment
  cloud:
    zookeeper:
      connect-string: 192.168.25.153:2181

主启动类:

java 复制代码
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8004 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8004.class,args);
    }
}

controller层:

java 复制代码
@RestController
@Slf4j
public class PaymentController {
    @Value("${server.port}")
    private String serverPort;
​
    @RequestMapping(value = "/payment/zk")
    public String paymentzk(){
        return "spring cloud with zookeeper:"+serverPort+"\t"+ UUID.randomUUID().toString();
    }
}

启动报错:

jar包冲突,安装于linux上的zookeeeper与jar的版本不同。修改pom文件:

java 复制代码
<dependency>
          <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.9</version>
        </dependency>

测试:

Zookeeper上面是临时节点还是持久?zookeeper是临时节点,每一次停的之后,在启动会生成新流水号。

3. 服务消费者cloud-consumerzk-order80

  1. pom文件跟cloud-provider-payment8004一样

  2. application.yaml配置一样,除端口之外

  3. 主启动类一样

  4. config层

java 复制代码
@Configuration
public class ApplicationContextConfig {
​
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}
  1. controller层
java 复制代码
@RestController
@Slf4j
public class OrderController {
    public static final String INVOKE_URL="http://cloud-provider-payment";
​
    @Resource
    private RestTemplate restTemplate;
​
    @GetMapping("/consumer/info")
    public String getPaymentInfo(){
        String result=restTemplate.getForObject(INVOKE_URL+"/payment/zk",String.class);
        return result;
    }
}

测试:

相关推荐
java1234_小锋18 天前
Java高频面试题:为什么Zookeeper集群的数目一般为奇数个?
java·zookeeper·java-zookeeper
java1234_小锋19 天前
Java高频面试题:讲一下 ZooKeeper 的持久化机制?
java·zookeeper·java-zookeeper
java1234_小锋20 天前
Java高频面试题:Zookeeper节点宕机如何处理?
java·zookeeper·java-zookeeper
java1234_小锋21 天前
Java高频面试题:Zookeeper对节点的watch监听通知是永久的吗?
java·zookeeper·java-zookeeper
java1234_小锋23 天前
Java高频面试题:Zookeeper的通知机制是什么?
java·zookeeper·java-zookeeper
java1234_小锋24 天前
Java高频面试题:ZooKeeper集群中服务器之间是怎样通信的?
java·zookeeper·java-zookeeper
张np1 个月前
java进阶-Zookeeper
java·zookeeper·java-zookeeper
程序员乐只1 个月前
基于Python+Django+SSM热门旅游景点推荐系统(源码+LW+调试文档+讲解等)/热门旅游地推荐平台/旅游景点推荐软件/热门景点推荐系统/旅游推荐系统/旅游景点热门推荐
spring boot·spring·tomcat·hibernate·java-zookeeper·guava·java-consul
GfhyPpNY1 个月前
Average Curve:基于MATLAB/Simulink的通过线性插值返回多条曲线的平均曲线
java-zookeeper
stillaliveQEJ2 个月前
【项目实战】zookeeper+dubbo搭建分布式项目
spring boot·分布式·java-zookeeper