SpringCloud(4)使用Zookeeper做为注册中心

1.安装Zookeeper注册中心

安装教程

2.导入Zookeeper客户端依赖

		<!--zookeeper client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <version>2.2.3.RELEASE</version>
        </dependency>

3.配置使用zookeeper

先配置yml配置文件

spring:
  application:
    name: cloud-payment-service
  cloud:
    zookeeper:
      #配置zookeeper服务地址
      connect-string: localhost:2181
server:
  port: 8014

然后在主启动类上加入@EnableDiscoveryClient注解

@SpringBootApplication
@EnableDiscoveryClient//此注解主要用于zookeeper和consul作为注册中心时注册服务
public class CloudProviderPayment8014Application {
    
    

    public static void main(String[] args) {
    
    
        SpringApplication.run(CloudProviderPayment8014Application.class, args);
    }

}

编写一个控制器类进行测试

@RestController
@Slf4j
@RequestMapping("/payment")
public class PaymentController {
    
    

    @Value("${server.port}")
    private String serverPort;

    @GetMapping("/zkpayment")
    public String zkPayment(){
    
    
        return "Spring Cloud with Zookeeper , server port:"+serverPort;
    }

}

然后开启项目,此时打开zookeeper的bin目录下的zkCli,输入ls / 在输入 ls /services,即可查看注册进zookeeper的所有服务。
在这里插入图片描述

注册进zookeeper的服务节点是属于一个临时节点,只要一段时间内没有收到心跳包,就会移除掉这个服务

4.将消费者服务注册进zookeeper

依赖跟刚创建的消费者模块一样,配置文件将项目的端口改成9011,应用名称改成cloud-consumerzk-order,然后新建一个配置类,用于注册bean组件进ioc容器,注册restTemplate进容器,因为还没有使用ribbon,所以需要先用restTemplate进行测试,注意需要加上@LoadBalanced注解开启负载均衡

@Configuration
public class ApplicationContextConfig {
    
    

    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
    
    
        return new RestTemplate();
    }
}

然后编写控制器类进行测试

@RestController
@Slf4j
@RequestMapping("/consumer/payment")
public class PaymentController {
    
    

    /**要调用的服务地址*/
    public static final String INVOKE_URL="http://cloud-payment-service";

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping("/zk")
    public String paymentInfo(){
    
    
        String result=restTemplate.getForObject(INVOKE_URL+"/payment/zkpayment",String.class);
        return result;
    }
}

启动消费者项目进行测试,先查看zookeeper是否注册进去消费者服务,可见注册成功
在这里插入图片描述

再访问请求地址,可以见到成功调用了提供者的对应服务。
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41120971/article/details/107947259