欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringCloud集成zookeeper實(shí)現(xiàn)服務(wù)注冊(cè)并訪問(wèn)功能

 更新時(shí)間:2022年06月28日 09:25:57   作者:啊陳曉  
zookeeper和eureka一樣,是用于充當(dāng)服務(wù)注冊(cè)功能服務(wù)器的一個(gè)springcloud插件,這篇文章主要介紹了SpringCloud集成zookeeper實(shí)現(xiàn)服務(wù)注冊(cè)并訪問(wèn),需要的朋友可以參考下

SpringCloud整合zookeeper實(shí)現(xiàn)服務(wù)注冊(cè)

前言:

zookeeper是一個(gè)分布式協(xié)調(diào)工具,可以實(shí)現(xiàn)注冊(cè)中心功能。換而言之,zookeeper和eureka一樣,是用于充當(dāng)服務(wù)注冊(cè)功能服務(wù)器的一個(gè)springcloud插件。而隨著eureka停止更新,zookeeper也成為了市面大量使用的替代eureka的一門(mén)技術(shù),為分布式項(xiàng)目實(shí)現(xiàn)注冊(cè)中心的功能。

一.環(huán)境準(zhǔn)備

1.linux環(huán)境下的zookeeper環(huán)境

如果還未配置zookeeper環(huán)境的同學(xué)可以移步我的另外一篇文章喔,那里對(duì)如何在Linux環(huán)境下安裝zookeeper有著很詳細(xì)的介紹~

linux上安裝zookeeper 啟動(dòng)和關(guān)閉的教程

2.一個(gè)簡(jiǎn)單的springcloud父項(xiàng)目環(huán)境

在cloud2022項(xiàng)目中的pom.xml導(dǎo)入springcloud依賴和一些常規(guī)依賴

<?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>
 
    <groupId>com.canrioyuan</groupId>
    <artifactId>cloud2022</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    <!--父工程的打包方式必須為pom:表示父工程不寫(xiě)代碼,只在父工程的pom.xml文件中使用配置版本,
        子工程的打包方式才是war:發(fā)布在服務(wù)器上的工程,如網(wǎng)站或者是服務(wù),maven會(huì)自動(dòng)幫助我們指明這個(gè)工程為web工程
                        jar:默認(rèn)打程jar工程,相當(dāng)于打包-->
 
    <modules>
        <module>cloud-provider-payment8001</module>
        <module>cloud-consumer-order80</module>
        <module>cloud-api-commons</module>
        <module>cloud-eureka-server7001</module>
        <module>cloud-eureka-server7002</module>
        <module>cloud-provider-payment8002</module>
        <module>cloud-provider-payment8004</module>
    </modules>
 
    <!-- 統(tǒng)一管理jar包版本 -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <junit.version>4.12</junit.version>
        <log4j.version>1.2.17</log4j.version>
        <lombok.version>1.18.24</lombok.version>
        <mysql.version>8.0.21</mysql.version>
        <druid.version>1.1.21</druid.version>
        <mybatis-plus.spring.boot.version>3.5.1</mybatis-plus.spring.boot.version>
    </properties>
 
    <!-- 子模塊繼承之后,提供作用:鎖定版本+子module不用寫(xiě)groupId和version  -->
    <dependencyManagement>
        <!--只是聲明依賴,并不實(shí)現(xiàn)引入-->
        <dependencies>
            <!--spring boot 2.2.2-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.2.2.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud Hoxton.SR1-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR1</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud alibaba 2.1.0.RELEASE-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>2.1.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybatis-plus.spring.boot.version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
                <optional>true</optional>
            </dependency>
 
        </dependencies>
    </dependencyManagement>
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                    <addResources>true</addResources>
                </configuration>
            </plugin>
        </plugins>
    </build>
 
</project>

二.編寫(xiě)服務(wù)提供者模塊

1.在cloud2022下創(chuàng)建一個(gè)cloud-provider-payment8004作為服務(wù)提供者

2.在pom.xml文件中添加常規(guī)依賴和zookeeper、springboot整合zookeeper客戶端等依賴

        <!-- SpringBoot整合Web組件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- SpringBoot整合zookeeper客戶端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <!--除去自帶的zookeeper依賴-->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
 
        <!--導(dǎo)入符合安裝版本的zookeeper依賴-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

3.編寫(xiě)application.yaml

#8004表示注冊(cè)到zookeeper服務(wù)器的支付服務(wù)提供者端口號(hào)
server:
  port: 8004
