springcloud Config 入門,帶視頻


《SpringCloud Nginx 高併發核心編程》 環境搭建 圖文教程和演示視頻:git

組件 連接地址
【必須】 虛擬機Linux 開發環境準備 windows vmware 擴展硬盤 + 共享文件
Linux openresty 安裝 Linux openresty 安裝
【必須】Linux Redis 安裝(帶視頻) Linux Redis 安裝(帶視頻)
【必須】Linux Zookeeper 安裝(帶視頻) Linux Zookeeper 安裝, 帶視頻
Windows Redis 安裝(帶視頻) Windows Redis 安裝(帶視頻)
RabbitMQ 離線安裝(帶視頻) RabbitMQ 離線安裝(帶視頻)
ElasticSearch 安裝, 帶視頻 ElasticSearch 安裝, 帶視頻
Nacos 安裝(帶視頻) Nacos 安裝(帶視頻)
【必須】Eureka Eureka 入門,帶視頻
【必須】springcloud Config 入門,帶視頻 springcloud Config 入門,帶視頻
【必須】SpringCloud 腳手架打包與啓動 SpringCloud腳手架打包與啓動

1 Config 配置中心簡介

在分佈式微服務架構系統中,因爲服務數量巨多,爲了方便服務配置文件統一管理,因此須要分佈式配置中心組件。若是各個服務的配置分散管理,則,上線以後配置的如何保持一致會是一個很頭疼的問題。
因此,各個服務的配置定然須要集中管理。SpringCloud Config 配置中心是一個比較好的解決方案。使用SpringCloud Config配置中心,涉及到兩個部分:
(1)config-server 服務端配置;
(2)config-client 客戶端配置。面試

2 config-server 服務端配置

經過SpringCloud 構建一個 config-server 服務,大體須要三步。首先,在pom.xml中引入spring-cloud-config-server 依賴,大體以下:redis

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

其次,在所建立的 SpringBoot的程序主類上,添加@EnableConfigServer註解,開啓Config Server 服務,代碼以下:spring

package com.crazymaker.cloud.center.config;

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

@SpringBootApplication
@EnableConfigServer //開啓配置服務器的支持
@EnableEurekaClient // 開啓 Eureka 客戶端的支持
public class ConfigServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

第三步,設置屬性文件的位置。SpringCloud Config 提供本地存儲配置的方式。在bootstrap啓動屬性文件中,設置屬性 spring.profiles.active=native,而且設置屬性文件所在的位置,大體以下:數據庫

server:
  port: 7788  #配置中心端口
spring:
  application:
    name: config-server   # 服務名稱
  profiles:
    active: native   # 設置讀取本地配置文件
  cloud:
    config:
      server:
        native:
          searchLocations: classpath:config/  #申明本地配置文件的存放位置

配置說明:
(1)spring.profiles.active=native,表示讀取本地配置,而不是從git讀取配置。
(2)search-locations=classpath:config/ 表示查找文件的路徑,在類路徑的config下。編程

服務端的配置規則:在配置路徑下,以 {label}/{application}-{profile}.properties 的命令規範,放置對應的配置文件。上面實例,放置瞭如下配置文件:bootstrap

/dev/crazymaker-common.yml
/dev/crazymaker-db.yml
/dev/crazymaker-redis.yml

分別對通用配置common、數據庫配置db、緩存配置的相關屬性,進行設置。Config 配置中心啓動以後,使用 http:// ${CONFIG-HOST}: ${CONFIG-PORT}/{application}/{profile}[/{label}] 的地址格式,能夠直接訪問所加載好的配置屬性。
例如,訪問示例中的 http://192.168.233.128:7788/crazymaker/redis/dev 地址,返回的配置信息以下圖所示。
在這裏插入圖片描述

特別說明

SpringCloud config-server 支持有多種配置方式,好比 Git,native,SVN 等。

