springcloud Config 入門,帶視頻


瘋狂創客圈 Java 高並發【 億級流量聊天室實戰】實戰系列 【博客園總入口

架構師成長+面試必備之 高並發基礎書籍 【Netty Zookeeper Redis 高並發實戰


前言

Crazy-SpringCloud 微服務腳手架 &視頻介紹

Crazy-SpringCloud 微服務腳手架,是為 Java 微服務開發 入門者 准備的 學習和開發腳手架。並配有一系列的使用教程和視頻,大致如下:

高並發 環境搭建 圖文教程和演示視頻,陸續上線:

中間件 鏈接地址
Linux Redis 安裝(帶視頻) Linux Redis 安裝(帶視頻)
Linux Zookeeper 安裝(帶視頻) Linux Zookeeper 安裝, 帶視頻
Windows Redis 安裝(帶視頻) Windows Redis 安裝(帶視頻)
RabbitMQ 離線安裝(帶視頻) RabbitMQ 離線安裝(帶視頻)
ElasticSearch 安裝, 帶視頻 ElasticSearch 安裝, 帶視頻
Nacos 安裝(帶視頻) Nacos 安裝(帶視頻)

Crazy-SpringCloud 微服務腳手架 圖文教程和演示視頻,陸續上線:

組件 鏈接地址
Eureka Eureka 入門,帶視頻
SpringCloud Config springcloud Config 入門,帶視頻
spring security spring security 原理+實戰
Spring Session SpringSession 獨立使用
分布式 session 基礎 RedisSession (自定義)
重點: springcloud 開發腳手架 springcloud 開發腳手架
SpingSecurity + SpringSession 死磕 (寫作中) SpingSecurity + SpringSession 死磕

小視頻以及所需工具的百度網盤鏈接,請參見 瘋狂創客圈 高並發社群 博客

1 Config 配置中心簡介

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

2 config-server 服務端配置

通過SpringCloud 構建一個 config-server 服務,大致需要三步。首先,在pom.xml中引入spring-cloud-config-server 依賴,大致如下:

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

其次,在所創建的 SpringBoot的程序主類上,添加@EnableConfigServer注解,開啟Config Server 服務,代碼如下:


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 的命令規范,放置對應的配置文件。上面實例,放置了以下配置文件:

/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) 聊天程序【 億級流量】實戰 開源項目實戰


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM