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

浙公网安备 33010602011771号