99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Spring Cloud(八)高可用的分布式配置中心 Spring Cloud Config

2019-04-17 14:01 更新

在分布式系統(tǒng)中,由于服務(wù)數(shù)量巨多,為了方便服務(wù)配置文件統(tǒng)一管理,實(shí)時(shí)更新,所以需要分布式配置中心組件。在Spring Cloud中,有分布式配置中心組件spring cloud config,它支持配置服務(wù)放在配置服務(wù)的內(nèi)存中(即本地),也支持放在遠(yuǎn)程Git倉(cāng)庫(kù)中。在spring cloud config 組件中,分兩個(gè)角色,一是config server,二是config client,業(yè)界也有些知名的同類開(kāi)源產(chǎn)品,比如百度的disconf。

相比較同類產(chǎn)品,SpringCloudConfig最大的優(yōu)勢(shì)是和Spring無(wú)縫集成,支持Spring里面EnvironmentPropertySource的接口,對(duì)于已有的Spring應(yīng)用程序的遷移成本非常低,在配置獲取的接口上是完全一致,結(jié)合SpringBoot可使你的項(xiàng)目有更加統(tǒng)一的標(biāo)準(zhǔn)(包括依賴版本和約束規(guī)范),避免了應(yīng)為集成不同開(kāi)軟件源造成的依賴版本沖突。

Spring Cloud Config 簡(jiǎn)介

SpringCloudConfig就是我們通常意義上的配置中心,把應(yīng)用原本放在本地文件的配置抽取出來(lái)放在中心服務(wù)器,從而能夠提供更好的管理、發(fā)布能力。SpringCloudConfig分服務(wù)端和客戶端,服務(wù)端負(fù)責(zé)將git svn中存儲(chǔ)的配置文件發(fā)布成REST接口,客戶端可以從服務(wù)端REST接口獲取配置。但客戶端并不能主動(dòng)感知到配置的變化,從而主動(dòng)去獲取新的配置,這需要每個(gè)客戶端通過(guò)POST方法觸發(fā)各自的/refresh。

SpringCloudBus通過(guò)一個(gè)輕量級(jí)消息代理連接分布式系統(tǒng)的節(jié)點(diǎn)。這可以用于廣播狀態(tài)更改(如配置更改)或其他管理指令。SpringCloudBus提供了通過(guò)POST方法訪問(wèn)的endpoint/bus/refresh,這個(gè)接口通常由git的鉤子功能調(diào)用,用以通知各個(gè)SpringCloudConfig的客戶端去服務(wù)端更新配置。

注意:這是工作的流程圖,實(shí)際的部署中SpringCloudBus并不是一個(gè)獨(dú)立存在的服務(wù),這里單列出來(lái)是為了能清晰的顯示出工作流程。

下圖是SpringCloudConfig結(jié)合SpringCloudBus實(shí)現(xiàn)分布式配置的工作流

SpringCloudConfig結(jié)合SpringCloudBus實(shí)現(xiàn)分布式配置的工作流

服務(wù)端配置

Config Server

新建項(xiàng)目 spring-cloud-config-server

添加依賴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

開(kāi)啟服務(wù)注冊(cè)

在程序的啟動(dòng)類 ConfigServerApplication 通過(guò) @EnableConfigServer 開(kāi)啟 SpringCloudConfig 服務(wù)端

package io.ymq.example.config.server;


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;


