微服務間通信重構與服務治理筆記-CSDN博客
Zookeeper是一個分布式協調工具,可以實現注冊中心功能
安裝Zookeeper
隨便 就用最新版本吧
進入Zookeeper 包目錄
cd /usr/local/develop/
解壓
tar -zxvf apache-zookeeper-3.9.1-bin.tar.gz -C /usr/local/develop
進入配置文件??
cd /usr/local/develop/apache-zookeeper-3.9.1-bin/conf
復制文件
cp zoo_sample.cfg zoo.cfg
編輯文件?
vim zoo.cfg
mkdir /usr/local/develop/apache-zookeeper-3.9.1-bin/data? 這個沒必要? 會自動創建
?cd /usr/local/develop/apache-zookeeper-3.9.1-bin/bin
啟動Zookeeper
./zkServer.sh start
安裝JDK
解壓
tar -zxvf /usr/local/develop/jdk-8u191-linux-x64.tar.gz -C /usr/local/develop
配置JAVA_HOME
export JAVA_HOME=/usr/local/develop/jdk1.8.0_191
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib
讓環境變量生效
source /etc/profile
java -version?查看jdk版本?至此JDK安裝完成
which java 查看調用的是安裝在哪里的java
進入Zookeeper啟動目錄
cd /usr/local/develop/apache-zookeeper-3.9.1-bin/bin
啟動
./zkServer.sh start
停止
./zkServer.sh stop
?
配置Zookeeper為系統服務
vim /etc/systemd/system/zookeeper.service
[Unit]
Description=Apache ZooKeeper server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/develop/apache-zookeeper-3.9.1-bin/bin/zkServer.sh start
ExecStop=/usr/local/develop/apache-zookeeper-3.9.1-bin/bin/zkServer.sh stop
User=root
Group=root
Restart=on-failure
Environment="JAVA_HOME=/usr/local/develop/jdk1.8.0_191"
[Install]
WantedBy=multi-user.target
是配置生效
systemctl daemon-reload
開機自啟? 看自己實際需要
systemctl enable zookeeper.service
systemctl start zookeeper.service? ? 啟動
systemctl stop zookeeper.service? ? 停止
systemctl restart zookeeper.service? ? 重啟
systemctl status zookeeper.service? ?查看狀態
admin.serverPort=8888
指定了ZooKeeper的管理服務器端口。這個管理服務器提供了一個簡單的HTTP接口,用于獲取ZooKeeper服務的狀態和性能指標等信息。通過訪問這個端口,你可以獲取到ZooKeeper實例的各種管理信息,比如運行狀態、連接數、節點數量等。
默認情況下,ZooKeeper的管理界面并不提供一個全面的Web界面來瀏覽這些信息,而是提供了一個簡單的HTTP服務,通過發送HTTP請求到這個端口,可以獲取到JSON格式的狀態信息。
IP:8888/commands/stat
關閉Zookeeper服務
systemctl stop zookeeper.service
systemctl start zookeeper.service
Docker安裝Zookeeper
docker run -d --name zookeeper --privileged=true -p 2181:2181 ?-v /mydata/zookeeper/data:/data -v /mydata/zookeeper/conf:/conf -v /mydata/zookeeper/logs:/datalog zookeeper:3.5.7
?
后面補
創建支付模塊(生產者)
重新構建支付模塊
pom.xml
<?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>SpringCloud</artifactId><groupId>org.example</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>cloud-provider-payment8084</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.example</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: 8084spring:application:name: cloud-provider-paymentcloud:zookeeper:connect-string: xxx.xx.xxx.x:2181
啟動類
控制器
package com.exempla.pay01.controller;import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.UUID;/*** @author hrui* @date 2024/3/2 6:07*/
@RestController
@Slf4j
@RequestMapping("/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();}
}
啟動8084 注冊進Zookeeper? ?lombok找不到? 加個版本
記得Zookeeper服務器開通安全組
有可能版本沖突? 解決辦法
cd /usr/local/develop/apache-zookeeper-3.9.1-bin/bin
./zkCli.sh
ls /
ls /services
ls /services/cloud-provider-payment
ls /services/cloud-provider-payment/04bbfd46-50e0-462a-bd22-b8083cc445cf
get /services/cloud-provider-payment/04bbfd46-50e0-462a-bd22-b8083cc445cf
上面這個JSON串 就是微服務注冊相關的信息
quit
也可以
IP:8888/commands/stat?看下
訪問接口? 可以
localhost:8084/payment/zkhttp://localhost:8084/payment/zk
創建訂單模塊(消費者)
?
pom.xml
<dependencies><dependency><groupId>com.atguigu.springcloud</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>
啟動類
application.yml
server:port: 80spring:application:name: cloud-consumer-ordercloud:zookeeper:connect-string: xxx.xx.xx.x:2181
配置RestTemplate和負載均衡
控制器
啟動服務
localhost/consumer/payment/zk
關于@EnableDiscoveryClient 注解? 早期版本確實生產者和消費者啟動類要加? 后來就不需要了