网站首页 > 博客文章 正文
1. 背景
在之前的Spring Cloud Gateway学习中,我们了解了网关相关配置,包括断言、过滤器等内容。在之前的文章中,我们是将这些配置,写到application.yml上,而一般情况下,我们Spring Cloud Gateway的网关配置,肯定不会是一成不变的,如果配置信息是在application.yml上,那么当我们需要添加其他的路由配置时,就先修改application.yml配置,然后重启服务,这不利于用户使用和产品的稳定。我们希望通过一个配置中心,来方便我们对这些路由信息进行统一的维护、管理。
1.1. 配置中心思路
配置中心的一般思路为:
1) 首先把项目中的各种配置全部放到一个集中的地方进行统一管理,并提供一套标准接口。
2)当各个服务需要获取配置的时候,就来配置中心的接口拉取自己的配置。
3)当配置中心中的各种参数有更新的时候,也能通知到各个服务实时同步最新的消息,使之动态更新。
当加入服务配置中心后,我们的系统架构图如下:
1.2. 常用的服务配置中心
Spring Cloud Config:官方提供的分布式系统的外部配置中心。
Nacos:阿里开源的框架,致力于发现、配置和管理微服务。Nacos提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Apollo:携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。
2. Nacos介绍和环境搭建
2.1. Nacos介绍
Nacos是阿里巴巴推出的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
Nacos的关键特性有以下几点:
1)服务发现和服务健康检测
Nacos 提供对服务的实时的健康检查,阻止向不健康的主机或服务实例发送请求。Nacos 支持传输层 (PING 或 TCP)和应用层 (如 HTTP、MySQL、用户自定义)的健康检查。 对于复杂的云环境和网络拓扑环境中(如 VPC、边缘网络等)服务的健康检查,Nacos 提供了 agent 上报模式和服务端主动检测2种健康检查模式。
2)动态配置服务
动态配置服务可以让您以中心化、外部化和动态化的方式管理所有环境的应用配置和服务配置。
动态配置消除了配置变更时重新部署应用和服务的需要,让配置管理变得更加高效和敏捷。
配置中心化管理让实现无状态服务变得更简单,让服务按需弹性扩展变得更容易。
3)动态DNS服务
动态 DNS 服务支持权重路由,从而更方便地实现中间层负载均衡、更灵活的路由策略、流量控制以及数据中心内网的简单DNS解析服务。
4)服务及其元数据管理
Nacos 能让您从微服务平台建设的视角管理数据中心的所有服务及元数据,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略、服务的 SLA 以及最首要的 metrics 统计数据。
2.2. Nacos环境搭建
进入Nacos官网:https://nacos.io
点击前往github,跳转至github下载页面,然后点击tags选择要下载的版本
下载完毕后解压到需要安装的目录
解压完毕后,进入bin目录,修改启动文件startup.cmd,将mode由"cluster"改为standalone
修改完毕后,双击startup.cmd启动Nacos服务
访问http://localhost:8848/nacos,默认的用户名和密码为"nacos"。
3. Nacos Config配置中心
3.1. 基本使用
添加Nacos config的依赖
注意,如果是在springboot2.4.x的版本之后,对于bootstrap.properties和bootstrap.yaml配置文件,需要在pom中加入依赖:
然后添加配置文件,注意,不能使用application.yml,要新建一个bootstrap.yml作为配置文件
配置文件有优先级为:
bootstrap.properties > bootstrap.yml > application.properties > application.yml
假设我们当前的配置如下:
然后我们添加一个controller用于测试,下面这个controller的hello方法,会返回helloWorld的值,这里我先设置了一个默认值为“defalut value”
当我们的hello.world在nacos上没有进行配置时,那么我们访问http://localhost:80/test/hello,结果如下图所示:
现在我进入nacos官网,新建对应的配置,如下图所示,点击左边的创建配置
然后填写dataId,group,配置类型和配置的内容,注意,这里的data id要和我们的bootstrap.yml中配置的spring.cloud.nacos.config.name保持一致(如果不配置也可以,不配置的话,默认使用application.name的名称对应的配置)
配置完毕后点击发布
发布完成后,我们再次访问http://localhost:80/test/hello
3.2. dataId
之所以配置spring.application.name或spring.cloud.nacos.config.name,是因为它是构成Nacos配置管理dataId字段的一部分。在Nacos 中,dataId完整格式如下:
${prefix}-${spring.profiles.active}.${file-extension}
prefix: 默认为spring.application.name的值,也可以通过配置项spring.cloud.nacos.config.name来配置
spring.profiles.active:当前环境对应的profile,当spring.profiles.active为空时,对应的连接符-也不存在
file-extension:配置内容的数据格式,可以通过spring.cloud.nacos.config.file-extension来配置,目前只支持properties和yaml类型
我们修改刚才的bootstrap.yaml配置文件,修改结果如下:
然后在nacos添加一个配置
然后重启应用,访问http://localhost:8080/test/hello,结果如下:
猜你喜欢
- 2024-10-01 微服务学习笔记(微服务怎么学)
- 2024-10-01 干货:SpringBoot集成Nacos,填坑篇
- 2024-10-01 记一次把Nacos做成服务并开机启动
- 2024-10-01 Nacos 配置中心与注册中心(nacos配置中心连接超时)
- 2024-10-01 小白入门必知必会-Nacos单机安装(nacos入门教程)
- 2024-10-01 windows系统 安装nacos服务注册与发现中心
- 2024-10-01 网络环境问题导致的nacos集群故障
- 2024-10-01 分布式服务限流降级熔断解决方案Nacos之Dashboard界面配置含义
- 2024-10-01 Nacos你真的理解了吗(nacos百科)
- 2024-10-01 java微服务环境配置——注册中心 配置中心Nacos
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- ifneq (61)
- 字符串长度在线 (61)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)