@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {


    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

添加配置

配置文件 application.properties

spring.application.name=config-server
server.port=8888
spring.cloud.config.label=master
spring.cloud.config.server.git.uri=https://github.com/souyunku/spring-cloud-config.git
spring.cloud.config.server.git.search-paths=spring-cloud-config


#spring.cloud.config.server.git.username=your username
#spring.cloud.config.server.git.password=your password

  • spring.cloud.config.server.git.uri:配置git倉(cāng)庫(kù)地址
  • spring.cloud.config.server.git.searchPaths:配置倉(cāng)庫(kù)路徑
  • spring.cloud.config.label:配置倉(cāng)庫(kù)的分支
  • spring.cloud.config.server.git.username:訪問(wèn)git倉(cāng)庫(kù)的用戶名
  • spring.cloud.config.server.git.password:訪問(wèn)git倉(cāng)庫(kù)的用戶密碼

Git倉(cāng)庫(kù)如果是私有倉(cāng)庫(kù)需要填寫(xiě)用戶名密碼,示例是公開(kāi)倉(cāng)庫(kù),所以不配置密碼。

遠(yuǎn)程Git倉(cāng)庫(kù)

spring-cloud-config 文件夾下有 application-dev.properties,application-test.properties 三個(gè)文件,內(nèi)容依次是:content=hello dev,content=hello test,content=hello pre

遠(yuǎn)程Git倉(cāng)庫(kù)

測(cè)試服務(wù)

啟動(dòng)程序 ConfigApplication

訪問(wèn) Spring Cloud Config Server服務(wù):

http://localhost:8888/springCloudConfig/dev/master

{
    "name": "springCloudConfig",
    "profiles": [
        "dev"
    ],
    "label": "master",
    "version": "b6fbc2f77d1ead41d5668450e2601a03195eaf16",
    "state": null,
    "propertySources": [
        {
            "name": "https://github.com/souyunku/spring-cloud-config.git/application-dev.properties",
            "source": {
                "content": "hello dev"
            }
        }
    ]
}
 

證明配置服務(wù)中心可以從遠(yuǎn)程程序獲取配置信息。

http請(qǐng)求地址和資源文件映射如下:

  • /{application}/{profile}[/{label}]
  • /{application}-{profile}.yml
  • /{label}/{application}-{profile}.yml
  • /{application}-{profile}.properties
  • /{label}/{application}-{profile}.properties

客戶端配置

Config Client

新建項(xiàng)目 spring-cloud-config-client

添加依賴

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-client</artifactId>
</dependency>


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

開(kāi)啟服務(wù)注冊(cè)

在程序的啟動(dòng)類 ConfigClientApplication 通過(guò) @Value 獲取服務(wù)端的 content 值的內(nèi)容

package io.ymq.example.config.client;


@RestController
@SpringBootApplication
public class ConfigClientApplication {


    @Value("${content}")
    String content;


    @RequestMapping("/")
    public String home() {
        return "content:" + content;
    }


    public static void main(String[] args) {
        SpringApplication.run(ConfigClientApplication.class, args);
    }
}

添加配置

配置文件 application.properties

spring.application.name=config-client
server.port=8088


spring.cloud.config.label=master
spring.cloud.config.profile=dev
spring.cloud.config.uri=http://localhost:8888/
  • spring.cloud.config.label 指明遠(yuǎn)程倉(cāng)庫(kù)的分支
  • spring.cloud.config.profile
  • dev開(kāi)發(fā)環(huán)境配置文件
  • test測(cè)試環(huán)境
  • pro正式環(huán)境
  • spring.cloud.config.uri= http://localhost:8888/ 指明配置服務(wù)中心的網(wǎng)址。

測(cè)試服務(wù)

啟動(dòng)程序 ConfigClientApplication

訪問(wèn)服務(wù):http://localhost:8088/

訪問(wèn)服務(wù)

下一篇,繼續(xù)Spring Cloud Config Server 整合 eureka, 等更多特性

源碼下載

GitHub:https://github.com/souyunku/spring-cloud-examples/tree/master/spring-cloud-config

碼云:https://gitee.com/souyunku/spring-cloud-examples/tree/master/spring-cloud-config

Contact

  • 作者:鵬磊
  • 出處:http://www.souyunku.com
  • Email:admin@souyunku.com
  • 版權(quán)歸作者所有,轉(zhuǎn)載請(qǐng)注明出處
  • Wechat:關(guān)注公眾號(hào),搜云庫(kù)技術(shù)團(tuán)隊(duì),專注于開(kāi)發(fā)技術(shù)的研究與知識(shí)分享

    關(guān)注公眾號(hào)-搜云庫(kù)

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)