90-java-springcloud(03)-注册中心(2)-Zookeeper

Zookeeper

在这里插入图片描述

一.zookeeper的搭建

参考文章: https://editor.csdn.net/md/?articleId=106782730

二.使用zookeeper作为配置中心
1.生产者
  • 1.建module

  • 2.改pom

 <!-- 引入zookeeper依赖 -->
  <dependency>
      <groupId>org.springframework.cloud</groupId>
      <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
      <!--排除zk3.5.3,这一步看情况,是否需要修改zookeeper的版本-->
      <exclusions>
          <exclusion>
              <groupId>org.apache.zookeeper</groupId>
              <artifactId>zookeeper</artifactId>
          </exclusion>
      </exclusions>
  </dependency>
  <!--添加zk 3.4.14版本,这一步看情况,是否需要修改zookeeper的版本-->
  <!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
  <dependency>
      <groupId>org.apache.zookeeper</groupId>
      <artifactId>zookeeper</artifactId>
      <version>3.4.14</version>
  </dependency>

  • 3.写yml
server:
  port: 8003

spring:
  application:
    name: cloud-provider-payment  #服务名
  cloud:
    zookeeper: #zookeeper的配置相关信息
      connect-string: 118.190.58.27:2181,118.190.58.27:2182,118.190.58.27:2183  #zookeeper的节点
  • 4.主启动
    @EnableDiscoveryClient //以后除了eureka,其他的注册中心,统一使用这个注解.
@SpringBootApplication  //springboot的主启动类
@EnableDiscoveryClient  //以后除了eureka,其他的包括zookeeper,consul.nacos都是用这个注解连接注册中心
public class PaymentMain8003 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8003.class,args);
    }
}

2.消费者
  • 1.建module

  • 2.改pom
    同生产者

  • 3.写yml
    同生产者,除了spring.application.name不同,其他zookeeper连接都相同.

  • 4.主启动
    同生产者

  • 5.业务类
    zookeeper的调用方式和Eureka的一模一样,所以没什么好说的.

5.1 向spring容器中注入RestTemplate对象

@Configuration
public class ApplicationContextConfig {

    /**
     * 注入一个rest风格调用主体类
     * @return
     */
    @Bean
    //负载均衡策略,使用集群策略,如果调用的服务,有多个服务提供者,则这个注解不能少,少了就会报错(因为计算机不知道调用哪个具体的服务实例)
    //这是ribbon的负责均衡注解,因为eureka已经集成了ribbon,所以就可以直接用此注解
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return  new RestTemplate();
    }
}

5.2 业务代码发起远程调用

@RestController
public class OrderZKController {

    @Autowired
    private RestTemplate restTemplate;
    //调用的微服务地址
    private static final String SERVICE_NAME = "http://cloud-provider-payment";

    @GetMapping("/payment/zk")
    public String payment(){
        String res = restTemplate.getForObject(SERVICE_NAME + "/payment/zk", String.class);
        return res;
    }
}

3.验证zookeeper作为注册中心

(1)启动上面的生产者和消费者.
(2)登陆zookeeper客户端
在这里插入图片描述
(3) 查看节点情况
在这里插入图片描述
(4) 查看服务下的服务实例的节点信息
在这里插入图片描述
这里可以证明微服务注册到zookeeper的临时节点.
(5) 我们再停止服务,查看zookeeper的节点变化
在这里插入图片描述

以上证明,zookeeper作为微服务的注册中心,使用的临时节点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值