Cloud整合Zookeeper代替Eureka

微服務間通信重構與服務治理筆記-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/zkicon-default.png?t=N7T8http://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 注解? 早期版本確實生產者和消費者啟動類要加? 后來就不需要了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/716141.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/716141.shtml
英文地址,請注明出處:http://en.pswp.cn/news/716141.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

uniapp 獲取頁面來源

獲取當前頁面棧的實例&#xff0c;以數組形式按棧的順序給出&#xff0c;數組中的元素為頁面實例&#xff0c;第一個元素為首頁&#xff0c;最后一個元素為當前頁面。 let pages getCurrentPages(); if (pages.length > 1) { // 若頁面棧長度大于1則表示不止一個頁面被打開…

在 JavaScript 中用 var, let, 以及 const 有什么差別?什么時候該用哪個?

「在 JavaScript 中用 var, let, 以及 const 有什么差別?」是在前端、JavaScript 面試中常見的考題。在面試時可以先大方向地列點說出異同之處,然后再針對每一個點進行深入說明。以下是以第一人稱撰寫的參考擬答。 var, let, 以及 const 都是在 JavaScript 用來做變數宣告的…

前端導入導出

1、將后端excel二進制文件導出excel下載 import { read, utils, writeFileXLSX } from "xlsx";const useExportExcel (excelData: string, fileName: string) > {const wb read(excelData);const ws wb.Sheets[wb.SheetNames[0]];// 從工作表生成數據行const …

Android 將圖片網址url轉化為bitmap

1. 圖片網址url轉化為bitmap 1.1. 方法一 通過 HttpURLConnection 請求 要使用一個線程去訪問&#xff0c;因為是網絡請求&#xff0c;這是一個一步請求&#xff0c;不能直接返回獲取&#xff0c;要不然永遠為null&#xff0c;在這里得到BitMap之后記得使用Hanlder或者EventBu…

React之useState hook

實現useState js實現一個useState&#xff0c;簡單的原理就是賦值然后更新渲染&#xff0c;大概偽代碼如下&#xff1a; function useState(initValue) {let value initValue;function setValue(v) {if (typeof v "function") {value v(initValue);} else {value…

StarRocks實戰——首汽約車實時數倉實踐

目錄 前言 一、引入背景 二、OLAP引擎選型 三、架構演進 四、實時數倉構建 五、業務實踐價值未來規劃 原文大佬的這篇首汽約車實時數倉實踐有借鑒意義&#xff0c;這里摘抄下來用作學習和知識沉淀。 前言 首汽約車&#xff08;以下簡稱“首約”&#xff09;是首汽集團打造…

物體檢測-系列教程20:YOLOV5 源碼解析10 (Model類前向傳播、forward_once函數、_initialize_biases函數)

&#x1f60e;&#x1f60e;&#x1f60e;物體檢測-系列教程 總目錄 有任何問題歡迎在下面留言 本篇文章的代碼運行界面均在Pycharm中進行 本篇文章配套的代碼資源已經上傳 點我下載源碼 14、Model類 14.2 前向傳播 def forward(self, x, augmentFalse, profileFalse):if augm…

MySQL 8.0 架構 之錯誤日志文件(Error Log)(2)

文章目錄 MySQL 8.0 架構 之錯誤日志文件&#xff08;Error Log&#xff09;&#xff08;2&#xff09;MySQL錯誤日志文件&#xff08;Error Log&#xff09;錯誤日志相關參數log_errorlog_error_services過濾器&#xff08;Filter Error Log Components&#xff09;寫入/接收器…

Vue+SpringBoot打造大學計算機課程管理平臺

目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、功能模塊2.1 實驗課程檔案模塊2.2 實驗資源模塊2.3 學生實驗模塊 三、系統設計3.1 用例設計3.2 數據庫設計3.2.1 實驗課程檔案表3.2.2 實驗資源表3.2.3 學生實驗表 四、系統展示五、核心代碼5.1 一鍵生成實驗5.2 提交實驗5.3 批閱實…

131. 分割回文串(力扣LeetCode)

文章目錄 131. 分割回文串題目描述回溯代碼 131. 分割回文串 題目描述 給你一個字符串 s&#xff0c;請你將 s 分割成一些子串&#xff0c;使每個子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正著讀和反著讀都一樣的字符串。 示例 1&#xff1a; 輸入&#xf…

Android 架構MVI、MVVM、MVC、MVP

目錄 一、MVC&#xff08;Model-View-Controller&#xff09; 二、 MVP&#xff08;Model-View-Presenter&#xff09; 三. MVVM&#xff08;Model-View-ViewModel&#xff09; 四. MVI&#xff08;Model-View-Intent&#xff09; 五.MVI簡單實現 先簡單了解一下MVC、MVP和…

索引使用規則6——單列索引聯合索引

1、單列索引 單列索引&#xff1a;即一個索引只包含單個列 舉個例子 1.1、給phone和那么建立索引 create index index_name on tb_qianzhui(name); create index index_phone on tb_qianzhui(phone);1.2、查詢發現可能的索引有好幾個&#xff0c;但是最終選擇了phone的索引…

軟考 系統分析師系列知識點之詳細調查(2)

接前一篇文章&#xff1a;軟考 系統分析師系列知識點之詳細調查&#xff08;1&#xff09; 所屬章節&#xff1a; 第10章. 系統分析 第2節. 詳細調查 在系統規劃階段&#xff0c;通過初步調查&#xff0c;系統分析師已經對企業的組織結構、系統功能等有了大致的了解。但是&…

蘿卜大雜燴 | 提高數據科學工作效率的 8 個 Python 庫

本文來源公眾號“蘿卜大雜燴”&#xff0c;僅用于學術分享&#xff0c;侵權刪&#xff0c;干貨滿滿。 原文鏈接&#xff1a;提高數據科學工作效率的 8 個 Python 庫 在進行數據科學時&#xff0c;可能會浪費大量時間編碼并等待計算機運行某些東西。所以我選擇了一些 Python 庫…

Vue3中的Hooks詳解

vue3帶來了Composition API&#xff0c;其中Hooks是其重要組成部分。之前我寫過一篇關于vue3 hooks的文章比較簡單 Vue3從入門到刪庫 第十一章&#xff08;自定義hooks&#xff09; 所以本文將深入探討Vue3中Hooks&#xff0c;幫助你在Vue3開發中更加得心應手。 一、Vue3 Hoo…

貪吃蛇(C語言)步驟講解

一&#xff1a;文章大概 使用C語言在windows環境的控制臺中模擬實現經典小游戲 實現基本功能&#xff1a; 1.貪吃蛇地圖繪制 2.蛇吃食物的功能&#xff08;上&#xff0c;下&#xff0c;左&#xff0c;右方向控制蛇的動作&#xff09; 3.蛇撞墻死亡 4.計算得分 5.蛇身加…

[C語言]——C語言常見概念(1)

目錄 一.C語言是什么、 二.C語言的歷史和輝煌 三.編譯器的選擇&#xff08;VS2022為例&#xff09; 1.編譯和鏈接 2.編譯器的對比 3.VS2022 的優缺點 四.VS項目和源文件、頭文件介紹 五.第?個C語言程序 ??????? 一.C語言是什么、 ?和?交流使?的是?然語?&…

【python】爬取鏈家二手房數據做數據分析【附源碼】

一、前言、 在數據分析和挖掘領域中&#xff0c;網絡爬蟲是一種常見的工具&#xff0c;用于從網頁上收集數據。本文將介紹如何使用 Python 編寫簡單的網絡爬蟲程序&#xff0c;從鏈家網上海二手房頁面獲取房屋信息&#xff0c;并將數據保存到 Excel 文件中。 二、效果圖&#…

【JS】解構賦值注意點,解構賦值報錯

報錯代碼 const 小明 { email: 6, pwd: 66 } const 小剛 { email: 9, pwd: 99 }const { email } 小明 const { email } 小剛 報錯圖 原因 2個常量重復&#xff0c;重復在同一個作用域內是不能重復的&#xff0c;例如大括號內{const a 1; const a 2} 小伙伴A提問 問&…

Redis-基礎篇

Redis是一個開源、高性能、內存鍵值存儲數據庫&#xff0c;由 Salvatore Sanfilippo&#xff08;網名antirez&#xff09;創建&#xff0c;并在BSD許可下發布。它不僅可以用作緩存系統來加速數據訪問&#xff0c;還可以作為持久化的主數據存儲系統或消息中間件使用。Redis因其數…