springboot整合Nacos多环境以及项目配置文件动态读取
Nacos介绍
参考链接
Nacos官网
CentOS环境下安装Nacos
Nacos Config 多环境的配置
Nacos 有四大主要功能:
-
服务发现和服务健康监测
Nacos 支持基于 DNS 和基于 RPC 的服务发现。服务提供者使用 原生SDK、OpenAPI、或一个独立的Agent TODO注册 Service 后,服务消费者可以使用DNS TODO 或HTTP&API查找和发现服务。
Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。Nacos 还提供了统一的健康检查仪表盘,帮助您根据健康状态管理服务的可用性及流量。 -
动态配置服务
动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
Nacos 提供了一个简洁易用的UI (控制台样例 Demo) 帮助您管理所有的服务和应用的配置。Nacos 还提供包括配置版本跟踪、金丝雀发布、一键回滚配置以及客户端配置更新状态跟踪在内的一系列开箱即用的配置管理特性,帮助您更安全地在生产环境中管理配置变更和降低配置变更带来的风险。 -
动态 DNS 服务
动态 DNS 服务支持权重路由,让您更容易地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以 DNS 协议为基础的服务发现,以帮助您消除耦合到厂商私有服务发现 API 上的风险。
Nacos 提供了一些简单的 DNS APIs TODO 帮助您管理服务的关联域名和可用的 IP:PORT 列表. -
服务及其元数据管理
Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。
Nacos端添加配置文件
访问地址添加配置:http://localhost:8848/nacos
- system-config.yaml
data:
imagePrefix: http://localhost:8686/file/all/avatar/
oneSize: 200
totalSize: 50
-
cloud-platform-dev.yaml
spring:
data:
mongodb: #MongoDB相关配置
uri: ******
-
cloud-platform-pro.yaml
spring:
data:
mongodb: #MongoDB相关配置
repositories:
type: auto
uri: mongodb://luntek:20100514@127.0.0.1:27017/admin #mongodb://用户名:密码@IP:端口/数据库名称
springboot整合Nacos代码
- pom依赖
<!-- 实现对 Nacos 作为配置中心的自动化配置 -->
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>0.2.4</version>
</dependency>
创建bootstrap-dev.yml及bootstrap-pro.yml配置文件
- bootstrap-dev.yml
#端口
server:
port: 8686
#文件
spring:
application:
name: cloud-platform
profiles:
active: dev
nacos:
config:
server-addr: IP-ADDR:8848 # Nacos 服务器地址
bootstrap:
enable: true # 是否开启 Nacos 配置预加载功能。默认为 false。
log-enable: true # 是否开启 Nacos 支持日志级别的加载时机。默认为 false。
data-ids: system-config.yaml,cloud-platform-dev.yaml # 使用的 Nacos 配置集的 dataId。
type: YAML # 使用的 Nacos 配置集的配置格式。默认为 PROPERTIES。
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP。
namespace: # 使用的 Nacos 的命名空间,默认为 null。
- bootstrap-pro.yml
#端口
server:
port: 8686
#文件
spring:
application:
name: cloud-platform
profiles:
active: pro
configuration:
map-underscore-to-camel-case: true
nacos:
config:
server-addr: 127.0.0.1:8848 # Nacos 服务器地址
bootstrap:
enable: true # 是否开启 Nacos 配置预加载功能。默认为 false。
log-enable: true # 是否开启 Nacos 支持日志级别的加载时机。默认为 false。
data-ids: system-config.yaml,cloud-platform-pro.yaml # 使用的 Nacos 配置集的 dataId。
type: YAML # 使用的 Nacos 配置集的配置格式。默认为 PROPERTIES。
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP。
namespace: # 使用的 Nacos 的命名空间,默认为 null。
- SystemConfig
package com.luntek.cloudplatform.config;
import com.alibaba.nacos.api.config.ConfigType;
import com.alibaba.nacos.api.config.annotation.NacosConfigurationProperties;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component;
/**
* @author Czw
* @Description 导出、解析Excel表格中文与字段名对应配置参数
* @Date 2019/5/14 0014 下午 1:17
*/
@Component
@Data
@NacosConfigurationProperties(prefix = "data", autoRefreshed = true,
type = ConfigType.YAML, dataId = "system-config.yaml")
public class SystemConfig {
private String imagePrefix;
//学生上传代码单次限制大小MB
private Integer oneSize;
//学生总共代码限制大小,单位MB
private Integer totalSize;
}
- 项目启动参数
开发环境
- 启动时将active profiles设置成dev候正常启动
正式环境
java -jar project.jar --spring.profiles.active=pro
下一篇: OpenSSL 与 证书