B站尚硅谷最新版SpringCloud 学习笔记(3)-Zookeeper服务注册与发现
B站视频:https://www.bilibili.com/video/BV18E411x7eT
上一篇:B站尚硅谷最新版SpringCloud 学习笔记(2)-Eureka服务注册与发现
文章目录
- B站尚硅谷最新版SpringCloud 学习笔记(3)-Zookeeper服务注册与发现
- 上一篇:[B站尚硅谷最新版SpringCloud 学习笔记(2)-Eureka服务注册与发现](https://blog.csdn.net/weixin_42417934/article/details/112651469)
- 一、安装virtual box虚拟机与下载Centos7镜像
- 二、Zookeeper
- 下一篇:[B站尚硅谷最新版SpringCloud 学习笔记(4)-Consul服务注册与发现](https://blog.csdn.net/weixin_42417934/article/details/112721644)
一、安装virtual box虚拟机与下载Centos7镜像
1.下载
①virtual box虚拟机安装不做介绍
②下载Centos7的镜像
https://mirrors.aliyun.com/centos/?spm=a2c6h.13651104.0.0.499812b29Rz0bM
然后选择centos的版本,
【DVD】标准版本
【Everything】集成所有软件版本
【LiveGNOME】GNOME桌面版本
【LiveKDE】KDE桌面版本
【Minimal】最小安装版本
【NetInstall】网络安装镜像版本
2.virtual box导入Centos7镜像
注意点的都会框图出来
无脑下一步
选择虚拟盘
选择下载好的镜像
以上是虚拟机的常规操作
3.Centos7安装
配置网络
设置密码
等待安装,后重启
4.使用xshell7和xftp
亲测使用不了增强功能
选择xftp传输文件
两者安装包再官网即可下载,傻瓜式安装
①修改虚拟机网卡,改成桥接网卡
②测试连通性
windows局域网络192.168.75.122
虚拟机局域网络192.168.75.215
ping测试,两者成功ping通
③配置xshell
用户名和密码填虚拟机的用户名和密码
接入成功
5.centos7配置JDK8环境
①Centos7换源
备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
换阿里源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
更新
yum clean all
yum makecache
②宿主机上下载jdk8,下载以tar.gz结尾的
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
xshell
切换目录
cd /usr/local
创建java目录和修改权限
mkdir java
chmod 777 java
③xftp传输文件
④解压压缩包
tar -zxvf jdk-8u212-linux-x64.tar.gz
解压后
⑤修改环境变量
备份
cp /etc/profile /etc/profile.backup
进入/etc/profile
vim /etc/profile
修改
export JAVA_HOME=/usr/local/java/jdk1.8.0_212
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
JAVA_HOME的路径是这个
最后
重启环境 生效命令
source /etc/profile
完成JDK8的安装
可以参考:https://blog.csdn.net/qq_38591756/article/details/82828907
6.安装Zookeeper
①下载安装包
http://mirror.bit.edu.cn/apache/zookeeper/
注意是带bin的文件,之前下错,一直不成功
②xftp传输zookeeper
进入/usr/local ,创建zookeeper,并修改权限
③解压压缩包
cd zookeeper
tar -zxvf apache-zookeeper-3.5.9-bin.tar.gz
④启动服务
cd apache-zookeeper-3.5.9-bin/bin/
./zkServer.sh start
报错,没有那个文件
创建此文件zoo.cfg
cd …/conf/
cp zoo_sample.cfg zoo.cfg
cd …/bin/
./zkServer.sh start
成功
二、Zookeeper
1.注册中心Zookeeper
zookeeper是一个分布式协调工具,可以实现注册中心功能
zookeeper服务器取代Eureka服务器,zk作为服务注册中心
①关闭Linux服务器防火墙后启动zookeeper服务器
systemctl stop firewalld
systemctl status firewalld
②验证服务
启动服务
./zkServer.sh start
启动客户端
./zkCli.sh
ls /
2.新建服务提供者
①cloud-provider-payment8004
②修改pom,创建application.yml,创建启动类
pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
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">
<parent>
<artifactId>mycloud2020</artifactId>
<groupId>org.yezhinao</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-provider-payment8004</artifactId>
<dependencies>
<dependency>
<groupId>org.yezhinao</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-zookeeper-discovery -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
application.yml
server:
port: 8004
spring:
application:
name: cloud-provider-payment
cloud:
zookeeper:
#zookpeer默认端口为2181
# connect-string: 192.168.75.215:2181 #公司局域网
connect-string: 192.168.88.77:2181 #家里局域网
启动类
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8004 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8004.class,args);
}
}
③创建接口
@RestController
@Slf4j
@RequestMapping(value = "/payment")
public class PaymentController {
@Value("${server.port}")
private String serverPort;
@GetMapping(value = "/zk")
public String paymentzk(){
return "springcloud with zookeeper:"+serverPort+"\t"+ UUID.randomUUID().toString();
}
}
④启动遇到bug
发现可能是zookeeper版本问题所导致的
⑥修改zookeeper的依赖版本
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
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">
<parent>
<artifactId>mycloud2020</artifactId>
<groupId>org.yezhinao</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-provider-payment8004</artifactId>
<dependencies>
<dependency>
<groupId>org.yezhinao</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-zookeeper-discovery -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<!--排除zk3.5.3-->
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--添加zk 3.5.9版本-->
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
⑦再次启动
可能会出现错误,不能链接
原因虚拟机上没有关闭防火墙
systemctl stop firewalld
关闭后,再次启动
再zookeeper的客户端下
ls /services
成功注册服务
查看注册信息
{
"name":"cloud-provider-payment",
"id":"fe58c748-3b08-4a62-abf5-96e3d45901aa",
"address":"192.168.88.71",
"port":8004,
"sslPort":null,
"payload":{
"@class":"org.springframework.cloud.zookeeper.discovery.ZookeeperInstance",
"id":"application-1",
"name":"cloud-provider-payment",
"metadata":{
}
},
"registrationTimeUTC":1610781446166,
"serviceType":"DYNAMIC",
"uriSpec":{
"parts":[
{
"value":"scheme",
"variable":true
},
{
"value":"://",
"variable":false
},
{
"value":"address",
"variable":true
},
{
"value":":",
"variable":false
},
{
"value":"port",
"variable":true
}
]
}
}
3.服务节点是临时节点
关闭cloud-provider-payment8004,一定时间内zookeeper的注册节点消失
再次启动cloud-provider-payment8004
4.服务消费者
①新建cloud-consumerzk-order80
②修改pom,创建application.yml,创建启动类
pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
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">
<parent>
<artifactId>mycloud2020</artifactId>
<groupId>org.yezhinao</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-consumerzk-order80</artifactId>
<dependencies>
<dependency>
<groupId>org.yezhinao</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-zookeeper-discovery -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<!--排除zk3.5.3-->
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--添加zk 3.5.9版本-->
<!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.5.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-test -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
application.yml
server:
port: 80
spring:
application:
name: cloud-consumer-order
cloud:
zookeeper:
# connect-string: 192.168.75.215:2181 #公司局域网
connect-string: 192.168.88.77:2181 #家里局域网
启动类
@SpringBootApplication
@EnableDiscoveryClient
public class OrderZKMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderZKMain80.class,args);
}
}
③注入RestTemplate 和 创建接口
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
@RestController
@Slf4j
public class OrderZKController {
public static final String INVOME_URL = "http://cloud-provider-payment";
@Resource
private RestTemplate restTemplate;
@GetMapping("/consumer/payment/zk")
public String payment() {
return restTemplate.getForObject(INVOME_URL + "/payment/zk", String.class);
}
}
④启动
两个服务注册成功
http://localhost/consumer/payment/zk
代码:https://gitee.com/yezhinao/SpringCloud-Learn/tree/master/mycloud2020(3)