springcloud Config 入门,带视频

疯狂创客圈 Java 高并发【 亿级流量聊天室实战】实战系列 【博客园总入口

架构师成长+面试必备之 高并发基础书籍 【Netty Zookeeper Redis 高并发实战


疯狂创客圈 高并发 环境 视频,陆续上线:

  • Windows Redis 安装(带视频)
  • Linux Redis 安装(带视频)
  • Windows Zookeeper 安装(带视频)
  • Linux Zookeeper 安装(带视频)
  • RabbitMQ 离线安装(带视频)
  • Nacos 安装(带视频)
  • ElasticSearch 安装, 带视频**

小视频以及所需工具的百度网盘链接,请参见 疯狂创客圈 高并发社群 博客

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.springcloud.cloud.center.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
//在启动类中添加注解@EnableEurekaServer
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.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地址。

在这里插入图片描述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lv6Shwof-1576380501573)(file:///C:/Users/wuqinglin/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg)]

如果是和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 来填充了。
总之,通过环境变量的使用,使得各种服务器的主机切换,多了一层灵活性。而且,可以做到不用明文编码一些密码之类的敏感信息,多了一层安全性。

8. 部署和视频

(1)打包:

maven 打包工具。

(2)部署:

部署到linux服务器,解压缩,然后 start.sh 脚本启动。

(3) 访问

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

制作中.......

具体,请关注 Java 高并发研习社群博客园 总入口


最后,介绍一下疯狂创客圈:疯狂创客圈,一个Java 高并发研习社群博客园 总入口

疯狂创客圈,倾力推出:面试必备 + 面试必备 + 面试必备 的基础原理+实战 书籍 《Netty Zookeeper Redis 高并发实战

img


疯狂创客圈 Java 死磕系列

  • Java (Netty) 聊天程序【 亿级流量】实战 开源项目实战

  • Netty 源码、原理、JAVA NIO 原理
  • Java 面试题 一网打尽
  • 疯狂创客圈 【 博客园 总入口 】

猜你喜欢

转载自www.cnblogs.com/crazymakercircle/p/12043604.html