Spring Cloud 微服务项目实战
姚秋辰(姚半仙)
PayPal 研发经理
15862 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 38 讲
结束语 (1讲)
Spring Cloud 微服务项目实战
15
15
1.0x
00:00/00:00
登录|注册

15 | 配置中心在微服务中发挥着怎样的作用?

你好,我是姚秋辰。
在微服务架构中,我们会使用一个分布式的“配置中心”来管理所有的配置文件和配置项。相比于传统的基于文件的配置管理方式,配置中心有什么独特的功能和优势呢?今天这节课,我就带你了解 Nacos 配置中心的特性,以及这些特性在微服务体系中所发挥的作用。
在 Spring Boot 应用中,我们习惯于使用传统的配置管理方式,将各种配置项都维护在 application.yml 或 application.properties 文件中。从完成业务逻辑的角度来看,这样做是没问题的。但在微服务架构中,我们可以采取一种更“优雅”的方式组织配置文件,实现高效灵活的配置管理。
我要先带你回想一下传统的配置管理途径都有哪些,这些途径在使用上有哪些弊端。然后,我们再来了解微服务架构下的“配置中心”是如何解决这些问题的。

传统配置管理的弊端

我们通常可以采用四种途径在程序中指定配置项,它们分别是硬编码、配置文件、环境 / 启动变量、数据库动态获取,我们先来了解一下这四种配置管理方式是如何实现的。
硬编码:最简单粗暴的方式,在 Bean 初始化的上下文中,直接通过在代码中 hardcode 的方式指定配置信息;
配置文件:使用 application 和 bootstrap 配置文件来设置配置项,这是目前比较“优雅”常用的方式;
环境 / 启动变量:通过操作系统的环境变量,或者启动命令中的 -D 参数传入配置项;
数据库 / 缓存动态获取:将配置项保存在数据库里,每次执行一个 select 语句实现动态查询。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

