zoukankan      html  css  js  c++  java
  • 基于Spring Cloud Zookeeper的服务注册与发现

    服务注册

    1.添加Spring Cloud Zookeeper依赖:

    <dependencies>
    	<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.6.2</version>
    		<exclusions>
    			<exclusion>
    				<groupId>org.slf4j</groupId>
    				<artifactId>slf4j-log4j12</artifactId>
    			</exclusion>
    		</exclusions>
    	</dependency>
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-web</artifactId>
    	</dependency>
    </dependencies>
    

    2.在服务配置文件中添加zookeeper配置:

    spring:
      cloud:
        zookeeper:
          connect-string: localhost:2181 #zookeeper地址
    

    3.启动zookeeper服务器和服务(我这边是启动了两个服务,分别是provider和consumer),然后在zookeeper客户端中可以查看已经注册到zookeeper中的服务:

    服务发现

    1.创建controller

    消费者controller:

    package com.buhe.zk.controller;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.cloud.client.ServiceInstance;
    import org.springframework.cloud.client.discovery.DiscoveryClient;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    import java.util.List;
    
    @RestController
    public class ZkConsumerController {
        private static final String SERVICE_NAME = "provider";
        private static final String SERVICE_PATH = "/zk/provider";
    
        @Autowired
        private RestTemplate restTemplate;
    
        @Autowired
        private DiscoveryClient discoveryClient;
    
        /**
         * 调用提供者服务
         * @return
         */
        @GetMapping("/zk/consumer")
        public String zkConsumer(){
            return "我吃了" + restTemplate.getForObject("http://" + SERVICE_NAME + SERVICE_PATH, String.class);
        }
    
        /**
         * 获取提供者服务URL
         * @return
         */
        @GetMapping("/zk/url")
        public String serviceUrl() {
            List<ServiceInstance> list = discoveryClient.getInstances(SERVICE_NAME);
            if (list != null && list.size() > 0 ) {
                return list.get(0).getUri().toString() + SERVICE_PATH;
            }
            return null;
        }
    
    }
    
    

    要使用RestTemplate别忘了加配置:

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

    提供者controller:

    package com.buhe.zk.controller;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class ZkProviderController {
    
        @GetMapping("/zk/provider")
        public String zkProvider(){
            return "10个苹果";
        }
    }
    

    2.服务调用

  • 相关阅读:
    汇编笔记
    C++知识点复习
    flask 初步
    flask and postgre on heroku
    google zxing二维码库 初始
    flasklogin解读
    flasksqlalchemy 关系(一对多)
    flask的信号
    flask 范例学习
    github 操作纪录
  • 原文地址:https://www.cnblogs.com/seve/p/13969045.html
Copyright © 2011-2022 走看看