最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud Config統(tǒng)一配置中心問題分析解決與客戶端動(dòng)態(tài)刷新實(shí)現(xiàn)

 更新時(shí)間:2022年10月24日 15:34:07   作者:愛吃面的貓  
springcloud config是一個(gè)解決分布式系統(tǒng)的配置管理方案。它包含了 client和server兩個(gè)部分,server端提供配置文件的存儲(chǔ)、以接口的形式將配置文件的內(nèi)容提供出去,client端通過接口獲取數(shù)據(jù)、并依據(jù)此數(shù)據(jù)初始化自己的應(yīng)用

一、問題分析及解決方案

1、問題分析

上一章我們講過遠(yuǎn)程倉儲(chǔ)統(tǒng)一管理配置信息,客戶端可以通過統(tǒng)一配置服務(wù)中心 config server 服務(wù)端獲取配置信息。現(xiàn)在我們來做一個(gè)改變,并進(jìn)行分析。

首先啟動(dòng)注冊(cè)中心、統(tǒng)一配置中心configserver服務(wù)端、訂單服務(wù)。瀏覽器訪問地址:http://localhost:9000/order/getConfig 查看效果。

然后將遠(yuǎn)程倉儲(chǔ)的訂單服務(wù)dev環(huán)境的信息進(jìn)行改變,在info上增加版本 version=01。

瀏覽器訪問地址:http://localhost:9000/order/getConfig 查看效果

重新啟動(dòng)訂單服務(wù),瀏覽器訪問地址http://localhost:9000/order/getConfig 查看效果

我們看到,遠(yuǎn)端倉儲(chǔ)的配置信息改變,如果不重新啟動(dòng)訂單服務(wù),則無法刷新遠(yuǎn)端倉儲(chǔ)的配置信息。

2、解決方案

使用動(dòng)態(tài)刷新,動(dòng)態(tài)刷新分為兩種形式,一種是手動(dòng)刷新,一種是自動(dòng)刷新。

二、手動(dòng)刷新

1、添加服務(wù)監(jiān)控

在pom文件中添加服務(wù)監(jiān)控依賴spring-boot-starter-actuator ,修改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>springcloudbase</artifactId>
        <groupId>com.hwadee.springcloud2022</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.hwadee.springcloud</groupId>
    <artifactId>orderServer9000</artifactId>
    <dependencies>
        <!-- 統(tǒng)一配置服務(wù)中心客戶端依賴 -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <!--動(dòng)態(tài)健康監(jiān)控 可以用于動(dòng)態(tài)感知配置變化-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--web依賴-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- 管理公共api -->
        <dependency>
            <groupId>com.hwadee.springcloud</groupId>
            <artifactId>springcloud-api</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <!--Eureka Client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <!-- 方便創(chuàng)建類的gettter setter -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
</project>

2、暴露服務(wù)端點(diǎn)

讓客戶端能感受到配置的更新。

暴露服務(wù)端點(diǎn),讓客戶端能感受到配置的更新,在bootstrap配置文件中修改如下:

spring:
  cloud:
    config:
      label: master # 指定分支
      name: order # 指定應(yīng)用名稱
      profile: dev # 指定激活環(huán)境
      uri: http://localhost:7009 #硬編碼 指定訪問 config server 遠(yuǎn)程倉儲(chǔ)的地址的ip和端口
      
#暴露服務(wù)端點(diǎn),讓客戶端能感受到配置的更新
management:
  endpoints:
    web:
      exposure:
        include: "*"

3、刷新業(yè)務(wù)類controller

刷新業(yè)務(wù)類controller,在訂單服務(wù)的controller上使用注解 @RefreshScope ,使用后具備刷新能力,@Refreshscope用來在不需要重啟徽服務(wù)情況下,將當(dāng)前scope域中信息刷新為最新配置信息,訂單服務(wù)的controller代碼修改如下:

import com.hwadee.springcloud.entity.Product;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/order")
@RefreshScope
public class OrderController {
    @Value("${env}")
    private String env;
    @Value("${port}")
    private String port;
    @Value("${info}")
    private String info;
    @RequestMapping(value = "/getConfig")
    public Product getConfigInfo() {
        Product product = new Product();
        product.setName(env +"環(huán)境 端口:"+ port +" "+ info);
        return product;
    }
}

4、手動(dòng)刷新

在cmd窗口進(jìn)行手動(dòng)刷新,必須是post請(qǐng)求,且地址固定:curl -X POST "http://localhost:9000/actuator/refresh"。

再次訪問:http://localhost:9000/order/getConfig

三、自動(dòng)刷新

問題:每個(gè)微服務(wù)如果需要加載最新配置信息,必須向每個(gè)微服務(wù)手動(dòng)發(fā)送post請(qǐng)求,才能加載最新配置信息。因?yàn)槲⒎?wù)一般是集群方式,所以此種方式不方便,我們可以使用一個(gè)組件Bus總線,實(shí)現(xiàn)自動(dòng)刷新。Bus總線支持RubbitMQ和kafak消息代理。

什么是總線

