SpringCloud入门(七)之Config(上)

导读:本篇文章讲解 SpringCloud入门(七)之Config(上),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一,概述

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/81637.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!