配置中心在微服务架构中扮演着关键角色,相较于传统配置管理方式,它具有高可用性、环境隔离、多格式支持和访问控制等优势。Nacos配置中心通过集群对外提供服务,实现了配置项的动态更新和版本控制,同时支持灰度发布验证和业务规则更新等应用场景。除了管理配置文件外,配置中心还能通过动态配置实现业务开关、灰度发布验证等功能,为微服务架构提供了灵活性和高可用性。 在互联网行业,动态属性推送是开发人员最常用到的功能之一,尤其在面对频繁变动的需求时更为重要。通过巧妙利用配置中心的动态推送功能,开发人员能够将“变化的需求部分”和“不变的代码部分”隔离开来,从而更好地应对需求变化。举例来说,电商APP中的商品资源位根据不同活动场景的需求变化,可以通过配置中心的模板动态调整页面布局,避免了频繁的重新发版工作。 通过学习本文,读者可以思考动态属性推送在其他应用场景中的潜在作用,并分享自己项目中的业务场景。下一步,读者可以期待学习如何将应用程序集成到Nacos配置中心,并实现属性动态推送的场景。 总之,配置中心在微服务架构中的重要性不言而喻,而动态属性推送作为其中关键功能之一,为应对变化的需求提供了便利。这篇文章为读者提供了对配置中心和动态属性推送的深入了解,对于对Spring Cloud感兴趣的读者来说,是一篇值得分享的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Spring Cloud 微服务项目实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(9)

  • 最新
  • 精选
  • 尼古拉斯
    在K8s中,服务的注册中心和配置中心,与k8s中的service和configmap功能是不是重合的,换句话说如果用了k8s部署容器服务,注册中心和配置中心这两个组件是不是可以省略了呢,还望老师指点啊,这块一直想不通

    作者回复: 你这想的已经很通透了嘛,其实像云原生的技术栈,比如我们公司用的grpc+k8s+istio这一套,哪有啥注册中心配置中心的,k8s秀翻全场。但是国内纯云原生应用并不多,基本只是用k8s做做弹性而已

    2022-02-25
    4
    13
  • 易燃易爆闻一多
    有个疑问,同一个namespace下两个相同的server可以做负载处理。两个namespace下的同一个server 并且Name也一样。这种情况下,gateway怎么去分配呢?我做测试的时候只能到其中一个服务上。另一个服务没被调用过

    作者回复: nacos的设计原理就是限定在同一个namespace下的服务才可以相互调用的,如果同样的服务注册在不同的namespace下,那确实不会跨namespace做负载均衡

    2022-02-08
    7
  • No more
    动态配置logger级别

    作者回复: logger级别动态注入之后我记得还需要在MDC里设置一下才会生效

    2022-04-03
    5
  • 海布里王力宏
    "我来举一个例子,很多电商 APP 上都有商品资源位,根据各种活动场景的不同,这些资源位的样式和排版都会根据运营要求发生变化。大多数开发人员可能会以为这些页面排版和背景图之类的活动页面是通过代码写死的,其实不然。面对玩法花样多变的运营场景,我们会把资源位抽象成不同的模板,将模板添加到配置中心里,客户端程序根据不同模板做布局适配即可。这样一来,不管是 618、双 11 还是双 12,只需要更改配置中心的模板内容就可以更改 APP 端页面布局,省去了重新发版的工作。(当然了,APP 端要基于 H5 构建,不能基于 Native)。" 请教老师,对于大促场景,如何保证nacos高可用?解决高并发不是要做页面静态化出来,提前放到cdn缓存里面吗?

    作者回复: 没错,页面静态化也是很常用的,像阿里骨干CDN网络也有很多这种应用。即使我整页动态拼凑,但局部页面仍然可以走静态化访问,比如新的活动图我要先发布到CDN网络然后再在代码中引用

    2022-01-28
    2
  • 逝影落枫
    nacos配置中心如何支持大促活动期或两会期间的特殊封网禁用措施?

    作者回复: 两会封网一般是网络供应商的行动,和做业务的公司关系不大

    2022-01-14
    2
  • peter
    请教老师本篇的3个问题: Q1:原生安卓不能支持动态布局吗? "APP 端要基于 H5 构建,不能基于 Native",这句话怎么理解? 理解1:不能用安卓,要用H5开发APP?理解2:“安卓 + H5”混合开发,以安卓为主,H5只负责动态布局部分。 Q2:动态配置项更新,谁发起? 配置项动态更新,谁推送?nacos主动推送给应用?还是应用从nacos拉取? Q3:nacos配置版本记录信息,是示意图吗? “版本控制和审计功能”部分有一个图,图的中间是操作记录信息。时间都是晚于2022年1月份的。请问:这个图是画出的示意图,不是真实的nacos记录信息,对吗?

    作者回复: Q1可以采用混合的方式,不过现在安卓端的趋势是逐渐H5化,native日渐式微,如果用手机原生的页面分析功能看淘系app,会发现大部分活动页已经没有native的身影了 Q2: client注册的时候会监听文件,一旦nacos文件内容变化,client就收到更新事件 Q3是示意图

    2022-01-14
    2
  • peter
    请教老师一个nacos注册问题(专栏10篇): 我是在win10系统下安装、运行两个nacos的,碰到两个问题: 问题1:管理界面中显示3个节点。 两个nacos都用startup启动(应该是集群模式),“节点列表”中显示有3个节点。 详细信息如下: A 本机IP配置情况 用ipconfig查询, 结果如下: WLAN:192.168.0.11; 以太网:192.168.0.5 以太网适配器 VirtualBox Host-Only Network:192.168.56.1 B 启动nacos前配置cluster.conf 在两个nacos的cluster.conf中都配置如下信息: 192.168.0.5:8848 192.168.0.5:8948 C 管理界面中显示3个节点,同时cluster.conf被修改 两个nacos启动成功后,nacos1(port:8848),其管理界面的“节点列表”下面有3个节点, 192.168.0.5:8848 192.168.0.5:8948 192.168.56.1:8848 同时,nacos1的cluster.conf中也添加了192.168.56.1:8848 nacos2(port:8948),其管理界面的“节点列表”下面有3个节点, 192.168.0.5:8848 192.168.0.5:8948 192.168.56.1:8948 同时,nacos2的cluster.conf中也添加了192.168.56.1:8948 问题2:calculation模块不能注册 calculation模块启动后报错,不能注册: NacosException: failed to req API:/nacos/v1/ns/instance after all servers([localhost:8848]) tried: ErrCode:400 但template模块能正常注册。 注意:用standaloine模式启动后没有问题 nacos1用 startup -m standalone启动后,template和calculation都能注册。

    作者回复: 看现象应该是集群的IP list填写有误,如果集群启动的时候发现当前节点的地址不在cluster列表中,会尝试将自己放到cluster列表中。我猜想192.168.56.1:8948这个节点是自动添加进去的,所以同学看一下你真实的本地网络地址是哪个,另外在看下“节点列表”里三个节点的状态是什么

    2022-01-14
    3
    2
  • javaadu
    我在使用配置中心的场景: 新老功能切换开关 经常变化的配置信息,但是暂时没资源做成产品 业务降级开关 消息通知 体会:配置中心需要控制下使用情况,不可滥用,否则一个几年的应用里挂一两百个开关,维护成本极高

    作者回复: 经常见到那种几百行的开关,谁都不敢动,然后一帮人就原地开始造新轮子了

    2022-07-26归属地:上海
    1
  • 现在市面上配置中心的功能 大部分都同质化了,比如 apollo 也有上面的功能。 nocos 的商业版的新增的推送日志 特性还是很好的
    2022-07-23
    3
收起评论
显示
设置
留言
9
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部