#服務(wù)別名----注冊(cè)zookeeper到注冊(cè)中心名稱
spring:
  application:
    name: cloud-provider-payment
    #連接zookeeper
  cloud:
    zookeeper:
      connect-string: 192.168.154.133:2181  #此處為對(duì)應(yīng)的zookeeper客戶端地址

4.編寫(xiě)主啟動(dòng)類PaymentMain8004

package com.canrioyuan;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
 
@SpringBootApplication
@EnableDiscoveryClient   //該注解用于向使用consul或者zookeeper作為注冊(cè)中心時(shí)注冊(cè)服務(wù)
public class PaymentMain8004 {
 
    public  static void main(String[] args){
        SpringApplication.run(PaymentMain8004.class,args);
    }
}

5.編寫(xiě)PaymentController

package com.canrioyuan.controller;
 
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
import java.util.UUID;
 
@RestController
@Slf4j
public class PaymentController {
    
    //獲取配置文件中端口對(duì)應(yīng)的值
    @Value("${server.port}")
    private String serverPort;
 
    @RequestMapping(value = "/payment/zk")
    public String paymentzk()
    {
        return "springcloud with zookeeper: "+serverPort+"\t"+ UUID.randomUUID().toString();
    }
 
}

三.測(cè)試服務(wù)提供者模塊是否搭建成功

1.運(yùn)行zookeeper的客戶端

進(jìn)入zookeeper安裝目錄下的bin目錄,啟動(dòng)zookeeper服務(wù)器

[root@zookeeper1 bin]# ./zkServer.sh start

啟動(dòng)zookeeper客戶端

[root@zookeeper1 bin]# zkCli.sh

啟動(dòng)成功

可以看到,此時(shí)zookeeper中的節(jié)點(diǎn)只有l(wèi)ocks和zookeeper:

2.運(yùn)行PaymentMain8004

運(yùn)行成功后如下圖所示:

3.查看zookeeper中的節(jié)點(diǎn)

我們?cè)僖淮尾榭磟ookeeper下的節(jié)點(diǎn),可以看到services已經(jīng)被注冊(cè)且services下的節(jié)點(diǎn)即為我們application.yaml為該模塊配置的名字

4.訪問(wèn)http://localhost:8004/payment/zk

出現(xiàn)如下字符串則證明搭建成功

四.編寫(xiě)服務(wù)消費(fèi)者模塊

1.在cloud2022下創(chuàng)建一個(gè)cloud-consumerzk-order80作為服務(wù)消費(fèi)者

2.在pom.xml文件中添加常規(guī)依賴和zookeeper、springboot整合zookeeper客戶端等依賴

 <dependencies>
        <!-- SpringBoot整合Web組件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- SpringBoot整合zookeeper客戶端 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
            <!--先排除自帶的zookeeper-->
            <exclusions>
                <exclusion>
                    <groupId>org.apache.zookeeper</groupId>
                    <artifactId>zookeeper</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--添加zookeeper3.4.9版本-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.7.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

3.編寫(xiě)application.yaml

server:
  port: 80
 
spring:
  application:
    name: cloud-consumer-order
  cloud:
    #注冊(cè)到zookeeper地址
    zookeeper:
      connect-string: 192.168.154.133:2181   #zookeeper環(huán)境所在的Ip地址

4.編寫(xiě)主啟動(dòng)類PaymentMain8004

package com.canrioyuan;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
 
@SpringBootApplication
public class OrderZk80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderZk80.class,args);
    }
}

5.編寫(xiě)配置類ApplicationContextConfig(用于注冊(cè)RestTemplate)

package com.canrioyuan.controller;
 
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
 
@Configuration
public class ApplicationContextConfig {
    /**
     * RestTemplate是Spring提供的用于訪問(wèn)Rest服務(wù)的客戶端,
     * 它提供了很多可以方便訪問(wèn)遠(yuǎn)程http服務(wù)的方法,這些方法可以幫助開(kāi)發(fā)人員減少編寫(xiě)客戶端代碼的工作量。
     * @return
     */
    @Bean  //將RestTemplate注冊(cè)到容器中
    /**
     * @LoadBalanced注解,我們?cè)谑褂眠@個(gè)注解后,就能在調(diào)用其他微服務(wù)的時(shí)候,通過(guò)服務(wù)實(shí)例名稱就能進(jìn)行調(diào)用其他的微服務(wù),
     * 而不是直接把要調(diào)用的微服務(wù)的ip和端口號(hào)寫(xiě)死在代碼當(dāng)中。
     */
    @LoadBalanced
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

6.編寫(xiě)OrderController

package com.canrioyuan.controller;
 
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
 
import javax.annotation.Resource;
 
@RestController
public class OrderZkController {
    //聲明固定的服務(wù)訪問(wèn)前綴
    public static final String INVOKE_URL ="http://cloud-provider-payment";
    //注入容器中注冊(cè)的RestTemplate
    @Resource
    private RestTemplate restTemplate;
 
