SpringCloud入门(七)之Config(上)

一,概述

1.1 分布式系统面临的问题

微服务意味着要将单体应用中的业务拆分成一个个子服务,每个服务的粒度相对较小,因此系统中会出现大量的服务,由于每个服务都需要必要的配置信息才能运行,所以一套集中式的,动态的配置管理设施是必不可少的。SpringCloud提供了ConfigServer来解决这个问题。

1.2 SpringCloud Config

SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。

SpringCloud Config分为服务端和客户端两部分:

  • 服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密解密信息等访问接口。
  • 客户端是通过指定的配置中心来管理应用资源 ,以及相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。配置服务器默认采用Git来存储配置信息,这样有助于对环境配置进行版本管理,并且可以通过Git客户端工具来方便的管理和访问配置内容。

二,Config服务端与GitHub通信

2.1 GitHub创建Repository

用自己的GitHub账号在GitHub新建一个名为servicecloud-config的新repository,获取SSH协议的Git地址:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YA1Ktk2W-1583551027734)(GitHub的ssh.jpg)]

2.2 创建本地仓库

在本地硬盘目录下新建Git仓库:

E:\Workspace\Git

在目录下右键【Git Bash Here】打开命令行窗口,输入命令

git clone git@github.com:XXXX/XXXXXXX.git

将刚刚在GitHub创建的仓库复制到本地中。

2.3 本地application.yml

在本地 E:\Workspace\Git 里面新建一个application.yml

spring:
   profiles:
   active:
   - dev

---
spring:
   profiles: dev #开发环境
   application: 
      name: servicecloud-config-lmc-dev

---
spring:
   profiles: test #测试环境
   application: 
      name: servicecloud-config-lmc-test

# 必须保存为utf-8格式

然后将编码设置为utf-8。

2.4 推送文件到GitHub

将上一步创建的application.yml文件推送到GitHub上

git status

git add .

git commit -m "init file"

git push origin master
=====================不知为何,不加下面的命令就无法提交成功=======================
git remote add origin "git@github.com:XXX/servicecloud-config.git"

git pull --rebase origin master

git push -u origin master

2.5 pom.xml

新建module模块servicecloud-config-3344,它即为cloud的配置中心模块,修改pom.xml文件

<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>
  <parent>
    <groupId>com.lmc</groupId>
    <artifactId>servicecloud</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>servicecloud-config-3344</artifactId>
  
  <dependencies>
  	<!-- 自己定义的api -->
   <dependency>
     <groupId>com.lmc</groupId>
     <artifactId>servicecloud-api</artifactId>
     <version>${project.version}</version>
   </dependency>

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

   <!-- 修改后立即生效,热部署 -->
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>springloaded</artifactId>
   </dependency>
   <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-devtools</artifactId>
   </dependency>
   
   <!-- Ribbon相关 -->
   <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-ribbon</artifactId>
   </dependency>

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

   <!-- feign相关 -->
   <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-feign</artifactId>
   </dependency>
   
   <!-- config相关 -->
   <dependency>
	    <groupId>org.springframework.cloud</groupId>
	    <artifactId>spring-cloud-config-server</artifactId>
	    <version>1.2.2.RELEASE</version> 
	</dependency>
   
   <dependency>
     <groupId>org.eclipse.jgit</groupId>
     <artifactId>org.eclipse.jgit</artifactId>
     <version>4.10.0.201712302008-r</version>
   </dependency>
   
  </dependencies>
</project>

2.6 application.yml

新建配置文件application.yml:

server:
   port: 3344
   
spring:
   application:
      name: servicecloud-config
   cloud: 
      config: 
         server: 
            git: 
               uri: https://github.com/XXX/servicecloud-config.git #GitHub上面的Git仓库

注意:在URI 使用ssh的 git@github.com:XXXX/XXXXXXX.git 时,会报【Cannot clone or checkout repository】错误,具体原因未知。改成 https://github.com/XXX/servicecloud-config.git 就正常。这个坑可能因人而异,作为小菜鸡不得而知。

2.7 启动类

创建启动类,新增@EnableConfigServer注解:

package com.lmc.springcloud;

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

@SpringBootApplication
@EnableConfigServer
public class Config_3344_StartSpringCloudApp {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SpringApplication.run(Config_3344_StartSpringCloudApp.class, args);

	}

}

2.8 测试

第一步:启动3344微服务

第二步:访问 http://localhost:3344/application-dev.yml

第三步:访问 http://localhost:3344/application-test.yml

访问规则:

  1. /{application}/{profile}[/{label}]
  2. /{application}-{profile}.yml
  3. /{label}/{application}-{profile}.yml
  4. /{application}-{profile}.properties
  5. /{label}/{application}-{profile}.properties
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值