在微服務(wù)架構(gòu)的系統(tǒng)中,通常會(huì)使用輕量級(jí)的消息代理來構(gòu)建一個(gè)共用的消息主題,并讓系統(tǒng)中所有微服務(wù)實(shí)例都連接上來。由于該主題中產(chǎn)生的消息會(huì)被所有實(shí)例監(jiān)聽和消費(fèi),所以稱它為消息總線。在總線上的各個(gè)實(shí)例,都可以方便地廣播一些需要讓其他連接在該主題上的實(shí)例都知道的消息。

基本原理

ConfigClient實(shí)例都監(jiān)聽MQ中同一個(gè)topic(默認(rèn)是springCloudBus)。當(dāng)一個(gè)服務(wù)刷新數(shù)據(jù)的時(shí)候,它會(huì)把這個(gè)信息放入到Topic中,這樣其它監(jiān)聽同一Topic的服務(wù)就能得到通知,然后去更新自身的配置。

到此這篇關(guān)于SpringCloud Config統(tǒng)一配置中心問題分析解決與客戶端動(dòng)態(tài)刷新實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringCloud Config配置中心內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入理解Mybatis一級(jí)緩存

    深入理解Mybatis一級(jí)緩存

    客戶端向數(shù)據(jù)庫服務(wù)器發(fā)送同樣的sql查詢語句,如果每次都去訪問數(shù)據(jù)庫,會(huì)導(dǎo)致性能的降低,那么怎么提高呢?下面小編給大家分享下mybatis為我們提供了一級(jí)緩存的策略
    2016-12-12
  • Java利用ElasticSearch實(shí)現(xiàn)增刪改功能

    Java利用ElasticSearch實(shí)現(xiàn)增刪改功能

    這篇文章主要為大家詳細(xì)介紹了Java如何利用ElasticSearch實(shí)現(xiàn)增刪改功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-08-08
  • win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程

    win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程

    這篇文章主要為大家詳細(xì)介紹了win7 64位系統(tǒng)JDK安裝配置環(huán)境變量教程,感興趣的小伙伴們可以參考一下
    2016-06-06
  • IDEA 如何導(dǎo)入別人的javaweb項(xiàng)目進(jìn)行部署

    IDEA 如何導(dǎo)入別人的javaweb項(xiàng)目進(jìn)行部署

    這篇文章主要介紹了IDEA 如何導(dǎo)入別人的javaweb項(xiàng)目進(jìn)行部署,本文給大家分享我的詳細(xì)部署過程及遇到問題解決方法,需要的朋友可以參考下
    2023-03-03
  • mybatis如何使用truncate清空表

    mybatis如何使用truncate清空表

    這篇文章主要介紹了mybatis如何使用truncate清空表,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • idea springboot 修改css,jsp不重啟實(shí)現(xiàn)頁面更新的問題

    idea springboot 修改css,jsp不重啟實(shí)現(xiàn)頁面更新的問題

    這篇文章主要介紹了idea springboot 修改css,jsp不重啟實(shí)現(xiàn)頁面更新的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Spring?Security認(rèn)證器實(shí)現(xiàn)過程詳解

    Spring?Security認(rèn)證器實(shí)現(xiàn)過程詳解

    一些權(quán)限框架一般都包含認(rèn)證器和決策器,前者處理登陸驗(yàn)證,后者處理訪問資源的控制,這篇文章主要介紹了Spring?Security認(rèn)證器實(shí)現(xiàn)過程,需要的朋友可以參考下
    2022-06-06
  • IDEA的常見的設(shè)置和優(yōu)化功能圖文詳解

    IDEA的常見的設(shè)置和優(yōu)化功能圖文詳解

    這篇文章主要介紹了IDEA的常見的設(shè)置和優(yōu)化功能,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • SpringBoot @ModelAttribute使用場(chǎng)景分析

    SpringBoot @ModelAttribute使用場(chǎng)景分析

    這篇文章主要介紹了SpringBoot @ModelAttribute使用場(chǎng)景分析,文中通過實(shí)例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • 關(guān)于SpringBoot在有Ajax時(shí)候不跳轉(zhuǎn)的問題解決

    關(guān)于SpringBoot在有Ajax時(shí)候不跳轉(zhuǎn)的問題解決

    最近在使用Ajax來發(fā)送一些數(shù)據(jù)給后臺(tái)一個(gè)Controller,但是遇到些問題,所以下面這篇文章主要給大家介紹了關(guān)于SpringBoot在有Ajax時(shí)候不跳轉(zhuǎn)問題的解決辦法,需要的朋友可以參考下
    2022-05-05

最新評(píng)論

阳信县| 运城市| 区。| 墨脱县| 南安市| 洛隆县| 渭南市| 定西市| 岱山县| 阆中市| 会泽县| 临猗县| 兴安盟| 东宁县| 海盐县| 浦城县| 即墨市| 南召县| 都江堰市| 新竹市| 永嘉县| 山西省| 建水县| 游戏| 泾阳县| 万宁市| 桐梓县| 长岛县| 卫辉市| 天气| 吉水县| 正镶白旗| 平山县| 金沙县| 上饶县| 石嘴山市| 澳门| 渑池县| 兴安盟| 旌德县| 四会市|