    @GetMapping(value="/consumer/payment/zk")
    public String PaymentInfo(){
        String result = restTemplate.getForObject(INVOKE_URL+"/payment/zk", String.class);
        System.out.println("消費(fèi)者調(diào)用支付服務(wù)_result:"+result);
        return result;
    }
}

五.測(cè)試服務(wù)消費(fèi)者模塊是否搭建成功

1.啟動(dòng)該服務(wù)消費(fèi)者模塊

2.訪問(wèn)http://localhost/consumer/payment/zk

結(jié)果如下則搭建成功

至此,我們SpringCloud集成zookeeper實(shí)現(xiàn)服務(wù)注冊(cè)的教程就結(jié)束啦~

到此這篇關(guān)于SpringCloud集成zookeeper實(shí)現(xiàn)服務(wù)注冊(cè)并訪問(wèn)功能的文章就介紹到這了,更多相關(guān)SpringCloud集成zookeeper內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決SpringBoot整合RocketMQ遇到的坑

    解決SpringBoot整合RocketMQ遇到的坑

    這篇文章主要介紹了解決SpringBoot整合RocketMQ遇到的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • spring cloud gateway如何獲取請(qǐng)求的真實(shí)地址

    spring cloud gateway如何獲取請(qǐng)求的真實(shí)地址

    這篇文章主要介紹了spring cloud gateway如何獲取請(qǐng)求的真實(shí)地址問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Spring Boot 會(huì)員管理系統(tǒng)之處理文件上傳功能

    Spring Boot 會(huì)員管理系統(tǒng)之處理文件上傳功能

    Spring Boot會(huì)員管理系統(tǒng)的中,需要涉及到Spring框架,SpringMVC框架,Hibernate框架,thymeleaf模板引擎。這篇文章主要介紹了Spring Boot會(huì)員管理系統(tǒng)之處理文件上傳功能,需要的朋友可以參考下
    2018-03-03
  • 微服務(wù)領(lǐng)域Spring Boot自動(dòng)伸縮的實(shí)現(xiàn)方法

    微服務(wù)領(lǐng)域Spring Boot自動(dòng)伸縮的實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于微服務(wù)領(lǐng)域Spring Boot自動(dòng)伸縮的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • Springboot創(chuàng)建項(xiàng)目的圖文教程(idea版本)

    Springboot創(chuàng)建項(xiàng)目的圖文教程(idea版本)

    這篇文章主要介紹了Springboot創(chuàng)建項(xiàng)目的圖文教程(idea版本),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java方法重載的使用實(shí)戰(zhàn)案例

    Java方法重載的使用實(shí)戰(zhàn)案例

    這篇文章主要介紹了Java方法重載的使用,結(jié)合具體實(shí)例形式分析了java方法重載的基本使用技巧與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-09-09
  • 解決SpringBoot整合ElasticSearch遇到的連接問(wèn)題

    解決SpringBoot整合ElasticSearch遇到的連接問(wèn)題

    這篇文章主要介紹了解決SpringBoot整合ElasticSearch遇到的連接問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • 淺談java 中equals和==的區(qū)別

    淺談java 中equals和==的區(qū)別

    這篇文章主要介紹了java 中equals和==的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • SpringBoot之自定義Filter獲取請(qǐng)求參數(shù)與響應(yīng)結(jié)果案例詳解

    SpringBoot之自定義Filter獲取請(qǐng)求參數(shù)與響應(yīng)結(jié)果案例詳解

    這篇文章主要介紹了SpringBoot之自定義Filter獲取請(qǐng)求參數(shù)與響應(yīng)結(jié)果案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • 詳解Spring注解@Validated 失效分析

    詳解Spring注解@Validated 失效分析

    這篇文章主要介紹了Spring注解@Validated失效分析,文中有詳細(xì)代碼示例講解了@Validated為何失效,需要的小伙伴可以參考一下
    2023-04-04

最新評(píng)論