33、微服务注册中心 zookeeper Springcloud 结合 zookeeper 构建微服务

1、使用docker-compose 安装zookeeper 。docker-compose.yml 文件

services:
  zookeeper:
    restart: always
    image: zookeeper
    container_name: zookeeper
    ports:
      - 2181:2181

2、搭建cloud-provider-payment8004 服务提供者 使用zookpeeper 注册中心使用

添加pom依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>com.atguigu.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>

3、编写application.yml配置文件

server:
  port: 8004

spring:
  application:
    name: cloud-payment-service
  cloud:
    zookeeper:
      connect-string: 192.168.28.144:2181

4、编写主启动类

@SpringBootApplication
@EnableDiscoveryClient
public class PaymentApplication8004 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentApplication8004.class,args);
    }
}

5、编写业务类Controller

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

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

    @GetMapping(value = "/zk")
    public String paymentZk() {
        return "springcloud whit zookeeper serverPort:" + serverPort + UUID.randomUUID().toString();
    }
}

6、创建cloud-consumerzk-order80 消费者服务 使用zookeeper为注册中心

编写pom依赖

<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>com.atguigu.springcloud</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>

7、编写application.yml配置文件

server:
  port: 80

spring:
  application:
    name: cloud-orderzk-service
  cloud:
    zookeeper:
      connect-string: 192.168.28.144:2181

8、编写主启动类

@SpringBootApplication
@EnableDiscoveryClient
public class OrderZKApplication80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderZKApplication80.class,args);
    }
}

9、编写RestTemplate 配置类

@Configuration
public class ApplicationContextConfig {

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

10、编写业务类controller

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

    private static final String REST_URL = "http://cloud-payment-service";

    @Resource
    private RestTemplate restTemplate;

    @GetMapping(value = "/payment/zk")
    public String paymentZK() {
        String result = restTemplate.getForObject(REST_URL + "/payment/zk", String.class);
        return result;
    }
}

11、测试验证

本地测试服务提供者自己的接口:http://localhost:8004/payment/zk

测试消费者远程调用提供者的服务接口:http://localhost/consumer/payment/zk

posted @ 2021-06-28 19:48  shunnWcs  阅读(51)  评论(0)    收藏  举报