雖然官方建議使用Git方式進行配置,這裏沒有重點介紹 Git方式,而是使用本地文件的方式,有三個緣由:
(1) 對於學習或者通常的開發來講,本地的文件的配置方式更簡化;
(2) 生產環境建議使用 Nacos,集成註冊中心和配置中心,更加方便和簡單;
(3) 掌握了native的配置方式以後,Git 的配置方法能舉一反三,由於思惟上是趨同的。

config-client 客戶端配置

客戶端 config-client 同 config-server 同樣,須要新增 spring-cloud-starter-eureka 的依賴用來註冊服務。而後增長 spring-cloud-starter-config 依賴 ,引入配置相關的 jar 包。

<dependencies>
  //….
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-config</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-eureka</artifactId>
	</dependency>
</dependencies>

在bootstrap.properties中,按以下規則,增長客戶端配置的映射規則:

spring.cloud.config.label:dev   #對應服務器端規則中的{label}部分。
spring.application.name:crazymaker   #對應服務器端規則中的{application}部分。
spring.cloud.config.profile:redis  #對應服務器端規則中的{profile}部分。
spring.cloud.config.uri:http://${CONFIG-HOST}:7788/     #配置中心 config-server 的獨立uri地址。

在這裏插入圖片描述

若是是和Eureka的客戶端配合使用,建議開啓配置服務的自動發現機制,則使用以下配置:

spring.cloud.config.discovery.enabled: true
spring.cloud.config.discovery.service-id: config-server

配置中心的兩種發現機制,不能同時存在,兩者選其一便可。

有關客戶端 config 屬性加載的相關配置,必須配置在 bootstrap.properties (或bootstrap.yml)中,config 部份內容才能被正確加載。緣由是:config 的相關配置會先於application.properties,而 bootstrap.properties 的加載也是先於 application.properties的。

使用環境變量確保安全

下面是本演示實例所用到的環境變量:

export DB_HOST=192.168.233.128
export REDIS_HOST=192.168.233.128
export EUREKA_ZONE_HOST=192.168.233.128
export RABBITMQ_HOST=192.168.233.128
export ZOOKEEPER_HOSTS=192.168.233.128

這些環境變量,包含 Eureka、Redis、RabbitMq 等服務器的IP地址。若是在bootstrap.yml中要對 Eureka 進行配置,能夠使用環境變量 EUREKA_ZONE_HOST ,具體以下:

eureka:
  client:
    serviceUrl:
      defaultZone: http://${EUREKA_ZONE_HOST:localhost}:7777/eureka/

上面的寫法,經過${EUREKA_ZONE_HOST} 表達式去獲取Eureka的IP地址。而且,環境變量後面跟着一個冒號和一個默認值,表示若是當前系統環境變量中 EUREKA_ZONE_HOST 爲空時,就會使用默認值 localhost 來填充了。
總之,經過環境變量的使用,使得各類服務器的主機切換,多了一層靈活性。並且,能夠作到不用明文編碼一些密碼之類的敏感信息,多了一層安全性。

部署和視頻

首先須要本地測試經過。

(1)打包:

maven 打包工具。

(2)部署:

部署到linux服務器,解壓縮,而後 start.sh 腳本啓動。

(3) 訪問

http://192.168.233.128:7788/crazymaker/redis/dev

(4) 視頻示意(具體視頻,請參見 博客園 總入口

img

具體,請關注 Java 高併發研習社羣博客園 總入口


最後,介紹一下瘋狂創客圈:瘋狂創客圈,一個Java 高併發研習社羣博客園 總入口

瘋狂創客圈,傾力推出:面試必備 + 面試必備 + 面試必備 的基礎原理+實戰 書籍 《Netty Zookeeper Redis 高併發實戰

img


瘋狂創客圈 Java 死磕系列

  • Java (Netty) 聊天程序【 億級流量】實戰 開源項目實戰
相關文章
相關標籤/搜索