91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Cloud 入門教程 - 搭建配置中心服務

發布時間:2020-06-06 00:14:33 來源:網絡 閱讀:39454 作者:zxuqian 欄目:建站服務器

簡介

Spring Cloud 提供了一個部署微服務的平臺,包括了微服務中常見的組件:配置中心服務, API網關,斷路器,服務注冊與發現,分布式追溯,OAuth3,消費者驅動合約等。我們不必先知道每個組件有什么作用,隨著教程的深入,我們會逐漸接觸到它們。一個分布式服務大體結構見下圖(圖片來自于:spring.io):

Spring Cloud 入門教程 - 搭建配置中心服務

使用Spring Cloud搭建分布式的系統十分簡單,我們只需要幾行簡單的配置就能啟動一系列的組件,然后可以在代碼中控制、使用和管理這些組件。Spring Cloud使用Spring Boot作為基礎框架,可以參考我的上一篇博客介紹如何創建一個Spring Boot項目, Spring Boot 2.0.1 入門教程。本教程將教大家如何配置服務中心服務,并通過web客戶端讀取配置。

基礎環境

  • JDK 1.8
  • Maven 3.3.9
  • IntelliJ 2018.1
  • Git

項目源碼

Gitee碼云

創建 Web Client

首先用IntelliJ創建一個Maven項目,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>

    <groupId>cn.zxuqian</groupId>
    <artifactId>web</artifactId>
    <version>1.0-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.M9</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>

</project>
  • dependencyManagement 可以為所有的依賴指定統一的版本號,這里的Spring-cloud依賴版本均為Finchley.M9,然后使用repository指定此版本的倉庫。
  • spring-cloud-starter-config提供了訪問配置中心服務的API接口。

添加控制器

新建一個控制器類 cn.zxuqian.controllers.HelloController, 并添加如下代碼:

package cn.zxuqian.controllers;

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;

@RefreshScope
@RestController
public class HelloController {

    @Value("${message: 本地消息}")
    private String message;

    @RequestMapping("/message")
    public String message() {

        return this.message;
    }

}

一個簡單的控制器,匹配/message路徑,并返回message變量的值。這里先不用管 @RefreshScope 這個注解,等下會用到時再講。@Value會取來自配置中心服務的配置項,或本地環境變量等等,此處取了配置中心的message的值,并給了它一個默認值"本地消息",即如果遠程配置中心不可用時,此變量將會用默認值初始化。

添加配置文件

bootstrap.xml

我們需要在web客戶端項目完全啟動之前去加載配置中心的配置項,所以需要在src/main/resources下創建bootstrap.yml文件,然后指定此客戶端的名字和遠程配置中心的uri:

spring:
  application:
    name: web-client
  cloud:
    config:
      uri: http://localhost:8888

yml相比properties文件更加簡潔,不用寫很多重復的前綴,上邊的內容可以轉換為對應的properties:

spring.application.name=web-client
spring.cloud.config.uri=http://localhost:8888
  • spring.application.name指定了此項目的名字,用來取配置中心相同文件名的配置文件,即配置中心應有一文件名為web-client.yml的配置文件。
  • spring.cloud.config.uri指定了遠程配置中心服務的uri地址,默認為http://localhost:8888

創建配置中心項目

新建一個Maven項目,使用如下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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.zxuqian</groupId>
    <artifactId>config-server</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>jar</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
    </properties>

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Finchley.M9</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/libs-milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
</project>

spring-cloud-config-server即為配置中心服務的核心依賴。

配置Application

新建一個Java類cn.zxuqian.Application,添加如下代碼:

package cn.zxuqian;

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

@EnableConfigServer
@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
  • 使用@EnableConfigServer這一條注解即可把該Maven項目作為配置中心服務啟動。

新建Git倉庫

配置中心的文件都是基于版本控制的,所以需要在本地新建一個git倉庫來保存配置文件。或者也可用公共遠程git倉庫,github, 碼云等。在任意位置(如項目的上級目錄)創建一空白文件夾,這里叫做config,可以使用任何名字。然后進入此文件夾下,運行

$ git init

來初始化git倉庫,然后新建一個文件,名為web-client.yml,并添加如下內容:

message: 此條消息來自于cofig server

注意此文件名需要和之前在web項目中配置的spring.application.name保持一致。這個文件的內容就是web客戶端要獲取的message的值。創建完成之后,運行如下git命令提交到本地倉庫:

$ git add web-client.yml
$ git commit -m "added web-client.yml"

配置git倉庫位置

我們需要為配置中心指定上述創建的git倉庫地址。在src/main/resources下創建applicaiton.yml文件,提供如下內容:

server:
  port: 8888
spring:
  cloud:
    config:
      server:
        git:
          uri: ${HOME}/development/codes/backend/gitee/config

此文件指定了配置中心服務的端口號,和保存配置文件的git倉庫目錄,如果是遠程倉庫,可以直接指定url地址。到此,配置中心服務創建完成。

測試

首先啟動配置中心服務,使用spring-boot maven插件:spring-boot:run。啟動成功后再啟動web客戶端,訪問http://localhost:8080/message,如果看到此條消息來自于cofig server即配置成功。然后關閉配置中心服務,再重啟web客戶端,訪問http://localhost:8080/message,我們就會看到本地消息

動態更新配置

那么每次配置更新后都要重啟是不是很麻煩?Spring boot提供了spring-boot-starter-actuator組件,用來進行生產環境的維護,如檢查健康信息等。還記得上面HelloController@RefreshScope注解嗎?使用它我們可以動態的加載配置中心修改后的配置。然后我們還需要在配置中心的web-client.yml添加如下內容用以暴露acurator的/refresh終端api。

message: 此條消息來自于cofig server

management:
  endpoints:
    web:
      exposure:
        include: "*"

更新完成后提交的git倉庫,然后重啟配置中心服務和web客戶端。修改message為

message: 更新:此條消息來自于cofig server

然后發送一個空的post請求到/refresh

$ curl http://localhost:8080/actuator/refresh -d {} -H "Content-Type: application/json"

之后刷新頁面,即可看到更新后的消息。

總結

現在我們搭建好了一個配置中心服務,它是根據每個組件的spring.application.name來決定讀取哪個配置文件,然后我們用了acurator的/refreshapi在運行時刷新配置項。另外配置項都是基于版本控制的,可以方便的進行還原和更新。通過這個教程可以看到Spring Cloud的各組件的配置相當簡單,基本就只用一條注解就可以創建一個完整的服務組件。

歡迎訪問我的博客原文:Spring Cloud 入門教程 - 搭建配置中心服務

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平乐县| 霞浦县| 陕西省| 滦南县| 曲沃县| 利辛县| 黄骅市| 金昌市| 富锦市| 定兴县| 封开县| 沽源县| 固镇县| 特克斯县| 中方县| 河曲县| 和顺县| 美姑县| 辽阳县| 东平县| 南华县| 德清县| 怀化市| 普洱| 青铜峡市| 亳州市| 仙居县| 交城县| 榆社县| 正宁县| 伊宁县| 揭东县| 松溪县| 洮南市| 贡山| 榕江县| 乐山市| 江陵县| 肇源县| 柯坪县| 扶沟县|