java整合zk_SpringCloud整合Zookeeper

创建项目

使用 Spring Initializr 新建一个项目命名为: springcloud-zookeeper,删除多余的文件,并新建两个子模块分别为:springcloud-zookeeper-member、springcloud-zookeeper-order

f5e786f4e8aed264d71ea0ded915f3f4.png

父工程 pom.xml配置文件spring-boot 版本这里选用 2.0.1.RELEASE<?xml version="1.0" encoding="UTF-8"?>

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

pom

springcloud-zookeeper-member

springcloud-zookeeper-order

org.springframework.boot

spring-boot-starter-parent

2.0.1.RELEASE

com.baba.wlb

springcloud-zookeeper

1.0-SNAPSHOT

springcloud-zookeeper

Demo project for Spring Boot

1.8

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-devtools

runtime

true

org.projectlombok

lombok

true

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-maven-plugin

org.projectlombok

lombok

子模块

springcloud-zookeeper-member模块:

42e060524970ad227b11e309a74d8b3c.png

pom.xml文件:<?xml version="1.0" encoding="UTF-8"?>

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

springcloud-zookeeper

com.baba.wlb

1.0-SNAPSHOT

4.0.0

springcloud-zookeeper-member

org.springframework.cloud

spring-cloud-dependencies

Finchley.M7

pom

import

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-zookeeper-discovery

spring-milestones

Spring Milestones

https://repo.spring.io/libs-milestone

false

application.yml配置文件:##服务器端口号

server:

port: 7001

##dubbo 注册到注册中心的名称

spring:

application:

name: zk-member

cloud:

zookeeper:

connect-string: 39.102.56.91:2181

MemberApiController 控制页面:package com.baba.wlb.controller;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

/**

* @Author wulongbo

* @Date 2021/1/9 15:20

* @Version 1.0

*/@RestController

public class MemberApiController {

@Value("${server.port}")

private String serverPort;

@RequestMapping("/getMember")

public String getMember() {

return "我是会员服务!端口号:"+serverPort;

}

}

AppMember 启动类:package com.baba.wlb.controller;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

/**

* @Author wulongbo

* @Date 2021/1/9 15:22

* @Version 1.0

*/@EnableDiscoveryClient

@SpringBootApplication

public class AppMember {

// @EnableDiscoveryClient作用是 如果服务使用zookeeper或者connsul,使用@EnableDiscoveryClient向注册中心注册服务

public static void main(String[] args) {

SpringApplication.run(AppMember.class,args);

}

}

springcloud-zookeeper-order模块:

00bd75aed0f334bca2ee79a82920aff0.png

pom.xml 文件<?xml version="1.0" encoding="UTF-8"?>

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

springcloud-zookeeper

com.baba.wlb

1.0-SNAPSHOT

4.0.0

springcloud-zookeeper-order

org.springframework.cloud

spring-cloud-dependencies

Finchley.M7

pom

import

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-zookeeper-discovery

spring-milestones

Spring Milestones

https://repo.spring.io/libs-milestone

false

application.yml配置文件:##服务器端口号

server:

port: 7002

##dubbo 注册到注册中心的名称

spring:

application:

name: zk-order

cloud:

zookeeper:

connect-string: 39.102.56.91:2181

OrderApiController 控制页面:package com.baba.wlb.controller;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import org.springframework.web.client.RestTemplate;

/**

* @Author wulongbo

* @Date 2021/1/9 15:32

* @Version 1.0

*/@RestController

public class OrderApiController {

@Autowired

private RestTemplate restTemplate;

/**

* springCloud中,两种方式调用(rest/feign)

*

* @return

*/

// 订单服务调用会员服务

@RequestMapping("/getOrder")

public String getOrder() {

// 有两种调用方式,一种是采用服务别名方式调用,另一种是使用别名去注册中心上获取对应服务调用地址

// 第一种方式

String url = "http://dy-202006281547:8000/getMember";

// 第二种方式

url = "http://zk-member/getMember";

String result = restTemplate.getForObject(url, String.class);

return "订单服务调用会员服务:" + result;

}

}

AppOrder.java 启动类:package com.baba.wlb.controller;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;

import org.springframework.context.annotation.Bean;

import org.springframework.web.client.RestTemplate;

/**

* @Author wulongbo

* @Date 2021/1/9 15:39

* @Version 1.0

*/@SpringBootApplication

@EnableDiscoveryClient

public class AppOrder {

public static void main(String[] args) {

SpringApplication.run(AppOrder.class,args);

// 第二种方式 如果使用rest方式以别名方式进行调用依赖ribbon负载均衡器

// 第二种方式 @LoadBalanced能让restTemplate 模板在请求时拥有客户端负载均衡的能力

}

// 解决RestTemplate 找不到原因, 把RestTemplate注册到Springboot容器中 @Bean

// 第一种方式

// @Bean

// RestTemplate restTemplate(){

// return new RestTemplate();

// }

// 第二种方式 @LoadBalanced能让restTemplate 模板在请求时拥有客户端负载均衡的能力

@Bean

@LoadBalanced RestTemplate restTemplate(){

return new RestTemplate();

}

}

启动项目

启动 AppMember.java 和 AppOrder.java

490a1639625bfa8f8b959664e01c5bfd.png

b7de84d3c4b9ebc5d882d7c457806e1c.png

查看zookeeper上新注册了两个临时节点

02c0a5a723a20ec6f2e907fd5b4ad25c.png

浏览器访问 http://localhost:7002/getOrderorder服务可以调用到member服务。

1891a4e565ee4eb865591905fa349d0e.png

读者也可以给member服务做集群,启动多个member服务,实现负载均衡。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值