介紹基于Zookeeper的SpringCloud服務注冊中心搭建,此種注冊中心實作方式,實際使用不多,這里只作為備忘參考
關于本篇文章所屬父專案前文已經介紹,這里不再贅述
- 上篇文章地址:https://www.cnblogs.com/spzmmd/p/14627523.html
- SpringCloud教程合集: https://www.cnblogs.com/spzmmd/tag/微服務教程/
- 案例專案地址: https://gitee.com/spzmmd/spring-cloud-demo
安裝Zookeeper服務
Vmware安裝CentOS7
建議zookeeper安裝到Linux系統,本地可使用虛擬機代替,虛擬機安裝CentOS7可于此文查看: VMware 安裝 CentOS 7,安裝好虛擬機后,假設虛擬機ip為192.168.115.50(宿主機可以ping通虛擬機),且建立了用戶app,
CentOS7里安裝Zookeeper3.4.9(需要Java環境)
- 下載地址
- 下載后上傳到CentOS7,解壓到/home/app/soft目錄下
- 進入目錄/home/app/soft/zookeeper-3.4.9/conf
- 將zoo_sample.cfg檔案復制一份并重命名為zoo.cfg
- 進入目錄/home/app/soft/zookeeper-3.4.9/bin,執行下方命令來啟動zookeeper服務
# 啟動服務 2181埠
sh zkServer.sh start
# 檢查是否啟動成功
sh zkServer.sh status
- 至此,宿主機應該可以在192.168.115.50:2181訪問到zookeeper
集群
關于zookeeper集群,網上有很多教程,這里不贅述
服務提供者模塊(ms-provider-zookeeper)
模塊搭建
基于Zookeeper的服務提供者模塊搭建方法與基于Eureka客戶端的搭建方法類似,區別是基于Eureka客戶端服務提供者需要在啟動類宣告@EnableEurekaClient,基于zookeeper的不需要;并且兩者依賴有些不同
- 在根專案pom.xml的modules標簽下加入模塊 ms-provider-zookeeper
- 在專案根目錄建立 ms-provider-zookeeper 目錄,并在ms-provider-zookeeper目錄下建立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">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.spz.demo</groupId>
<artifactId>spring-cloud-demo</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>ms-provider-zookeeper</artifactId>
<packaging>jar</packaging>
<description>服務提供者模塊 - 使用zookeeper注冊中心</description>
<dependencies>
<!-- Zookeeper注冊中心 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- Zookeeper 3.4.9 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.9</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- sleuth zipkin 服務追蹤 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.spz.demo</groupId>
<artifactId>api-common</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
</project>
- 建立src/main/java和src/main/resources目錄
- 在src/main/java目錄下建立包com.spz.demo.scloud.provider.zk
- 在zk包下建立SpringBoot啟動類 ProviderZookeeperApp.java
package com.spz.demo.scloud.provider.zk;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
/**
* 啟動類
* @author spzmmd
* @createTime 2021/04/08
*/
@EnableDiscoveryClient
@SpringBootApplication
public class ProviderZookeeperApp {
public static void main(String[] args) {
SpringApplication.run(ProviderZookeeperApp.class, args);
}
}
- AppServiceImpl類和IndexController類與前文基于Eureka客戶端的服務提供者相關代碼相同,請查看前文,不同的是com.spz.demo.scloud.provider.zk.service.AppServiceImpl#instanceNameAndPort方法回傳值里可以添加一句": (基于Zookeeper注冊中心)"來便于測驗
- 在src/main/resources目錄下建立application.properties檔案
server.port=8001
spring.application.name=MS-PROVIDER-ZOOKEEPER
spring.cloud.zookeeper.connect-string=192.168.115.50:2181
集群部署
與前文基于Eureka客戶端的服務提供者部署方法一致,修改idea啟動配置,設定vm options,加入下列配置即可
-Dserver.port=8001
服務消費者模塊(ms-consumer-zookeeper)
消費者模塊搭建方法與前文類似,這里不再贅述,請參考案例專案里的ms-consumer-zookeeper模塊,啟動ms-provider-zookeeper多節點以及ms-consumer-zookeeper單節點,不斷訪問下方鏈接:
http://localhost:7001/discovery/zookeeper/appService/projectInfo
將交替出現8001、8002兩個服務提供者埠,證明服務均已成功注冊進zookeeper
{
"code": 2000,
"message": "MS-PROVIDER-ZOOKEEPER:8002: (基于Zookeeper注冊中心)",
"data": null
}
{
"code": 2000,
"message": "MS-PROVIDER-ZOOKEEPER:8001: (基于Zookeeper注冊中心)",
"data": null
}
交流&聯系
-
QQ群
歡迎加入Java交流群(qq群號: 776241689 ) -
歡迎關注公眾號"后端技術學習分享"獲取更多技術文章!
PS:小到Java后端技術、計算機基礎知識,大到微服務、Service Mesh、大資料等,都是本人研究的方向,我將定期在公眾號中分享技術干貨,希望以我一己之力,拋磚引玉,幫助朋友們提升技術能力,共同進步!
-
博客
- 掘金
- CSDN
- 博客園
原創不易,轉載請在開頭著名文章來源和作者,如果我的文章對您有幫助,請點贊/收藏/關注鼓勵支持一下吧??????
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/274983.html
標籤:其他
上一篇:【C++】 C++知識點總結
